《數(shù)據(jù)庫(kù)技術(shù)》PPT課件.ppt
第十一章VisualBasic與數(shù)據(jù)庫(kù),11.1數(shù)據(jù)庫(kù)概念11.2數(shù)據(jù)庫(kù)管理器11.3ADO數(shù)據(jù)控件11.4記錄集對(duì)象*11.5結(jié)構(gòu)化查詢語言(SQL)*11.6報(bào)表制作,11.1數(shù)據(jù)庫(kù)概念,數(shù)據(jù)庫(kù)就是一組排列成易于處理和讀取的相關(guān)信息的集合。關(guān)系模型已經(jīng)成為數(shù)據(jù)庫(kù)設(shè)計(jì)事實(shí)上的標(biāo)準(zhǔn)。,關(guān)系型數(shù)據(jù)庫(kù)模型,一個(gè)數(shù)據(jù)庫(kù)可以由多個(gè)表組成,表與表之間可以用不同的方式相互關(guān)聯(lián)。若第一個(gè)表中的一條記錄內(nèi)容與第二個(gè)表中多條記錄的數(shù)據(jù)相符,但第二個(gè)表中的一條記錄只能與第一個(gè)表的一條記錄的數(shù)據(jù)相符,這樣的表間關(guān)系類型叫做一對(duì)多關(guān)系。,若第一個(gè)表的一條記錄的數(shù)據(jù)內(nèi)容可與第二個(gè)表的多條記錄的數(shù)據(jù)相符,反之亦然,這樣的表間關(guān)系類型叫做多對(duì)多關(guān)系。,一對(duì)多關(guān)系,可以將一個(gè)或幾個(gè)表中的數(shù)據(jù)構(gòu)成記錄集Recordset對(duì)象,記錄集也由行和列構(gòu)成,它與表類似。,在VB中數(shù)據(jù)庫(kù)內(nèi)的表格不允許直接訪問,而只能通過記錄集對(duì)象進(jìn)行記錄的操作和瀏覽,因此,記錄集是一種瀏覽數(shù)據(jù)庫(kù)的工具。,11.2數(shù)據(jù)庫(kù)管理器,VB的數(shù)據(jù)庫(kù)管理器(Visdata.exe)可用于管理數(shù)據(jù)庫(kù)。在VB開發(fā)環(huán)境內(nèi)單擊外接程序菜單中的可視化數(shù)據(jù)管理器命令可打開可視數(shù)據(jù)管理器。,數(shù)據(jù)庫(kù)管理器使用小結(jié):1建立新表:鼠標(biāo)右鍵單擊數(shù)據(jù)庫(kù)窗口,彈出菜單,選擇對(duì)應(yīng)命令。2打開、刪除表,修改表結(jié)構(gòu)和建立表間的關(guān)聯(lián)等操作:右鍵單擊數(shù)據(jù)庫(kù)窗口內(nèi)的表名,彈出菜單,選擇對(duì)應(yīng)命令。3編輯記錄:雙擊表名,打開表格輸入窗,編輯、增刪記錄。,建立Student.mdb數(shù)據(jù)庫(kù),所含學(xué)生基本情況表結(jié)構(gòu)如下:,11.3ADO數(shù)據(jù)控件,ADO是Microsoft處理數(shù)據(jù)庫(kù)信息的最新技術(shù),它是一種ActiveX對(duì)象,采用了被稱為OLEDB的數(shù)據(jù)訪問模式。它是數(shù)據(jù)訪問對(duì)象DAO、遠(yuǎn)程數(shù)據(jù)對(duì)象RDO和開放數(shù)據(jù)庫(kù)互連ODBC三種方式的擴(kuò)展。ADO對(duì)象模型更為簡(jiǎn)化,不論是存取本地的還是遠(yuǎn)程的數(shù)據(jù),都提供了統(tǒng)一的接口。,11.3.1使用ADO數(shù)據(jù)控件,在使用ADO數(shù)據(jù)控件前,必須先通過“工程/部件”菜單命令選擇“MicrosoftADODataControl6.0(OLEDB)”選項(xiàng),將ADO數(shù)據(jù)控件添加到工具箱。ADO數(shù)據(jù)控件與VisualBasic的內(nèi)部數(shù)據(jù)控件很相似,它允許使用ADO數(shù)據(jù)控件的基本屬性快速地創(chuàng)建與數(shù)據(jù)庫(kù)的連接。,1、引例,例題:編寫一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)程序,設(shè)計(jì)一個(gè)窗體,用網(wǎng)絡(luò)形式瀏覽student.mdb數(shù)據(jù)庫(kù)中“基本情況”表的內(nèi)容。,先通過“工程/部件”菜單命令選擇“MicrosoftADODataControl6.0(OLEDB)”選項(xiàng),將ADO數(shù)據(jù)控件添加到工具箱,工具箱內(nèi)ADO控件圖標(biāo)形狀,畫在窗體上的外觀,1)數(shù)據(jù)源連接選擇數(shù)據(jù)源連接方式連接操作-鼠標(biāo)右擊ADO控件,選擇快捷菜單“ADODC屬性”命令,打開ADO控件屬性頁窗:,三種數(shù)據(jù)源連接方式,選擇數(shù)據(jù)庫(kù)類型,指定數(shù)據(jù)庫(kù)文件名,設(shè)置完成后,ADO控件的ConnectionString屬性為:Provider=Microsoft.Jet.OLEDB.3.51;PersistSecurityInfo=False;DataSource=Student.mdbRecordSource屬性為:基本情況(表),指定記錄源,2)用DataGrid控件顯示數(shù)據(jù),將該控件的DataSource屬性設(shè)置成Adodc1控件,將數(shù)據(jù)網(wǎng)格控件綁定到指定的記錄集。運(yùn)行后如下圖。,2、ADO數(shù)據(jù)控件訪問數(shù)據(jù)庫(kù)過程,使用ADO數(shù)據(jù)控件建立與數(shù)據(jù)庫(kù)的連接使用命令對(duì)象對(duì)數(shù)據(jù)庫(kù)發(fā)出SQL命令,從數(shù)據(jù)庫(kù)中選擇數(shù)據(jù)構(gòu)成記錄集應(yīng)用程序?qū)τ涗浖M(jìn)行操作記錄集:表示的是內(nèi)存中來自表或命令執(zhí)行的結(jié)果的集合,它也由記錄(行)和字段(列)構(gòu)成,可以把它當(dāng)作一個(gè)表來進(jìn)行操作。,ADO控件屬性:,與數(shù)據(jù)庫(kù)的連接及從數(shù)據(jù)庫(kù)中選擇數(shù)據(jù)構(gòu)成記錄集,其核心是設(shè)置ADO控件的三個(gè)基本屬性:ConnectionString屬性該屬性是一個(gè)字符串,包含了用于與數(shù)據(jù)源建立連接的相關(guān)信息。如:Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Student.mdb",RecordSource屬性RecordSource屬性設(shè)置要鏈接的表或者SQL查詢語句。可以在“屬性”窗口中將“記錄源”屬性設(shè)置為一個(gè)SQL語句。如Adodc1.RecordSource="基本情況“Adodc1.RecordSource="select*from基本情況“,CommandType屬性CommandType屬性用于指定RecordSource屬性的取值類型。adCmdUnknown:默認(rèn)值。CommandText屬性中的命令類型未知,常設(shè)為SQL語句。adCmdTable:設(shè)置為單個(gè)表名。adCmdText:設(shè)置為命令文本,通常使用SQL語句。adCmdStoreProc:設(shè)置為存儲(chǔ)過程名。如:Adodc1.CommandType=adCmdTableAdodc1.CommandType=adCmdUnknown記得要用Adodc1.Refresh,刷新來顯示記錄,Recordset屬性產(chǎn)生ADO控件實(shí)際可操作的記錄集對(duì)象。記錄集對(duì)象中的每個(gè)字段值用Recordset.Fields(“字段名”)獲得。,BOFAction和EOFAction屬性當(dāng)移動(dòng)數(shù)據(jù)庫(kù)記錄指針時(shí),如果記錄指針移動(dòng)到BOF或EOF位置后,再向前或向后移動(dòng)記錄指針將發(fā)生錯(cuò)誤。BOFAction和EOFAction屬性指定當(dāng)發(fā)生上述錯(cuò)誤時(shí),數(shù)據(jù)控件采取什么樣的操作。BOFAction屬性有兩個(gè)可選常量:1)adDoMoveFirst:移動(dòng)記錄指針到第一個(gè)記錄。2)adStayBOF:移動(dòng)記錄指針到記錄的開始。記錄指針移動(dòng)到記錄的開始位置時(shí)將引發(fā)數(shù)據(jù)控件的Validate事件和Reposition事件,這時(shí)可編寫程序代碼確定要執(zhí)行的操作。EOFAction屬性有三個(gè)可選常量:1)adDoMoveLast:移動(dòng)記錄指針到最后一個(gè)記錄。2)adStayEOF:移動(dòng)記錄指針到記錄的結(jié)尾,同樣可利用它所引發(fā)的事件編寫程序代碼。3)adDoAddNew:當(dāng)記錄指針移動(dòng)到文件尾部時(shí),引發(fā)數(shù)據(jù)控件的Validate事件,然后自動(dòng)執(zhí)行AddNew方法添加新記錄,并在新記錄上引發(fā)Reposition事件。,ADO數(shù)據(jù)控件的方法和事件,Refresh方法該方法用于刷新ADO數(shù)據(jù)控件的連接屬性,并能重建記錄集對(duì)象。當(dāng)在運(yùn)行狀態(tài)改變ADO數(shù)據(jù)控件的數(shù)據(jù)源連接屬性后,必須使用該方法激活這些變化。WillMove和MoveComplete事件當(dāng)用某種方法改變記錄集的指針使其從一條記錄移到另一條記錄時(shí),會(huì)產(chǎn)生WillMove事件,如使用ADO控件上的按鈕移動(dòng)記錄位置時(shí)。WillComplete事件發(fā)生在一條記錄成為當(dāng)前記錄后,它出現(xiàn)在WillMove事件之后。,11.3.2ADO控件上綁定控件的使用,1、數(shù)據(jù)綁定綁定控件通過ADO數(shù)據(jù)控件使用記錄集內(nèi)的數(shù)據(jù),再由ADO控件將記錄集連接到數(shù)據(jù)庫(kù)中的數(shù)據(jù)表。需要對(duì)控件的兩個(gè)屬性進(jìn)行設(shè)置:DataSource屬性:通過指定一個(gè)有效的ADO數(shù)據(jù)控件將綁定控件與其建立聯(lián)系。DataField屬性:設(shè)置記錄集中有效的字段使綁定控件與其建立聯(lián)系。,2、簡(jiǎn)單數(shù)據(jù)綁定簡(jiǎn)單綁定就是將控件綁定到單個(gè)數(shù)據(jù)字段。例題:設(shè)計(jì)一個(gè)窗體,用以瀏覽Student.mdb數(shù)據(jù)庫(kù)中“基本情況”表的內(nèi)容,3、復(fù)雜數(shù)據(jù)綁定允許將多個(gè)數(shù)據(jù)字段綁定到一個(gè)控件中,同時(shí)顯示記錄集中的多行或多列。支持該綁定的控件有:數(shù)據(jù)網(wǎng)格控件DataGrid和MSHFGrid、數(shù)據(jù)列表框DataList和數(shù)據(jù)組合框DataCombo等。例題:通過單擊不同的按鈕在數(shù)據(jù)網(wǎng)格中顯示Student.mdb數(shù)據(jù)庫(kù)中基本情況表或成績(jī)表的內(nèi)容。,11.4記錄集對(duì)象,在VB中不允許對(duì)數(shù)據(jù)庫(kù)中的表直接訪問,只能通過記錄集對(duì)象RecordSet對(duì)記錄進(jìn)行瀏覽和操作。對(duì)記錄集的修改最終會(huì)傳給原始表。11.4.1瀏覽記錄集1、屬性AbsoloutPostion屬性返回當(dāng)前記錄指針值,如:第N條記錄的AbsoloutPostion屬性值為n。RecordCount屬性對(duì)記錄集對(duì)象中的記錄計(jì)數(shù),該屬性為只讀屬性。,BOF和EOF屬性,Eof,Bof,RecordCount,當(dāng)記錄指針在首記錄之前時(shí),BOF為”true”,否則為“false”當(dāng)記錄指針在最后一條記錄之后時(shí),EOF為”true”,否則為“false”當(dāng)前指針位于BOF,AbsoloutPostion返回-2,當(dāng)前指針位于EOF,AbsoloutPostion返回-3當(dāng)記錄集為空,AbsoloutPostion返回-1,2、方法Find方法該方法可在記錄集對(duì)象中查找符合條件的第一條記錄,并使之成為當(dāng)前記錄。若沒有找到,按搜索方向,指停在記錄集的末尾處或起始位置前。格式為:Recordset.Find搜索條件,位移,搜索方向,起始位置說明:搜索條件:是一個(gè)字符串,包含用于搜索的字段名、比較運(yùn)算符和數(shù)據(jù)。如:adodc1.Recordset.find“學(xué)號(hào)=990001”當(dāng)使用Like運(yùn)算符時(shí),常量值可以用“*”代表多個(gè)字符,實(shí)現(xiàn)模糊查詢。位移:指定從開始位置位移n條記錄后開始搜索,默認(rèn)值為0。搜索方向:其值為adSearchForward(向記錄集尾部)或adSearchBackward(向記錄集開始)起始位置:指定搜索的起始位置。缺省時(shí)從當(dāng)前位置開始搜索。,Move方法組該方法可實(shí)現(xiàn)數(shù)據(jù)控件4個(gè)箭頭按鈕的操作。5種Move方法為:MoveFirst(看圖)MoveNextMovePreviousMoveLastMoven從當(dāng)前記錄向前(-n)或向后(+n)移n條記錄。例題,11.4.2記錄集的編輯,1、數(shù)據(jù)編輯方法編輯主要指增加、刪除、修改操作,涉及4個(gè)方法:AddNew方法:在記錄集中增加一個(gè)空行。Delete方法:刪除記錄集中的當(dāng)前記錄。Update方法:確定所做的修改并保存到數(shù)據(jù)源中。CancelUpdate方法:取消未調(diào)用Uptate方法前對(duì)記錄集所做的所有修改。,2、增加記錄調(diào)用AddNew方法給各字段賦值調(diào)用Update方法。3、刪除記錄定位要被冊(cè)除的記錄,為當(dāng)前記錄調(diào)用Delete方法移動(dòng)記錄指針。4、修改記錄當(dāng)改變數(shù)據(jù)項(xiàng)的內(nèi)容時(shí),ADO控件自動(dòng)進(jìn)入編輯狀態(tài),在對(duì)數(shù)據(jù)編輯后,只要改變記錄集的指針或調(diào)用Update方法,即可確定所做的修改。,例題:在上題中加入增、刪、改功能。,11.4.3查詢和統(tǒng)計(jì),在實(shí)現(xiàn)查詢功能時(shí),要設(shè)置ADO控件的ConnectionString屬性值,并將CommandType屬性值設(shè)置為AdCmdUnknown,RecordSource屬性設(shè)置為SQL語句,用Refresh方法激活。例如:根據(jù)輸入的專業(yè)名稱,在網(wǎng)絡(luò)內(nèi)顯示基本情況表中該專業(yè)的所有學(xué)生記錄。,為了減少專業(yè)名稱輸入的麻煩,可以用數(shù)據(jù)列表框DataList或數(shù)據(jù)組合框來代替文本框。例題:在數(shù)據(jù)列表框中顯示專業(yè)名稱,根據(jù)選定的專業(yè)在網(wǎng)格內(nèi)顯示該專業(yè)所有學(xué)生。說明:數(shù)據(jù)列表框內(nèi)所要顯示的數(shù)據(jù)由RowSource和listfield屬性決定。BoundColumn為列表框傳遞出來的數(shù)據(jù)源字段(具體內(nèi)容由BoundText屬性提供。)RowSource=Adodc1listfield=“專業(yè)”,統(tǒng)計(jì),在實(shí)現(xiàn)統(tǒng)計(jì)時(shí),仍用到SQL的函數(shù)和分組功能來實(shí)現(xiàn)。例題:設(shè)計(jì)一個(gè)程序,統(tǒng)計(jì)各專業(yè)的人數(shù)、年齡分布。,11.4.4BLOB數(shù)據(jù)處理,二進(jìn)制大型對(duì)象(BLOB)是指任何需要存入數(shù)據(jù)庫(kù)的隨機(jī)大塊字節(jié)流數(shù)據(jù),例如圖形、聲音,也可以是一個(gè)word文檔。1、把BLOB數(shù)據(jù)寫入數(shù)據(jù)庫(kù)ADO的AppendChunk方法用于將BLOB數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)的二進(jìn)制字段內(nèi)。ADO對(duì)象.Recordset.fileds(字段).AppendChunkData其中參數(shù)Data包含加入到數(shù)據(jù)庫(kù)的BLOB數(shù)據(jù)。例如:,處理步驟如下:用二進(jìn)制訪問方式打開BLOB數(shù)據(jù)文件如:Open文件路徑ForBinaryAs#1定義一個(gè)字節(jié)類型的數(shù)組,數(shù)組大小為文件大小如Dimst()AsByteReDimst(LOF(1)將文件保存到數(shù)組如Get#1,st使用ADO對(duì)象的AppendChunk方法寫入數(shù)據(jù)庫(kù)。如:Adodc1.Recordset.Fields("照片").AppendChunkst,例如:將圖片寫入到基本情況表中的一條記錄的“照片”字段中,2、從數(shù)據(jù)庫(kù)中讀出BLOB數(shù)據(jù)使用ADO的GetChunk方法.變量=ADO對(duì)象.Recordset.fileds(字段).GetChunk(size)其中參數(shù)size為長(zhǎng)整型表達(dá)式,讀取字段內(nèi)的數(shù)據(jù)的字節(jié)數(shù)。若size大于數(shù)據(jù)的實(shí)際長(zhǎng)度,則GetChunk方法僅返回?cái)?shù)據(jù),而不填充空白。若字段為空,則GetChunk方法返回null。每個(gè)后續(xù)的GetChunk方法調(diào)用將檢索從前一次GetChunk調(diào)用停止處開始的數(shù)據(jù)。例如,處理步驟如下:,用記錄集的ActualSize屬性取出記錄的圖片字段實(shí)際大小如:c=Adodc1.Recordset.Fields("照片").ActualSize定義一個(gè)字節(jié)數(shù)組,數(shù)據(jù)大小為圖片字段實(shí)際大小如:Dima()asbyteReDima(c)使用ADO對(duì)象的AppendChunk方法將字段值存入字節(jié)數(shù)組中。如:a=Adodc1.Recordset.Fields("照片").GetChunk(c)用二進(jìn)制方式打開文件,并將字節(jié)數(shù)組寫入到打開的文件中。如:Open"d:pic.jpg"ForBinaryAs#1Put#1,aClose#1,11.4.4使用數(shù)據(jù)窗體向?qū)?通過數(shù)據(jù)窗體向?qū)芙⒁粋€(gè)訪問數(shù)據(jù)的窗口。在使用前必須執(zhí)行“外接程序/外接程序管理器”命令,將“VB6數(shù)據(jù)窗體向?qū)А毖b入到“外接程序”菜單中。步驟1:執(zhí)行“外接程序”菜單中的“數(shù)據(jù)窗體向?qū)А泵?步驟2:選擇數(shù)據(jù)庫(kù)類型。,步驟3:選擇具體的數(shù)據(jù)庫(kù)文件。,步驟4:設(shè)置應(yīng)用窗體的工作特性。,步驟5:選擇記錄源(所需要的實(shí)際數(shù)據(jù))。,步驟6:選擇所需要的操作按鈕。,例11.6,11.5結(jié)構(gòu)化查詢語言(SQL),11.5.1結(jié)構(gòu)化查詢語言,結(jié)構(gòu)化查詢語言SQL是操作數(shù)據(jù)庫(kù)的工業(yè)標(biāo)準(zhǔn)語言。在SQL語言中,指定要做什么而不是怎么做。不需要告訴SQL如何訪問數(shù)據(jù)庫(kù),只要告訴SQL需要數(shù)據(jù)庫(kù)做什么。利用SQL,可以確切指定想要檢索的記錄以及按什么順序檢索??梢栽谠O(shè)計(jì)或運(yùn)行時(shí)對(duì)數(shù)據(jù)控件使用SQL語句。用戶提出一個(gè)查詢,數(shù)據(jù)庫(kù)返回所有與該查詢匹配的記錄。,這些函數(shù)可以用在SELECT短語中對(duì)查詢結(jié)果進(jìn)行計(jì)算,11.5.2使用SELECT語句查詢,1.使用SELECT語句從數(shù)據(jù)庫(kù)中的獲取數(shù)據(jù)稱為查詢數(shù)據(jù)庫(kù),查詢數(shù)據(jù)庫(kù)通過使用SELECT語句。常見的SELECT語句形式為:SELECT字段列表FROM表列表WHEREGROUPBY.HAVINGORDERBY可以在設(shè)計(jì)或代碼中對(duì)數(shù)據(jù)控件的RecordSource屬性設(shè)置SQL語句,也可將SQL語句賦予對(duì)象變量。在建立SQL語句時(shí),如果需要通過變量構(gòu)造條件,則需要在應(yīng)用程序中將變量連接到SELECT語句。例如:Select*From基本情況Where專業(yè)=”物理",SELECT:說明要查詢的數(shù)據(jù)FROM:說明要查詢的數(shù)據(jù)來自哪個(gè)或哪些表,可以對(duì)單個(gè)表或多個(gè)表進(jìn)行查詢;WHERE:說明查詢條件,即選擇元組的條件;后可用一些運(yùn)算如inLIKE匹配符%:表示0個(gè)或多個(gè)字符匹配符:_:表示一個(gè)字符GROUPBY:短語用于將查詢結(jié)果按一列或多列分組,如果未對(duì)查詢結(jié)果分組,命令將作用于整個(gè)查詢結(jié)果.分組后函數(shù)集將作用于每一個(gè)組.HAVING:短語必須跟隨GROUPBY短語使用,它用來限定分組必須滿足的條件;,1、簡(jiǎn)單查詢:只有select和from子句select學(xué)號(hào),姓名,專業(yè)from基本情況select*from基本情況2、由SELECT-FROM-WHERE短語構(gòu)成條件查詢select*from基本情況where專業(yè)=物理select*from基本情況where出生年月>#1982/12/31#select*from基本情況where出生年月#1981/12/31#select*from基本情況where專業(yè)in(物理,數(shù)學(xué))select*from基本情況where學(xué)號(hào)like9901%,例如:,3、用于計(jì)算檢索的函數(shù)有:(1)COUNT-計(jì)數(shù)(2)SUM-求和(3)AVG-計(jì)算平均值(4)MAX-求最大值(5)MIN-求最小值這些函數(shù)可以用在SELECT短語中對(duì)查詢結(jié)果進(jìn)行計(jì)算selectcount(*)from基本情況selectmax(出生年月)from基本情況4、分組與計(jì)算查詢GROUPBYGroupColumn,GroupColumnHAVINGFilterConditionselect專業(yè),count(*)as人數(shù)from基本情況groupby專業(yè)select專業(yè),max(出生年月)from基本情況groupby專業(yè),5、多表連接查詢Select目標(biāo)表達(dá)式from表1,表2where表1.字段=表2.字段select基本情況.姓名,學(xué)生成績(jī)表.成績(jī)_from基本情況,學(xué)生成績(jī)表_where基本情況.學(xué)號(hào)=學(xué)生成績(jī)表.學(xué)號(hào),*11.5.4ADO對(duì)象,使用ADO對(duì)象訪問數(shù)據(jù)庫(kù)比DAO對(duì)象模型更為簡(jiǎn)化,不論是存取本地的還是遠(yuǎn)程的數(shù)據(jù),都提供了統(tǒng)一的接口。,11.6報(bào)表制作,數(shù)據(jù)報(bào)表設(shè)計(jì)器屬于ActiveXDesigner組中的一個(gè)成員,在使用前需要執(zhí)行“工程|添加DataReport”命令,將報(bào)表設(shè)計(jì)器加入到當(dāng)前工程中,產(chǎn)生一個(gè)DataReport1對(duì)象,并在工具箱內(nèi)產(chǎn)生一個(gè)“數(shù)據(jù)報(bào)表”標(biāo)簽。,“標(biāo)簽”控件在報(bào)表上放置靜態(tài)文本“文本”控件在報(bào)表上連接并顯示字段的數(shù)據(jù)“圖形”控件可在報(bào)表上添加圖片“線條”控件在報(bào)表上繪制直線“形狀”控件在報(bào)表上繪制各種各樣的圖形外形“函數(shù)”控件在報(bào)表上建立公式。報(bào)表標(biāo)頭區(qū)包含整個(gè)報(bào)表最開頭的信息,一個(gè)報(bào)表只有一個(gè)報(bào)表頭,可使用“標(biāo)簽”控件建立報(bào)表名報(bào)表注腳區(qū)包含整個(gè)報(bào)表尾部的信息,一個(gè)報(bào)表也只有一個(gè)注腳區(qū)頁標(biāo)頭區(qū)設(shè)置報(bào)表每一頁頂部的標(biāo)題信息;頁注腳區(qū)包含每一頁底部的信息;細(xì)節(jié)區(qū)包含報(bào)表的具體數(shù)據(jù),細(xì)節(jié)區(qū)的高度將決定報(bào)表的行高。,例11.12建立新工程,在窗體上放置兩個(gè)命令按鈕。在當(dāng)前工程內(nèi)加入一個(gè)DataEnvironent1對(duì)象。完成與指定數(shù)據(jù)庫(kù)的連接。在Connection1下創(chuàng)建Command1對(duì)象。在當(dāng)前工程中加入報(bào)表設(shè)計(jì)器DataReport1,設(shè)置報(bào)表設(shè)計(jì)器的DataSource屬性為數(shù)據(jù)環(huán)境對(duì)象,DataMember屬性為Command1對(duì)象。將數(shù)據(jù)環(huán)境設(shè)計(jì)器中Command1對(duì)象內(nèi)的字段拖動(dòng)到數(shù)據(jù)報(bào)表設(shè)計(jì)器的細(xì)節(jié)區(qū)。使用“標(biāo)簽”控件,在報(bào)表標(biāo)頭區(qū)插入報(bào)表名,頁標(biāo)頭區(qū)設(shè)置報(bào)表每一頁頂部的標(biāo)題信息等。使用“線條”控件在報(bào)表內(nèi)加入直線,使用“圖形”控件和“形狀”控件加入圖案或圖形。在命令按鈕Click事件內(nèi)加入代碼DataReport1.Show顯示報(bào)表,DataReport1.PrintReport打印報(bào)表。,