999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于存儲(chǔ)過(guò)程的動(dòng)態(tài)報(bào)表實(shí)現(xiàn)技術(shù)的研究與應(yīng)用

2013-04-12 00:00:00隋東,趙永剛,孫霞,于正利
教育教學(xué)論壇 2013年25期

摘要:本文介紹了VB.NET中調(diào)用存儲(chǔ)過(guò)程,使用多種工具進(jìn)行多種形式報(bào)表開(kāi)發(fā)的基本方法。

關(guān)鍵詞:存儲(chǔ)過(guò)程;動(dòng)態(tài)報(bào)表;VB.NET?搖ReportViewer?搖Crystal Reports

中圖分類(lèi)號(hào):G250.74?搖 文獻(xiàn)標(biāo)志碼:A ?搖文章編號(hào):1674-9324(2013)25-0240-03

一、存儲(chǔ)過(guò)程概述

存儲(chǔ)過(guò)程是在數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中。客戶端使用時(shí)只要通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)即可調(diào)用它,因此大大減少了網(wǎng)絡(luò)上數(shù)據(jù)的傳輸量。用戶可以獨(dú)立于應(yīng)用程序而對(duì)存儲(chǔ)過(guò)程進(jìn)行修改,增加了數(shù)據(jù)庫(kù)應(yīng)用程序的易修改特征。存儲(chǔ)過(guò)程實(shí)質(zhì)上是批處理,它可以包含幾乎所有的T-SQL語(yǔ)句,如數(shù)據(jù)操縱和查詢語(yǔ)句、流程控制語(yǔ)句、錯(cuò)誤處理語(yǔ)句等,靈活性很大。存儲(chǔ)過(guò)程中也可以使用事務(wù),實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)功能的任意組合和重用。

通過(guò)存儲(chǔ)過(guò)程觸發(fā)器可以使相關(guān)的動(dòng)作在一起發(fā)生,從而維護(hù)數(shù)據(jù)庫(kù)的完整性;對(duì)于某些關(guān)鍵數(shù)據(jù),可以設(shè)置成只通過(guò)存儲(chǔ)過(guò)程來(lái)訪問(wèn),從而保證數(shù)據(jù)的安全性;存儲(chǔ)過(guò)程在創(chuàng)建時(shí)就經(jīng)過(guò)了語(yǔ)法檢查和性能優(yōu)化,這種已經(jīng)編譯好的過(guò)程可極大地改善SQL語(yǔ)句的性能,因而存儲(chǔ)過(guò)程能以極快的速度執(zhí)行。

二、調(diào)用存儲(chǔ)過(guò)程創(chuàng)建多種形式的動(dòng)態(tài)報(bào)表的實(shí)現(xiàn)

ADO.NET對(duì)象是前臺(tái)訪問(wèn)數(shù)據(jù)庫(kù)的通道,要實(shí)施代碼訪問(wèn),必須先定義各個(gè)數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,然后再與功能需要聯(lián)系起來(lái)。報(bào)表是大多數(shù)應(yīng)用系統(tǒng)的典型輸出形式之一,根據(jù)用戶對(duì)報(bào)表輸出的需求,可以通過(guò)創(chuàng)建使用現(xiàn)有存儲(chǔ)過(guò)程的數(shù)據(jù)適配器填充數(shù)據(jù)集,生成相應(yīng)的查詢結(jié)果集,或者用Sqldatareader對(duì)象在保持和數(shù)據(jù)庫(kù)連接的狀態(tài)下,調(diào)用存儲(chǔ)過(guò)程,傳遞客戶端參數(shù),生成相應(yīng)的查詢結(jié)果集,并填充到所創(chuàng)建的報(bào)表中去。以下通過(guò)三個(gè)實(shí)例,使用三種方式設(shè)計(jì)、開(kāi)發(fā)三種報(bào)表形式。

(一)Visual Studio2005報(bào)表ReportViewer

ReportViewer控件是Visual Studio2005中負(fù)責(zé)解釋RDLC報(bào)表定義、處理報(bào)表參數(shù)并按照各種用戶可選格式提供報(bào)表的處理器。它既可以運(yùn)行于“本地模式”也可以運(yùn)行于“遠(yuǎn)程模式”。由用戶編寫(xiě)的存儲(chǔ)過(guò)程負(fù)責(zé)管理連接或運(yùn)行基于參數(shù)的查詢;報(bào)表只駐留以報(bào)表為中心的Parameters集合,尋址遠(yuǎn)程報(bào)表服務(wù)并呈現(xiàn)它。

以sales數(shù)據(jù)庫(kù)為例,要求根據(jù)傳遞的供貨商ID參數(shù),能夠“按供貨商查詢庫(kù)存情況”輸出報(bào)表,顯示該供貨商所提供的產(chǎn)品名、庫(kù)存量、預(yù)訂量和占用資金額。為實(shí)現(xiàn)該報(bào)表功能,需要給工程添加一個(gè)報(bào)表輸出所依附的窗體form2,創(chuàng)建一個(gè)實(shí)現(xiàn)上述查詢功能的存儲(chǔ)過(guò)程ProductBysupplies,并將該存儲(chǔ)過(guò)程添加、配置到數(shù)據(jù)集中去,用來(lái)構(gòu)建系統(tǒng)報(bào)表report1.rdlc。

主窗體中用來(lái)觸發(fā)報(bào)表輸出功能的打印按鈕的Click()事件設(shè)計(jì)如下:

Private Sub Button4_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button4.Click Me.ProductBysuppliesTableAdapter.Fill(Me.SalesDs.ProductBysupplies,CInt(Me.ComboBox3.Text.ToString))

Form2.Show()

Form2.ReportViewer1.RefreshReport()

End Sub

在form2窗體的Load事件中,要傳遞從供貨商ID參數(shù),并刷新報(bào)表,其Load ()事件設(shè)計(jì)如下:

Private Sub Form2_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load Me.ProductBysuppliesTableAdapter.Fill(Me.salesDs.ProductBysupplies,CInt(Form1.ComboBox3.Text))

Me.ReportViewer1.RefreshReport()

End Sub

最后生成的報(bào)表效果如圖1所示:

(二)水晶報(bào)表Crystal Reports

水晶報(bào)表工具為微軟Visual Studio.NET的標(biāo)準(zhǔn)報(bào)表創(chuàng)建工具,并把集成于開(kāi)發(fā)環(huán)境當(dāng)中。水晶報(bào)表的組件、方法非常豐富,涵蓋了數(shù)據(jù)庫(kù)操作、格式設(shè)計(jì)、打印、文件轉(zhuǎn)換等多種功能,并提供了針對(duì)各種對(duì)象的方法。水晶報(bào)表支持自定義模板,還能與其他控件進(jìn)行交互。用戶可以通過(guò)單擊按鈕或從組合框中選擇條件來(lái)篩選信息下面就使用水晶報(bào)表工具來(lái)設(shè)計(jì)實(shí)現(xiàn)按供貨商查詢產(chǎn)品庫(kù)存情況的統(tǒng)計(jì)圖表。

調(diào)用存儲(chǔ)過(guò)程,創(chuàng)建水晶報(bào)表,可以按照向?qū)У奶崾荆徊讲饺?chuàng)建。在使用向?qū)?chuàng)建新水晶報(bào)表過(guò)程中,要注意的是:在“標(biāo)準(zhǔn)報(bào)表創(chuàng)建向?qū)А钡倪x擇要報(bào)告的數(shù)據(jù)對(duì)話框中,要展開(kāi)“創(chuàng)建新數(shù)據(jù)源”→“Ole DB(ADO)”,在下一步的窗體里選擇“...For SQLserver”提供程序,按照向?qū)У奶崾疽徊讲酵瓿稍O(shè)置即可。運(yùn)行后效果圖如圖2所示。

(三)利用Word和Excel輸出報(bào)表

借助Excel和Word工具,能夠間接生成各種比較復(fù)雜的統(tǒng)計(jì)圖表,其原理是通過(guò)創(chuàng)建存儲(chǔ)過(guò)程,調(diào)用并傳遞參數(shù),將數(shù)據(jù)庫(kù)中不同數(shù)據(jù)表中所需要的相關(guān)字段抽取、組合起來(lái),生成所需要的數(shù)據(jù)表,再借助Word和Excel中錄制的宏的VBA的代碼,提供幫助,利用循環(huán)嵌套控制語(yǔ)句在Vb.net2005里生成對(duì)應(yīng)的Word和Excel表格,也可以二次生成復(fù)雜的統(tǒng)計(jì)圖表,開(kāi)發(fā)的報(bào)表具有二次編輯功能,最終用戶可以進(jìn)行再加工,最大限度地滿足用戶需求。本文僅以輸出Word報(bào)表為例。

數(shù)據(jù)的來(lái)源基于對(duì)存儲(chǔ)過(guò)程的調(diào)用,是可變數(shù)據(jù)源,因此生成的報(bào)表是動(dòng)態(tài)報(bào)表。窗體設(shè)計(jì)如圖3所示:

首先要將Option Strict狀態(tài)置為Off,其次要往工程中添加兩個(gè)COM組件的引用:Microsoft Word 11.0 Object Library和Microsoft Excel 11.0 Object Library。

“輸出Word報(bào)表”按鈕的Click事件代碼如下:

Private Sub Button14_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button14.Click

?搖?搖Dim wApp As New Word.Application

?搖?搖Dim wd As Word.Document

?搖?搖Dim wtb As Word.Table

?搖?搖Dim rIndex,cIndex As Integer

?搖?搖rIndex = 1

?搖?搖cIndex = 0

?搖?搖wApp.Documents.Add()

?搖?搖wd = wApp.ActiveDocument

?搖?搖Dim Table As New DataTable

?搖?搖Cmd.CommandType = CommandType.StoredProcedure

?搖?搖Cmd.CommandText = “Productbysupplies”

?搖?搖Cmd.Parameters.Clear()

?搖?搖Cmd.Parameters.AddWithValue(“@Id”,Me.ComboBox3.Text.ToString)

?搖?搖Cn.Open()

?搖?搖Dr = Cmd.ExecuteReader

?搖?搖Dt2.Load(Dr)

?搖?搖Dr.Close()

?搖?搖Cn.Close()

?搖?搖Table = Dt2

?搖?搖wtb = wd.Tables.Add(Range:=wd.Range(Start:=0,End:=0),NumRows:=Table.Rows.Count + 1,NumColumns:=Table.Columns.Count)

?搖?搖Dim Col As DataColumn

?搖?搖Dim Row As DataRow

?搖?搖For Each Col In Table.Columns

?搖?搖cIndex = cIndex + 1

?搖?搖wtb.Cell(1,cIndex).Range.InsertAfter(Col.ColumnName)

?搖?搖Next

?搖?搖For Each Row In Table.Rows

?搖?搖rIndex = rIndex + 1

?搖?搖cIndex = 0

?搖?搖For Each Col In Table.Columns

?搖?搖?搖cIndex = cIndex + 1

?搖?搖?搖wtb.Cell(rIndex,cIndex).Range.InsertAfter(Row(Col.ColumnName))

?搖?搖?搖Next

?搖?搖Next

?搖?搖wtb.Borders.InsideLineStyle = 1

?搖?搖wtb.Borders.OutsideLineStyle = 1

?搖?搖wApp.Visible = True

End Sub

調(diào)用存儲(chǔ)過(guò)程,生成Word格式報(bào)表,如圖4所示:

三、結(jié)語(yǔ)

本文用三個(gè)實(shí)例介紹了如何動(dòng)態(tài)調(diào)用存儲(chǔ)過(guò)程,傳遞參數(shù),構(gòu)建數(shù)據(jù)集,創(chuàng)建多種形式報(bào)表的技術(shù),并以VB.NET做前臺(tái),SQL Server做后臺(tái)的模式給了出具體的實(shí)現(xiàn)代碼。

參考文獻(xiàn):

[1]劉世峰.數(shù)據(jù)庫(kù)應(yīng)用技術(shù)[M].北京:中央廣播電視大學(xué)出版,2008.

[2]龔沛曾.Visual Basic.NET程序設(shè)計(jì)教程[M].北京:高等教育出版社,2007.

作者簡(jiǎn)介:隋東(1967-),男,碩士,講師,研究方向:數(shù)據(jù)庫(kù)應(yīng)用技術(shù)。

主站蜘蛛池模板: 国产肉感大码AV无码| 国产精品亚洲精品爽爽| 亚洲综合婷婷激情| 黄色网页在线播放| 最新加勒比隔壁人妻| 国产网友愉拍精品视频| 伊人网址在线| 国产在线观看人成激情视频| 人妻21p大胆| 91福利片| 无码中文字幕乱码免费2| 欧美中文字幕在线播放| 国产黑丝视频在线观看| 国产日产欧美精品| 欧美不卡二区| 欧美日韩动态图| 国产精品免费露脸视频| 伦伦影院精品一区| 色有码无码视频| 国产丝袜91| 精品国产欧美精品v| 无码又爽又刺激的高潮视频| 久久久久国产精品熟女影院| 亚洲精品无码人妻无码| 狠狠色成人综合首页| 久久久成年黄色视频| 中文字幕一区二区视频| 国模视频一区二区| 毛片视频网| 色妺妺在线视频喷水| 中国成人在线视频| 亚洲性一区| 欧美成人手机在线观看网址| 午夜啪啪福利| 国产乱人乱偷精品视频a人人澡| 国产精品yjizz视频网一二区| 性色一区| 999福利激情视频| 新SSS无码手机在线观看| 亚洲黄色片免费看| 青青青国产精品国产精品美女| www.亚洲国产| 午夜啪啪网| a毛片基地免费大全| 国产在线欧美| 欧美天堂久久| 日本人又色又爽的视频| 五月婷婷丁香综合| 狠狠亚洲五月天| 青草国产在线视频| 色国产视频| 成人一区在线| 色国产视频| 亚洲一区黄色| 精品亚洲国产成人AV| 久久精品66| 日韩a级毛片| 青青草原国产免费av观看| 国产黄色爱视频| 久久永久精品免费视频| 免费在线不卡视频| 国内精品自在自线视频香蕉| 精品福利视频导航| 国产xxxxx免费视频| 中国一级特黄视频| 亚洲综合一区国产精品| 无码精品国产dvd在线观看9久| 成人在线亚洲| 亚洲国产日韩欧美在线| 五月婷婷欧美| 无码精油按摩潮喷在线播放| 国产一区二区免费播放| 色综合久久久久8天国| 夜夜操国产| 久久精品国产国语对白| 婷婷综合在线观看丁香| 国产毛片网站| 日韩天堂视频| 狠狠色婷婷丁香综合久久韩国| 欧美黑人欧美精品刺激| 91探花在线观看国产最新| 久久精品午夜视频|