Visual_Basic報表設(shè)計.ppt_第1頁
Visual_Basic報表設(shè)計.ppt_第2頁
Visual_Basic報表設(shè)計.ppt_第3頁
Visual_Basic報表設(shè)計.ppt_第4頁
Visual_Basic報表設(shè)計.ppt_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第7章 Visual Basic,本章學習要點 了解數(shù)據(jù)報表設(shè)計器的作用、特性和結(jié)構(gòu) 掌握報表控件的應用方法 掌握報表設(shè)計的方法 掌握分組報表的設(shè)計方法 掌握動態(tài)報表的設(shè)計方法,數(shù)據(jù)報表設(shè)計器特性,對字段的拖放功能 Toolbox控件 打印預覽 打印報表 文件導出 導出模板 異步操作,添加數(shù)據(jù)報表設(shè)計器到工程,訪問數(shù)據(jù)報表設(shè)計器前,必須先在 Visual Basic 中引用它,單擊“工程部件”菜單項,彈出“部件”對話框,選擇“設(shè)計器”選項卡(如圖所示)中選中“Data Report”對象,然后單擊“應用”按鈕,此時,數(shù)據(jù)報表設(shè)計器添加到工程中,數(shù)據(jù)報表設(shè)計器的結(jié)構(gòu),報表設(shè)計器的基本結(jié)構(gòu) : D

2、ataReport 對象 、Section 對象 和 DataReport 控件,Section 對象的結(jié)構(gòu),報表標頭 頁標頭 分組標頭/注腳 細節(jié) 頁注腳 報表注腳,特殊控件的含義,報表控件,數(shù)據(jù)報表控件工具箱中的控件有: Label 控件(RptLabel)、 TextBox 控件(RptTextBox)、 Image 控件(RptImage)、 Line 控件(RptLine)、 Shape 控件(RptShape)、 Function 控件(RptFunction)。,要向數(shù)據(jù)報表添一個 Function 控件,按如下步驟執(zhí)行: (1)在“數(shù)據(jù)報表工具箱”里單擊 RptFunction

3、 控件; (2)在“分組注腳”的空間繪制 RptFunction 控件; (3)設(shè)置 RptFunction 控件的常用屬性,各屬性含義如表:,(4)控件的“FunctionType”屬性決定將對“數(shù)據(jù)字段”中的數(shù)據(jù)進行什么操作。缺省情況下,這一屬性設(shè)置為0-RptFuncSum,以合計數(shù)據(jù)的值。其它函數(shù)包括:Average、Minimum、Maximum、Row Count、STDDev (標準偏差)和 Value Count。Function控件包含的函數(shù)如表:,FunctionType屬性取值,報表“安全檢查情況一覽表”(DataReport4)的數(shù)據(jù)源是Command6對象,展開后如圖

4、所示。在圖中,Command6對象中的字段都是以漢字的形式顯示出來,并不是數(shù)據(jù)表(jcxx)的字段名。,這是因為為了方便下一步的報表設(shè)計將它們的屬性進行了修改,方法是通過依次選中各字段,單擊鼠標右鍵,出現(xiàn)“屬性”菜單項,單擊“屬性”菜單項,彈出的“字段 屬性”對話框內(nèi),在“通用”選項卡內(nèi)修改了屬性“字段標題”,如圖。依次修改各個字段標題,為設(shè)計報表做準備。,要創(chuàng)建一個新的數(shù)據(jù)報表,按如下步驟執(zhí)行:(1)單擊“工程添加 Data Report”菜單項,Visual Basic 將把它添加到當前工程中。如果數(shù)據(jù)報表設(shè)計器不在“工程”菜單上,單擊“部件”菜單項,在“設(shè)計器”選項卡上單擊“Data R

5、eport”把設(shè)計器添加到菜單上。(2)設(shè)置 DataReport 對象的屬性,如圖所示,設(shè)置屬性后的報表對象DataReport4如圖。,(3)在數(shù)據(jù)報表設(shè)計器的空白處單擊鼠標右鍵,從彈出的菜單項中選擇“檢索結(jié)構(gòu)”命令,彈出對話框如圖所示。 (4)單擊“是”按鈕,更新了報表布局,如圖所示。,創(chuàng)建了報表對象DataReport4后,要進行其中控件的設(shè)計,設(shè)計步驟如下:(1)將數(shù)據(jù)環(huán)境對象DataEnvironment1的Command6對象中的各個字段依次拖曳到細節(jié)(Command6_Detail)中,如圖。每拖曳一個字段到報表中都同時產(chǎn)生一個Label控件和一個TextBox控件。,(2)上

6、圖的報表不能以表格的形式顯示出來,需要進行修改。將所有的Label控件都拖曳到頁標頭(PageHeader)中,然后將Label控件和TextBox控件的位置按要求排列,如圖所示。,(3)利用rptLine控件為表格添加線條,使報表以表格的形式顯示。在各個Label控件和TextBox控件之間畫上線條。 (4)在DataReport4的報表標頭(ReportHeader)放置一個Label控件,將其Caption屬性設(shè)為“安全檢查情況一覽表”;然后單擊Font屬性的“”,在彈出的“字體”對話框里可以對字體、字形、大小和效果等進行設(shè)置;設(shè)置Alignment為2rptJustifyCenter,

7、使標題居中。 (5)在DataReport4的報表標頭(ReportHeader)還可以放置打印日期和時間,方法是:拖曳一個Label控件到報表標頭的右下側(cè),將其Caption屬性設(shè)為“打印時間:D”;然后再拖曳一個Label控件到前一個Label控件的旁邊,將其Caption屬性設(shè)為“T”,然后調(diào)整兩個Label控件的位置和字體屬性。,(6)在頁注腳(PageHeader)中可以放置頁碼,方法是:依次拖曳兩個Label控件到頁注腳的右下側(cè),分別設(shè)置它們的Caption屬性為“共P頁”和“第p頁”,然后再調(diào)整兩個Label控件的位置和字體屬性。按上述步驟設(shè)置完成的DataReport4報表如圖

8、。,創(chuàng)建Command對象,分組報表DataReport10連接的數(shù)據(jù)源是Command4對象,創(chuàng)建的方法如下: (1)在工程中打開數(shù)據(jù)環(huán)境對象DataEnvironment1,在Connection1對象里添加命令對象Command4; (2)設(shè)置Command4對象的通用屬性,如圖所示。,(3)設(shè)置Command4對象的分組字段“jshzhch”,其它字段為細節(jié)字段,如圖所示。,設(shè)置完屬性的Command4對象在數(shù)據(jù)環(huán)境對象中的形式如圖所示。,創(chuàng)建了Command4對象,接著創(chuàng)建數(shù)據(jù)報表對象,步驟如下: (1)單擊“工程添加 Data Report”菜單項,Visual Basic 將把它

9、添加到當前工程中。 (2)設(shè)置 DataReport 對象的屬性,如表所示:,設(shè)置屬性后的報表對象DataReport10如圖。,(3)在數(shù)據(jù)報表設(shè)計器的空白處單擊鼠標右鍵,從彈出的菜單項中選擇“檢索結(jié)構(gòu)”命令,彈出對話框如圖所示。,(4)單擊“是”按鈕,更新了報表布局,如圖。,創(chuàng)建了報表對象DataReport10后,要進行其中控件的設(shè)計,設(shè)計步驟如下:(1)將數(shù)據(jù)環(huán)境對象DataEnvironment1中 “摘要字段在Command4_分組”下的“jshzhch”字段拖曳到數(shù)據(jù)報表對象DataReport10中的“分組標頭”里,同時產(chǎn)生一個Label控件和一個TextBox控件。將Labe

10、l控件拖曳到數(shù)據(jù)報表對象DataReport10中的“頁標頭”里,將Label控件的Caption設(shè)置為“技術(shù)職稱”,根據(jù)需要設(shè)置Font屬性,如圖,(2)將“細節(jié)字段在Command4”中需在報表DataReport10里顯示的字段依次拖曳到數(shù)據(jù)報表對象DataReport10中的“細節(jié)”里。每個字段同樣生成一個Label控件和一個TextBox控件,將Label控件拖曳到數(shù)據(jù)報表對象DataReport10中的“分組標頭”里,設(shè)置它們的Caption屬性。然后將Label控件和TextBox控件的位置按要求排列,如圖。,(3)在“數(shù)據(jù)報表工具箱”里拖曳一個rptShape控件到報表Data

11、Report10的“細節(jié)”中,調(diào)整位置包圍所有的TextBox控件。利用rptLine控在每個TextBox控件之間畫上線。 (4)在DataReport10的“報表標頭”(ReportHeader)放置一個Label控件,將其Caption屬性設(shè)為“人員信息一覽表”;然后單擊Font屬性的“”,在彈出的“字體”對話框里可以對字體、字形、大小和效果等進行設(shè)置;設(shè)置Alignment為2rptJustifyCenter,使標題居中,如圖,(5)在DataReport10的“報表標頭”(ReportHeader)還可以放置打印日期和時間,圖見下頁。設(shè)置方法是:拖曳一個Label控件到報表標頭的右下

12、側(cè),將其Caption屬性設(shè)為“打印時間:”;然后單擊報表標頭的空白處,彈出菜單項,如圖 所示,單擊“插入控件當前日期(D)(短格式)”,此時在報表標頭里自動生成一個Label控件,其Caption屬性默認為“%d”,用來顯示當前系統(tǒng)日期;再單擊“插入控件當前時間(M)(短格式)”,此時在報表標頭里又生成一個Label控件,其Caption屬性默認為“%t”,用來顯示當前系統(tǒng)時間;調(diào)整三個Label控件的位置和Font屬性。,(6)在“分組注腳”中可以顯示每組的總記錄數(shù),方法是:選擇“數(shù)據(jù)報表工具箱”,單擊rptFunction控件,將其放置在報表分組注腳中的右側(cè),將其FunctionType

13、的屬性設(shè)置為:4rptFuncRCnt。然后再添加兩個rptLabel控件,分別設(shè)置它們的Caption屬性為:“該組共計”和“條記錄”,如圖所示。,(7)單擊頁注腳的空白處,在彈出的菜單項里單擊“插入控件當前頁碼”命令,此時在頁注腳里自動生成一個Label控件,其Caption屬性默認為“%p”,用來顯示當前頁碼。 (8)在“報表注腳”中可以顯示所有數(shù)據(jù)的總記錄數(shù),方法是:選擇“數(shù)據(jù)報表工具箱”,單擊rptFunction控件,將其放置在報表報表注腳中的右側(cè),將其FunctionType的屬性設(shè)置為:4rptFuncRCnt。然后再添加兩個rptLabel控件,分別設(shè)置它們的Caption屬

14、性為:“總計”和“條記錄”。根據(jù)需要還可添加“總頁碼”控件,在彈出的菜單項里單擊“插入控件總頁碼”命令,此時在報表注腳里自動生成一個Label控件,其Caption屬性默認為“%P”,用來顯示報表的總頁碼。如圖,按上述步驟設(shè)置完成的DataReport10報表如圖所示。,為了使代碼簡捷,將聲明Connection對象和RecordSet對象的語句都放在系統(tǒng)的模塊對象“Module2”中,執(zhí)行方法如下。1添加ADO對象 如果系統(tǒng)中沒有ADO對象,就單擊“工程引用”菜單項,在彈出的對話框中選中ADO對象庫“Microsoft ActiveX Data Objects 2.0 Library”,就可

15、以在程序中直接聲明或創(chuàng)建ADO對象,如圖。,2創(chuàng)建模塊對象 單擊“工程添加模塊”菜單項,在工程中創(chuàng)建了模塊對象,定義其名稱為“Module2”。 3、聲明Connection和RecordSet對象 雙擊“Module2”對象,彈出代碼窗口,在代碼中聲明兩個共有變量:Connection對象“db”和RecordSet對象“rs”,如圖。,創(chuàng)建Connection對象,由于在登錄窗口中就開始連接數(shù)據(jù)庫,所以在登錄窗口frmLogin1的Load事件里創(chuàng)建Connection對象,如圖所示,創(chuàng)建RecordSet對象,在“企業(yè)資質(zhì)管理系統(tǒng)”中的通用查詢窗口中,每次查詢完都允許用戶單擊工具欄的“打

16、印預覽”或“打印”按鈕打印當前的數(shù)據(jù)。例如查詢“技術(shù)職稱”為“工程師”的那些人員后,只打印查詢結(jié)果中的數(shù)據(jù),如圖。,此時報表DataRepot10的數(shù)據(jù)源發(fā)生了變化,盡管報表格式不變,但打印的數(shù)據(jù)應該發(fā)生變化,所以DataRepot10對應的數(shù)據(jù)源“rs”要根據(jù)查詢的結(jié)果改變。在查詢窗體的“查詢”按鈕里編寫Click事件,根據(jù)查詢的結(jié)果改變“rs”對應的記錄集,代碼如下: Private Sub cmdApply_Click() Dim ls_sql1 As String Dim ls_sql2 As String On Error GoTo err2 Set frs = New Record

17、set,f rs.Open select * from cxb, db, adOpenStatic, adLockOptimistic If frs.RecordCount = 0 Then Exit Sub End If frs.MoveFirst For i = 1 To frs.RecordCount ls_sql1 = ls_sql1 & & frs.Fields(www) frs.MoveNext Next frs.Close Set frs = Nothing,If Right(ls_sql1, 2) = nd Then ls_sql1 = Left(ls_sql1, Len(ls

18、_sql1) - 3) Else ls_sql1 = Left(ls_sql1, Len(ls_sql1) - 2) End If Select Case selclick Case 1 ls_sql2 = select * from qyjbxx where Case 2 ls_sql2 = select * from ryxx where Case 3,ls_sql2 = select * from sbxx where Case 4 ls_sql2 = select * from sg where Case 5 ls_sql2 = select * from jcxx where End

19、 Select gsql = where & & ls_sql1 ls_sql2 = ls_sql2 & & ls_sql1 gsql1 = & ls_sql1,Set rs = New Recordset 根據(jù)查詢結(jié)果,打開記錄集 rs.Open ls_sql2, db, adOpenKeyset, adLockOptimistic, adCmdText rs.Requery 將查詢結(jié)果顯示在DataGrid1中,此時rs對應查詢結(jié)果記錄集 Set Form11.DataGrid1.DataSource = rs gridc Form11.StBar1.Panels.Item(2) = 共查

20、詢出 & rs.RecordCount & 條記錄 Exit Sub err2: MsgBox 錯誤,請輸入合法數(shù)值! & Err.Description, , 查詢錯誤 End Sub,報表控件的數(shù)據(jù)綁定,直接把數(shù)據(jù)報表(DataReport)綁定到一個記錄集對象中,應該把數(shù)據(jù)報表的DataSource屬性設(shè)置為記錄集對象,然后綁定報表中的TextBox控件的對應字段名稱。操作步驟如下:1創(chuàng)建報表的數(shù)據(jù)源我們在曾設(shè)計的報表對象DataReport10中定義它的數(shù)據(jù)源。方法是雙擊報表的空白處,彈出代碼編寫對話框,選擇DataReport10的Initialize事件,設(shè)置它的DataSourc

21、e屬性為“rs”,如圖。,2設(shè)置報表的文本框控件屬性 打開報表設(shè)計器,在DataReport10的細節(jié)中有多個文本框控件,依次選中每個文本框控件,在DataField屬性中,單擊“ ”按鈕,會自動列出當前記錄集的所有字段名,選擇對應的字段名稱進行設(shè)置。至此運行時把ADO記錄集對象“rs”中的記錄綁定到數(shù)據(jù)報表就全部完成了,報表對象可以隨查詢結(jié)果自動更新數(shù)據(jù)。,報表的打印預覽,通常經(jīng)過初步設(shè)計的報表不能完全滿足應用程序的需要,需要在經(jīng)過打印預覽之后,反復調(diào)整報表對象中各個控件的設(shè)置,最終達到用戶的要求。VisualBasic中報表打印預覽的方式有兩種:使用DataReport對象的Show方法和

22、設(shè)置DataReport對象為啟動對象。,1使用DataReport對象的Show方法實現(xiàn)打印預覽 Show方法是用來打印預覽當前的DataReport對象,其語法是:DataReport.Show 在前面曾創(chuàng)建了數(shù)據(jù)報表對象DataReport10,怎么實現(xiàn)它的打印預覽功能呢?打開主窗體Form11,單擊菜單“分組報表打印”的子菜單項“按人員技術(shù)職稱分組統(tǒng)計”,彈出代碼窗口,對象名:ryzc,編輯它的Click事件,如圖所示。,完成了上述代碼編寫后,運行窗體,單擊菜單“分組報表打印”的子菜單項“按人員技術(shù)職稱分組統(tǒng)計”就可以預覽報表對象DataReport10,如圖所示。,2設(shè)置DataReport對象為啟動對象 如果想在程序執(zhí)行時直接顯示DataReport對象,而不經(jīng)過菜單或窗體的調(diào)用,可以將數(shù)據(jù)報表設(shè)置為工程的啟動對象,方法是:單擊“工程工程1屬性”菜單項,彈出“工程1工程屬性”對話框,選擇“通用”選項卡,將其中的啟動對象設(shè)置為要預覽的報表對象名稱,如下頁圖所示。設(shè)置完報表Da

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論