




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第8章數(shù)據(jù)控件與數(shù)據(jù)綁定控件的使用數(shù)據(jù)庫編程技術18.1VB開發(fā)數(shù)據(jù)庫概述8.1.1VB數(shù)據(jù)庫開發(fā)功能概述VB是微軟公司發(fā)布的應用程序開發(fā)工具,不但具有強大的程序設計能力,還具有強大的數(shù)據(jù)庫編程能力。1.VB6.0數(shù)據(jù)庫編程的特征VB處理的數(shù)據(jù)庫屬于關系類型數(shù)據(jù)庫,由不同層次的對象組成。一個數(shù)據(jù)庫由多個表組成,每個表包含若干字段。支持ADO存取模式,即ActiveXDataObject支持OLEDB和COM,即對象連接與嵌入數(shù)據(jù)庫和組件對象模型。其中COM是一種標準,按此標準開發(fā)的軟件模塊可以“插入”到系統(tǒng)中使用??梢葬槍QLServer和Oracle等不同的數(shù)據(jù)庫服務器開發(fā)完善的客戶/服務器應用程序。具有管理和顯示數(shù)據(jù)源的數(shù)據(jù)控件和數(shù)據(jù)綁定控件。數(shù)據(jù)控件用于與數(shù)據(jù)庫連接,數(shù)據(jù)綁定控件用于顯示數(shù)據(jù)表的記錄。提供報表設計工具,能夠快速生成報表提供了使用和配置連接的工具與命令,及進行ODBC開發(fā)的API函數(shù)。22.VB作為數(shù)據(jù)庫開發(fā)平臺的優(yōu)點(1)簡單性VB為每種數(shù)據(jù)訪問模式提供了相應的控件,通過控件,可以方便地連接數(shù)據(jù)庫,只需編寫少量的代碼甚至不用編寫代碼就可以訪問和操作數(shù)據(jù)庫。(2)靈活性VB不象一般數(shù)據(jù)庫那樣局限于特定的應用程序結構,也不需要用某些指令對打開的數(shù)據(jù)庫進行操作。(3)可擴充性在VB中可以用ActiveX控件,這些控件可以由微軟公司提供,也可以由第三方開發(fā)。有了ActiveX控件,可以在VB中增加新功能。38.1.2VB6.0支持的數(shù)據(jù)庫種類數(shù)據(jù)庫編程語言一般都有自己特定格式的數(shù)據(jù)庫。VB默認的數(shù)據(jù)庫格式與MicrosoftAccess格式相同.可以對其它多種格式的數(shù)據(jù)庫進行操作和處理。VB支持的數(shù)據(jù)庫有以下三類:VB本地數(shù)據(jù)庫,與MicrosoftAccess格式相同。外部數(shù)據(jù)庫,如dbase,MicrosoftFoxPro等。ODBC數(shù)據(jù)庫,支持符合ODBC標準的客戶-服務器數(shù)據(jù)庫,如:MicrosoftSQLServer,Oracle等。48.1.3VB6.0支持的數(shù)據(jù)存取模式VB6.0支持的數(shù)據(jù)庫存取模式有以下三種:數(shù)據(jù)存取對象(DataAccessObjects,簡稱DAO)遠程數(shù)據(jù)對象(RemoteDataObjects,簡稱RDO)ActiveX數(shù)據(jù)對象(ActiveXDataObjects,簡稱ADO)1.DAO簡介DAO模式是VB最早期的數(shù)據(jù)訪問模式。是以Microsoft的Jet數(shù)據(jù)庫引擎為核心而發(fā)展起來的一組動態(tài)鏈接庫。它提供了兩種類型來支持數(shù)據(jù)庫:通過Microsoft的Jet數(shù)據(jù)庫引擎來操作本地數(shù)據(jù)庫。通過使用ODBCDirect,來存取ODBC數(shù)據(jù)庫。使用ODBC存取方法,DAO可以訪問任何提供標準ODBC驅動程序的客戶/服務器數(shù)據(jù)庫。52.RDO簡介遠程數(shù)據(jù)庫是數(shù)據(jù)庫應用中新興的領域,隨著Internet的推廣,網(wǎng)絡數(shù)據(jù)庫應用系統(tǒng)日益增加。對于網(wǎng)絡應用程序來說,其數(shù)據(jù)訪問端與數(shù)據(jù)庫之間有比較遠的距離,使用DAO組件已不能滿足遠程數(shù)據(jù)訪問的要求,因此應使用遠程數(shù)據(jù)對象RDO來訪問數(shù)據(jù)庫。RDO直接與數(shù)據(jù)庫服務器連接,所以它比較適合于客戶機/服務器方式。63.ADO簡介ADO是最新的數(shù)據(jù)訪問技術,ADO提供了較為高級的訪問OLEDB數(shù)據(jù)源的機制,它結合了DAO和RDO的優(yōu)點,并提供了OLEDB數(shù)據(jù)源的入口。OLEDB是一個低層的數(shù)據(jù)訪問接口,它向應用程序提供了一個統(tǒng)一的數(shù)據(jù)訪問方法,利用它可以訪問各種數(shù)據(jù)源,包括傳統(tǒng)的關系型數(shù)據(jù)庫、電子郵件系統(tǒng)及自定義的商業(yè)對象。78.1.4SQLServer數(shù)據(jù)庫的DSN的配置1.開放式數(shù)據(jù)庫互連(ODBC)開放式數(shù)據(jù)庫互連—ODBC(OpenDatabaseConnectivity)的概念來源于對多個數(shù)據(jù)庫數(shù)據(jù)存取的需求。在早期的數(shù)據(jù)庫編程中,由于不同的數(shù)據(jù)庫管理系統(tǒng)(DBMS),有自己的數(shù)據(jù)庫格式和嵌入式的SQL語言,即使應用程序完成同樣的功能,但只要DBMS選取的不同,則編寫的程序將完全不同。程序員為了能夠訪問不同的數(shù)據(jù)庫而不得不學習多個DBMS的內容。8希望擺脫專用數(shù)據(jù)庫本身的約束,對于不同的DBMS,采用統(tǒng)一的編程界面,從而使數(shù)據(jù)庫應用程序在訪問另外一種數(shù)據(jù)庫格式時,不需要對源程序進行修改。ODBC開發(fā)的最初目標就是為Windows程序員提供一套訪問數(shù)據(jù)庫的SQL函數(shù)調用,而這些函數(shù)的調用采用相同的用戶界面。ODBC用戶可以用ODBC的SQL語句訪問任何支持ODBC標準的數(shù)據(jù)庫,從而使應用程序訪問不同的數(shù)據(jù)庫的操作不依賴任何DBMS,也為程序的跨平臺開發(fā)和移植提供了方便。92.DSN的配置DSN的意思是應用程序用以請求一個連接到ODBC數(shù)據(jù)源的連接(Connection)的名字,即它代表一個ODBC連接的名稱,內含了數(shù)據(jù)庫文件名、所在目錄、數(shù)據(jù)庫驅動程序、用戶ID、密碼等細節(jié),使得應用程序訪問數(shù)據(jù)庫時,只要給出事先注冊的DSN,而不必考慮以上細節(jié)問題,從而使程序中訪問數(shù)據(jù)庫變得簡單。DSN可以分為以下三種:系統(tǒng)DSN:可以被登錄到系統(tǒng)中的所有用戶使用用戶DSN:只能被建立它的用戶使用文檔DSN:把信息存儲在后綴名為.dsn的文件中,如果文件放在網(wǎng)絡共享的驅動器中,就可以被所有安裝了相同驅動程序的用戶共享。10DSN配置步驟如下:以前邊建立的數(shù)據(jù)庫“成績管理”為例。(1)打開ODBC數(shù)據(jù)源管理器ODBC數(shù)據(jù)源管理器用來管理本機上所有的ODBC數(shù)據(jù)源,如注冊新的數(shù)據(jù)源名稱,刪除或修改數(shù)據(jù)源等。單擊[開始]\[設置]\[控制面板],打開控制面板窗口;在其中雙擊[管理工具]圖標,打開管理工具窗口;雙擊[數(shù)據(jù)源ODBC]
圖標,即可打開ODBC數(shù)據(jù)源管理器如圖8-2。圖8-2ODBC數(shù)據(jù)源管理器11(2)選擇數(shù)據(jù)源類型并添加數(shù)據(jù)源在[ODBC數(shù)據(jù)源管理器]中,單擊[系統(tǒng)DSN]選項卡,再單擊[添加]按鈕,將出現(xiàn)[創(chuàng)建新數(shù)據(jù)源]對話框如圖8-3。圖8-3創(chuàng)建新數(shù)據(jù)源對話框12(3)選擇驅動程序在圖8-3所示的驅動器列表中,選擇“SQLServer”并單擊[完成]按鈕,打開向導窗口如圖8-4。圖8-4設置數(shù)據(jù)源名稱及服務器13(4)設置數(shù)據(jù)源在數(shù)據(jù)源[名稱]框中輸入一個數(shù)據(jù)源名稱(如cjgl),[說明]框中可不輸入,然后在[服務器]列表框中選擇需要連接的SQLServer服務器。(5)設置身份驗證方式單擊[下一步]按鈕,打開對話框如圖9-5所示。在該對話框中,可以設置身份驗證方式。若選擇[使用用戶輸入登錄ID和密碼的SQLServer驗證],需要輸入登錄ID和密碼,sa是SQLServer2000的系統(tǒng)管理員帳號。圖8-5設置身份驗證方式14(6)設置默認的數(shù)據(jù)庫單擊[下一步]按鈕,打開設置數(shù)據(jù)庫選項對話框,如圖8-6所示。系統(tǒng)默認的數(shù)據(jù)庫為master,在[更改默認的數(shù)據(jù)庫為]下拉列表框中,選擇“成績管理”,即將默認數(shù)據(jù)庫設置為所需要的數(shù)據(jù)庫。圖8-6設置數(shù)據(jù)庫連接15
(7)設置其它屬性單擊[下一步]按鈕,打開設置其它屬性的窗口,如圖8-7所示。在此可以設置用于SQLServer消息的語言、數(shù)據(jù)加密、字符數(shù)據(jù)轉換等等。圖9-7設置其它屬性16(8)單擊[完成]按鈕,將打開數(shù)據(jù)源的匯總信息窗口,如圖8-8所示。在此窗口中綜合顯示了數(shù)據(jù)源的各項設置,從而決定是否創(chuàng)建數(shù)據(jù)庫。圖8-8數(shù)據(jù)源匯總信息顯示17(9)單擊[測試數(shù)據(jù)源]按鈕,可以檢查數(shù)據(jù)源配置是否成功。若配置成功,將顯示圖8-9所示的對話框。圖8-9測試數(shù)據(jù)源結果顯示188.2數(shù)據(jù)庫訪問控件的應用在VB中,開發(fā)數(shù)據(jù)庫應用程序有兩種方式:一種是利用VB提供的數(shù)據(jù)庫訪問控件,另一種是編寫程序代碼。VB6.0提供了支持DAO、RDO、ADO的特殊控件,以便訪問和操作數(shù)據(jù)庫。Data控件可以創(chuàng)建DAO對象,RemoteData控件可以創(chuàng)建RDO對象,ADOData控件可以創(chuàng)建ADO對象利用這些控件可以方便地連接到數(shù)據(jù)庫并操作數(shù)據(jù)庫,但這些控件并不能顯示數(shù)據(jù),必須借助數(shù)據(jù)綁定控件(如文本框等)顯示、修改數(shù)據(jù)。使用數(shù)據(jù)庫訪問控件,可以簡化開發(fā)過程,減少代碼編寫量,從而提高工作效率。19ADOData控件與Data控件、RemoteData控件相比,ADOData控件的功能更為強大,使用更為方便。因此本章主要介紹支持ADO的數(shù)據(jù)控件ADOData,及與其綁定的數(shù)據(jù)綁定控件的主要功能及其應用。208.2.1ADOData控件及數(shù)據(jù)綁定控件ADOData控件可以說是連接數(shù)據(jù)庫和數(shù)據(jù)綁定控件的橋梁。通過設置ADOData控件的屬性,可以讓它和已存在的數(shù)據(jù)庫聯(lián)系起來并能指定訪問數(shù)據(jù)庫中的某個表,并通過數(shù)據(jù)綁定控件(如文本框,復選框等控件),顯示數(shù)據(jù)庫中的數(shù)據(jù)。數(shù)據(jù)綁定控件用來顯示數(shù)據(jù)表中的數(shù)據(jù)。需將控件綁定到ADOData控件上的某字段上,就可顯示和修改該字段的數(shù)據(jù)。21文本框(Text):顯示或輸入數(shù)據(jù)標簽(Label):顯示數(shù)據(jù)復選框(Check):顯示邏輯類型字段,True(Yes)/False(No)列表框(List),組合框(Combo):顯示數(shù)據(jù)列表,圖像框(Image),圖片框(Picture):顯示圖片,要求字段為二進制類型.OLE容器控件:顯示OLE類型字段的數(shù)據(jù)其它ActiveX控件.可以與ADOData控件一起使用的數(shù)據(jù)綁定控件有:22大多數(shù)數(shù)據(jù)綁定控件都有以下這三種屬性:(1)DataSource:數(shù)據(jù)源屬性。指定需要綁定到的ADOData控件的名稱。(2)DataField:用來指定綁定到哪個字段上。(3)DataChange:用來指出顯示在綁定控件里的數(shù)據(jù)是否已經(jīng)被改變,如果改變,值為True,否則值為False。238.2.2用ADOData控件建立數(shù)據(jù)庫應用程序下面通過一個簡單的例子,介紹用ADOData控件建立數(shù)據(jù)瀏覽窗體的基本步驟。(1)新建一個標準的VB工程,將ADOData控件添加到工具箱中執(zhí)行菜單[工程]\[部件],打開“部件”對話框,在“控件”列表框中選中“MicrosoftADODataControl6.0(OLEDB)”項,將ADOData控件添加到工具箱中。(2)將ADOData控件添加到窗體上在窗體上,ADOData控件的外觀如圖8-10所示,默認控件名稱為Adodc1,可以單擊其上的箭頭按鈕在記錄之間移動。圖8-10ADOData控件的外觀24(3)設置ADOData控件的數(shù)據(jù)源連接屬性操作步驟如下:在Adodc1控件的屬性窗口中,選擇(自定義)屬性右邊的[…]按鈕,打開[屬性頁]對話框,或鼠標右擊Adodc1控件,在彈出的快捷菜單中選擇[屬性]命令,打開[屬性頁]對話框如圖8-11所示。在[通用]選項卡中選擇“使用ODBC數(shù)據(jù)資源名稱”,并在下拉列表中選擇前邊建立的ODBC數(shù)據(jù)源名“cjgl”。圖8-11ADOData控件的[屬性頁]對話框25單擊[身份驗證]選項卡(如圖8-12),輸入用戶名(例如sa)和密碼(例如sa)。單擊[記錄源]選項卡(如圖8-13),在該選項卡中,可以設置ADOData控件的返回記錄的記錄源。記錄源是從命令對象獲取的,可以在[命令類型]下拉列表中選擇用于記錄源的命令類型。各種命令類型的含義如表所示。命令類型含義8-adCmdUnknow未知類型,用戶需在[命令文本(SQL)]框中輸入SQL語句建立命令對象1-adCmdText文本類型,用戶需在[命令文本(SQL)]框中輸入SQL語句建立命令對象2-adCmdTable表類型,用戶需在[表或存儲過程名稱]下拉列表中選擇一個數(shù)據(jù)表來建立命令對象(相當于輸入:Select*FromTable)4-adCmdStoredProc存儲過程,用戶需在[表或存儲過程名稱]下拉列表中選擇一個查詢的名稱來建立命令對象26圖8-12身份驗證的設置圖8-13記錄源的設置27例如要訪問學生信息表,選擇命令類型為:2-adCmdTable然后在[表或存儲過程名稱]下拉列表框中選擇“學生信息表”(如圖8-13所示)。設置完成后,單擊[確定]按鈕。也可以選擇命令類型為1-adCmdText,然后在[命令文本(SQL)]框中輸入如下SQL語句:
Select*From學生信息表設置完成后,單擊[確定]按鈕。28(4)向窗體中添加其他數(shù)據(jù)綁定控件,并綁定到Adodc1上在窗體Form1上,添加5個文本框用于顯示字段中的數(shù)據(jù),5個標簽用于說明對應的字段名(見圖8-14)。圖8-14數(shù)據(jù)瀏覽窗體設計界面29將控件(如Text)綁定到Adodc1上的方法如下:設置綁定控件的DataSource屬性為數(shù)據(jù)控件名:Adodc1設置綁定控件的DataField屬性為要顯示的字段名各個文本框的屬性設置如表8-2所示.考慮到瀏覽數(shù)據(jù)的窗體,不應允許修改數(shù)據(jù),所以將文本框的Locked屬性設為True,使之只能顯示數(shù)據(jù)而不能修改或輸入數(shù)據(jù)。30當所有文本框都通過表8-2所示的屬性設置后,即完成了綁定到Adodc1所連接的數(shù)據(jù)源。這時可運行程序,結果如圖9-15所示,可見文本框中顯示了學生信息表的第一條記錄信息,若單擊Adodc1上的按鈕,可顯示其他記錄??丶麑傩悦麑傩灾悼丶麑傩悦麑傩灾礣ext1DataSourceAdodc1Text3DataSourceAdodc1DataField學號DataField性別LockedTrueLockedTrueText2DataSourceAdodc1Text4DataSourceAdodc1DataField姓名DataField生日LockedTrueLockedTrueText2DataSourceAdodc1Text2LockedTrueDataField專業(yè)圖8-15數(shù)據(jù)瀏覽窗體運行界面318.2.3ADOData控件的常用屬性及方法1.ADOData控件的常用屬性介紹如下:Name:名稱。默認名稱:Adodc1,Adodc2等。Caption:設置顯示在控件上的標題。ConnectionString:設置到數(shù)據(jù)源的連接信息。CommandType:設置返回記錄集的類型。CommandType
的值用于指明RecordSource
的類型。CommandType的取值及含義如下:1-adCmdText:文本類型,可在"命令文本框"中輸入SQL語句。表示返回的記錄集是執(zhí)行SQL語句的結果。2-adCmdTable:表類型??稍?表或存儲過程名"框中選擇一個表名稱(相當于選擇表的所有字段)。表示返回的記錄集類型是一個數(shù)據(jù)表。4-adCmdStoredProc:存儲過程類型。32ReocordSurce:記錄源。返回或設置Recordset的生成方式??梢允荢QL語句,表名,查詢名等。Recordset:記錄集對象。2.ADOData控件的Refresh方法功能:重新讀數(shù)據(jù)庫,刷新記錄集。使用格式:Adodc1.RefreshRefresh方法可用于ADOData控件的數(shù)據(jù)源連接發(fā)生變化時,使ADOData控件重新連接數(shù)據(jù)庫。也可在執(zhí)行AddNew方法后,新數(shù)據(jù)尚未寫入數(shù)據(jù)庫時,調用Refresh方法,清除用戶所做的添加和修改。338.2.4RecordSet對象的常用屬性及方法1.RecordSet
對象的常用屬性ADOData控件將數(shù)據(jù)庫中的指定數(shù)據(jù)提取出來,并放在一個記錄集中,RecordSet即記錄集對象,指當前數(shù)據(jù)庫中的一系列記錄。其主要屬性如下:(1)EOF和BOF屬性這兩個屬性是反映記錄指針是否到記錄頭和記錄尾的標志。如果記錄指針位于第一條記錄之前,則BOF=True否則BOF=False。如果記錄指針位于最后一條記錄之后,則EOF=True否則EOF=False。
EOF和BOF屬性具有以下特點:如果記錄集是空的,則EOF和BOF的值都是True如果EOF和BOF的值成為True之后,只有當記錄指針移到實際存在的記錄上,二者的值才會變?yōu)镕alse。34(2)RecordCount屬性反映記錄集中的記錄總數(shù)。例如要在Adodc1控件上顯示記錄總數(shù),可用如下語句:Adodc1.Caption=Adodc1.Recordset.RecordCount(3)AbsolutePosition
屬性
反映當前記錄的位置。若當前顯示的是第一條記錄,則AbsolutePosition=1例如要在Adodc1控件上顯示當前記錄的位置,可用如下語句:Adodc1.Caption=
Adodc1.Recordset.AbsolutePosition例如要在Adodc1控件上顯示當前記錄的位置及記錄總數(shù),可用如下語句:Adodc1.Caption=Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount352.RecordSet
對象的常用方法(1)Move方法利用ADOData控件,通過編程的方法進行數(shù)據(jù)庫瀏覽時,需要用到ADOData控件的RecordSet對象的Move方法在記錄集之間移動記錄指針。主要有以下幾種方法:MoveNext
方法:記錄指針移到下一條記錄MovePrevious
方法:記錄指針移到上一條記錄MoveFirst
方法:記錄指針移到第一條記錄MoveLast
方法:記錄指針移到最后一條記錄Move[n]
方法:使記錄指針前移或后移n條記錄。n為正數(shù),表示向后移動;n為負數(shù),表示向前移動.36例8-2設計數(shù)據(jù)瀏覽窗體,利用Move方法實現(xiàn)數(shù)據(jù)庫的瀏覽。在例8-1的基礎上,添加按鈕如圖8-16,運行時不顯示Adodc1(設其Visible屬性為False),通過按鈕實現(xiàn)記錄指針的移動。圖8-16例8-2運行界面37設置新增控件的屬性如表??丶麑傩悦麑傩灾底饔肅mdFirstCaption首記錄將記錄指針移到第1條記錄CmdPreCaption前移記錄指針向前移動一條記錄CmdNextCaption后移記錄指針向后移動一條記錄CmdLastCaption末記錄將記錄指針移到末條記錄CmdNCaption移動記錄數(shù)一次移動n條記錄Text6Text空輸入要移動的記錄數(shù)量Label6caption空顯示當前記錄數(shù)及記錄總數(shù)38編程如下:PrivateSubForm_Load()
‘設置按鈕的初始狀態(tài)CmdFirst.Enabled=False‘[首記錄]按鈕無效CmdPre.Enabled=False‘[前移]按鈕無效CmdNext.Enabled=True‘后移]按鈕有效CmdLast.Enabled=True‘[末記錄]按鈕有效Label6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCountEndSub39PrivateSubCmdFirst_Click()Adodc1.Recordset.MoveFirst
'記錄指針移到首記錄(顯示首記錄)CmdFirst.Enabled=False'讓[首記錄]按鈕無效CmdPre.Enabled=False'讓[前移]按鈕無效CmdNext.Enabled=True'讓[后移]按鈕有效CmdLast.Enabled=True'讓[末記錄]按鈕有效‘在Label6上顯示當前記錄號/記錄總數(shù):Label6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCountEndSub40PrivateSubCmdPre_Click()Adodc1.Recordset.MovePrevious
'記錄指針移到前一條記錄CmdNext.Enabled=TrueCmdLast.Enabled=TrueIfAdodc1.Recordset.BOFThen'如果記錄指針移到首記錄之前,Adodc1.Recordset.MoveFirst'則記錄指針移到首記錄上
CmdFirst.Enabled=False
CmdPre.Enabled=FalseEndIfLabel6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCountEndSub41PrivateSubCmdNext_Click()Adodc1.Recordset.MoveNext'記錄指針移到下一條記錄CmdFirst.Enabled=TrueCmdPre.Enabled=TrueIfAdodc1.Recordset.EOFThen'如果記錄指針移到了末記錄之后
Adodc1.Recordset.MoveLast'則記錄指針移到末記錄上
CmdNext.Enabled=False
CmdLast.Enabled=FalseEndIfLabel6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCountEndSub42PrivateSubCmdLast_Click()Adodc1.Recordset.MoveLast
'移到末記錄
CmdFirst.Enabled=True
CmdPre.Enabled=True
CmdNext.Enabled=False
CmdLast.Enabled=FalseLabel6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCountEndSub43PrivateSubCmdN_Click()DimnAsIntegern=Text6.TextAdodc1.Recordset.MovenLabel6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCountEndSub44(2)AddNew
方法功能:用于向數(shù)據(jù)表中增加空記錄。(3)Uptate方法功能:用來把添加的新記錄或修改的記錄保存到數(shù)據(jù)表中,該方法只能在AddNew方法被執(zhí)行之后才能執(zhí)行。45增加記錄的操作可分為以下3步:調用RecordSet
對象的AddNew
方法,增加一個空記錄,語句格式如下:
Adodc1.RecordSet.AddNew在數(shù)據(jù)綁定控件中輸入記錄值,或用代碼給字段賦值,格式如下:
Adodc1.RecordSet.Fields(“字段名”)=值調用Update方法,將輸入的新記錄值保存到數(shù)據(jù)表中,語句格式如下:
Adodc1.RecordSet.Update(4)Delete方法功能:刪除當前記錄。使用格式:Adodc1.RecordSet.Delete46例8-3設計數(shù)據(jù)編輯窗體。該窗體具有新增記錄、刪除記錄、修改記錄、取消修改等功能。當新增記錄或修改記錄時,只要沒有單擊[確定]按鈕,單擊[取消]按鈕,可以取消上述操作。在例8-2的基礎上,增加以下功能按鈕:添加(CmdAdd):執(zhí)行記錄集的AddNew方法刪除(CmdDel):執(zhí)行記錄集的Delete方法確定(CmdOk):執(zhí)行記錄集的Update方法取消(CmdEsc):執(zhí)行數(shù)據(jù)控件的Refresh方法圖8-17例9-3運行界面47編寫代碼PrivateSubForm_Load()CmdFirst.Enabled=False'[首記錄]按鈕無效CmdPre.Enabled=False'[前移]按鈕無效CmdNext.Enabled=True'[后移]按鈕有效CmdLast.Enabled=True'[末記錄]按鈕有效CmdAdd.Enabled=True
‘[添加]按鈕有效CmdDel.Enabled=True
‘[刪除]按鈕有效CmdOk.Enabled=False
‘[確定]按鈕無效CmdEsc.Enabled=False
'[取消]按鈕無效Label6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCountEndSub48PrivateSubCmdAdd_Click()‘[添加]按鈕的單擊事件Adodc1.Recordset.AddNewCmdAdd.Enabled=FalseCmdDel.Enabled=FalseCmdOk.Enabled=TrueCmdEsc.Enabled=TrueEndSubPrivateSubCmdOk_Click()'單擊[確認]按鈕Adodc1.Recordset.UpdateCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdEsc.Enabled=FalseEndSub49PrivateSubCmdDel_Click()'單擊[刪除]按鈕x=MsgBox("確實要刪除當前記錄嗎?",vbYesNo+vbQuestion,"確認")Ifx=vbYesThen
Adodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveLastEndIfElseAdodc1.RefreshEndIfEndSub50PrivateSubCmdEsc_Click()'取消按鈕Adodc1.RefreshCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdEsc.Enabled=FalseEndSub518.3數(shù)據(jù)綁定控件的應用8.3.1數(shù)據(jù)綁定控件的概念數(shù)據(jù)綁定控件是數(shù)據(jù)顯示控件,只要將數(shù)據(jù)綁定控件綁定到ADOData控件的Recordset對象中的某個字段上,就可以顯示當前記錄的該字段的值,并且可以接受用戶對數(shù)據(jù)的修改。使用綁定控件的方法和步驟為:將綁定控件添加到窗體上,并調整大小和布局。設置控件的一般屬性。設置控件的DataSource屬性,即綁定到ADOData控件。設置控件的DataField屬性,即綁定到ADOData控件的記錄集對象(Recordset)的某個字段上。注意:數(shù)據(jù)綁定控件的DataSource屬性在運行時是不可改的,所以不能在運行程序時通過代碼設置該屬性。52【例8.4】設計含有學生照片字段的學生信息編輯窗體。在以前建立的學生信息表中增加“照片”字段。每個學生的照片以圖片文件形式存放在磁盤中,圖片文件名及其所在的路徑(位置)存放在學生信息表中的照片字段中,所以該字段的類型設為varchar型。本題采用Image顯示照片,因為將Image控件的Stretch屬性設為True,可以自動調整圖片的大小以適應Image控件邊框的大小。用Image或Picture控件顯示圖片的方法:Image1.Picture=LoadPicture(圖片文件名)Picture1.Picture=LoadPicture(圖片文件名)53將該圖片加載到Image1上,可執(zhí)行如下語句:Image1.Picture=LoadPicture("d:\lzw\phot\face01.jpg")若要清空圖象框,即Image1中不顯示圖片,可執(zhí)行如下語句:Image1.Picture=LoadPicture()如果要將存放在數(shù)據(jù)表中“照片”字段的圖片文件裝載到Picture1上顯示出來,可執(zhí)行如下語句:Picture1.Picture=LoadPicture(Adodc1.RecordSet.Fields("照片"))54設計過程如下:(1)設計界面如圖8.18所示。圖8.18例8.4的設計界面增加了一個Image1,用于顯示照片;增加“瀏覽…”按鈕,用于在錄入照片時,顯示“打開文件”對話框,以便用戶選擇圖片文件;增加CommanDialog控件,用于提供“打開文件”對話框。55(2)設置新增控件的屬性如表所示??丶麑傩悦麑傩灾蛋粹oCmdFindCaption瀏覽…圖像框Image1stretchTrueBorderStyle1-FixedSingle(單邊框)通用對話框Cdialog1Caption打開文件56(3)編寫代碼如下:PrivateSubForm_Load()CmdFirst.Enabled=FalseCmdPre.Enabled=FalseCmdNext.Enabled=TrueCmdLast.Enabled=TrueAdodc1.Recordset.MoveFirstCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdEsc.Enabled=FalseLabel6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"_&Adodc1.Recordset.RecordCountImage1.Picture=LoadPicture(Adodc1.Recordset.Fields("照片"))'顯示照片CmdFind.Visible=False'[瀏覽…]按鈕不可見EndSub57'單擊“添加”按鈕的代碼PrivateSubCmdAdd_Click()Adodc1.Recordset.AddNewCmdAdd.Enabled=FalseCmdDel.Enabled=FalseCmdOk.Enabled=TrueCmdEsc.Enabled=TrueImage1.Picture=LoadPicture()'清空圖像框CmdFind.Visible=True'[瀏覽…]按鈕可見EndSub58‘單擊[瀏覽…]按鈕的代碼:PrivateSubCmdFind_Click()CDialog1.ShowOpen'顯示“打開文件”對話框Adodc1.Recordset.Fields("照片")=CDialog1.FileName'選中的文件名送數(shù)據(jù)表中Image1.Picture=LoadPicture(Adodc1.Recordset.Fields("照片"))'顯示照片EndSub59PrivateSubCmdOk_Click()'單擊“確認”按鈕的代碼Adodc1.Recordset.UpdateCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdEsc.Enabled=FalseCmdFind.Visible=FalseLabel6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&_Adodc1.Recordset.RecordCountEndSub60PrivateSubCmdFirst_Click()'單擊“首記錄”按鈕的代碼Adodc1.Recordset.MoveFirstCmdFirst.Enabled=FalseCmdPre.Enabled=FalseCmdNext.Enabled=TrueCmdLast.Enabled=TrueImage1.Picture=LoadPicture(Adodc1.Recordset.Fields("照片"))Label6.Caption="記錄:"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCountEndSub61“刪除”、“取消”按鈕的單擊事件過程代碼與例8.3相同。其余移動記錄指針的按鈕單擊事件過程代碼與例8.3相比,都增加了顯示照片的語句:Image1.Picture=LoadPicture(Adodc1.Recordset.Fields("照片"))運行程序,當單擊各移動按鈕時,學生記錄改變,照片也隨之改變。當單擊“添加”按鈕時,所有文本框及圖像框清空,表示空記錄,供用戶輸入新記錄數(shù)據(jù),此時“瀏覽…”按鈕可見,單擊“瀏覽…”按鈕,出現(xiàn)“打開文件”對話框,用戶可在其中選擇圖片文件,加載到圖像框中,單擊“確定”按鈕,則新錄入的數(shù)據(jù)及圖片文件名保存到數(shù)據(jù)表中。628.3.2List控件和Combo控件的應用在設計數(shù)據(jù)錄入窗體時,有的字段數(shù)據(jù)取值范圍很小,為了錄入方便并且保證該字段數(shù)據(jù)的標準性,可以使用列表框或組合下拉列表框為用戶提供可選的輸入項。例如,將例8-3中的錄入性別字段的文本框Text3刪除,改用Combo控件,控件的名稱用默認名Combo1,并綁定到Adodc1(已連接到學生信息表)的性別字段,即設置Combo1的屬性DataSource為:Adodc1DataField為:性別。63在窗體的Form_Load()事件中,用Combo1的AddItem方法,將“男”、“女”兩項添加到Combo1中,代碼如下:PrivateSubForm_Load()Combo1.AddItem"男"Combo1.AddItem"女"EndSub運行界面如圖所示。圖8-18用Combo控件顯示或輸入性別字段648.3.3DataList控件和DataCombo控件的應用該兩個控件屬于ActiveX控件,不在標準工具箱中,需要添加到工具箱中。添加控件到工具箱中的方法如下:執(zhí)行菜單[工程]\[部件]命令,選中“MicrosoftDataListControls6.0”,即可見DataList和DataCombo兩個控件的圖標出現(xiàn)在工具箱中。DataList和DataCombo控件的作用是在錄入數(shù)據(jù)時,給用戶提供輸入選項列表。與List和Combo不同的是,DataList和DataCombo這兩個控件中的選項字符串是通過其所綁定的數(shù)據(jù)表字段的內容自動添加的。65主要屬性有:DataSource:實際要錄入的記錄源的ADOData控件名。DataField:實際要錄入數(shù)據(jù)的字段名。RowSource:用于生成控件列表信息的ADOData控件名稱。ListField:用于填充列表框的由RowSource指定的記錄集中的字段名。BoundColumn:由RowSource指定記錄集的實際要錄入的字段名,該字段名是與DataSource相關聯(lián)的字段(一般與DataField的相同)??丶淖饔茫航柚赗owSource的ListField字段,為DataSource的DataField字段輸入數(shù)據(jù)。66例8-5設計課程信息表的編輯窗體,實現(xiàn)對課程信息表錄入數(shù)據(jù)。要求:對課程信息表進行錄入時,輸入“教師編號”時,借助“教師信息表”中的“姓名”字段進行輸入。即“教師編號”字段的輸入控件采用DataCombo,其中列出的是現(xiàn)有教師的姓名,供用戶選擇錄入,雖然表面看錄入的是姓名,而實際錄入課程信息表的是該教師的教師編號。67課程編號課程名稱學時學分教師編號1001C語言505010011002數(shù)據(jù)結構606030021003數(shù)據(jù)庫404030021004操作系統(tǒng)505030041005機械設計707100021006機械原理40410001教師編號姓名性別職稱單位01001鄭虹女副教授機械學院01002孫燕女講師機械學院03001趙博男教授信息學院03002王偉男教授信息學院03003王剛男副教授信息學院03004孫麗女講師信息學院表8-5教師信息表表8-6課程信息表DataSourceDataFieldRowSourceListFieldBoundColumn68(1)設計界面如圖8-19所示(2)利用Adodc1的屬性頁,將Adodc1連接到數(shù)據(jù)源cjgl的課程信息表上;將Adodc2連接到數(shù)據(jù)源cjgl的教師信息表上。圖8-19設計界面69連接完數(shù)據(jù)源的Adodc1和Adodc2的屬性值結果如下表所示??丶麑傩悦麑傩灾?/p>
Adodc1ConnectionStringDSN=cjglPasswordsaCommandType2-adCmdTableRecordSource課程信息表UserNamesaVisibleFalseAdodc2ConnectionStringDSN=cjglCommandType2-adCmdTableRecordSource教師信息表PasswordsaUserNamesaVisibleFalse70設置DataCombo1控件的屬性如下:
DataSourceAdodc1
DataField
教師編號
RowSourceAdodc2
ListField
姓名
BoundColumn
教師編號如此設置DataCombo1的屬性之后,運行界面如圖8-20,可見DataCombo1控件中填充的各項是教師信息表的姓名字段的數(shù)據(jù)。但實際要錄入到課程信息表的是教師編號字段。圖8-20運行界面71(3)對各按鈕編程如下:PrivateSubCmdAdd_Click()‘[增加]按鈕單擊事件Adodc1.Recordset.AddNewCmdAdd.Enabled=FalseCmdDel.Enabled=FalseCmdOK.Enabled=TrueCmdCancel.Enabled=TrueEndSubPrivateSubCmdOK_Click()‘[確定]按鈕單擊事件Adodc1.Recordset.UpdateCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOK.Enabled=FalseCmdCancel.Enabled=FalseEndSub72‘[取消]按鈕單擊事件PrivateSubCmdCancel_Click()Adodc1.RefreshCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOK.Enabled=FalseCmdCancel.Enabled=FalseEndSub73PrivateSubCmdDel_Click()'單擊[刪除]按鈕x=MsgBox("確實要刪除當前記錄嗎?",vbYesNo+vbQuestion,"確認")Ifx=vbYesThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveLastEndIfElseAdodc1.RefreshEndIfEndSub748.3.4DataGrid控件的應用DataGrid控件可以用表格形式顯示記錄集數(shù)據(jù)。只要將DataGrid控件綁定到ADOData控件上,就可以將ADOData控件所連接的記錄源中的數(shù)據(jù)自動顯示到DataGrid表格中。將DataGrid控件加載到VB工具箱中的方法如下:執(zhí)行[工程]\[部件]命令,打開[部件]對話框;在[控件]選項卡中,選中“MicrosoftDataGridControl6.0”;單擊[確定]按鈕,即可將控件加到了工具箱中。75DataGrid的主要屬性如下:Caption:設置表格的標題文字。HeadFont:設置標題的字體。Font:設置表格顯示的字體。DataSource:數(shù)據(jù)源屬性。指定需要綁定的ADOData控件的名稱。Col:表示當前列號(從0開始)Row:表示當前行號(即當前記錄號,從0開始)Text:存放選中單元格的文本AllowAddNew:指出是否允許向DataGrid控件所連接的記錄集中增加新記錄。True:允許。AllowDelete:指出是否允許在DataGrid控件所連接的記錄集中刪除記錄。True:允許。AllowUpdate:指出是否允許在DataGrid控件所連接的記錄集中修改記錄。True:允許。76例8-6DataGrid控件與Adodc1綁定,顯示教師信息表的所有記錄。要求:運行時,顯示課程信息編輯窗體(如圖9-21所示),當錄入教師姓名時,若要了解教師的詳細信息,可單擊[教師信息]按鈕,打開Form2(如圖9-22所示),在Form2中用表格形式瀏覽所有教師的基本信息,在瀏覽完教師基本信息后,單擊[返回]按鈕,則關閉瀏覽窗體,顯示編輯窗體。設計過程如下:(1)設計界面在例8-4的工程中,新添加一個窗體Form2,用來以表格形式顯示教師表的所有記錄。在窗體Form2中添加DataGrid1和Adodc1控件,添加一個按鈕,名稱為CmdBack,標題為:返回(如圖8-22)。在Form1中添加一個按鈕,名稱為Cmd1,標題為:教師信息(見圖8-21)。77圖8-21在Form1中添加[教師信息]按鈕圖8-22用DataGrid顯示教師信息表運行界面78(2)設置控件的屬性設置Form2中的Adodc1控件的屬性如下:鼠標右擊Adodc1控件,打開屬性頁,在[通用]選項卡中選擇ODBC數(shù)據(jù)資源名稱為cjgl;在[身份驗證]選項卡中,輸入用戶名:sa、密碼:sa;在[記錄源]選項卡中,選擇命令類型:2-adCmdTable、在[表或存儲過程名]中選擇“教師信息表”,然后單擊[應用]按鈕,再單擊[確定]按鈕,關閉該屬性對話框。Visible:False(運行時不可見)。設置Form2中的DataGrid1的屬性如下:數(shù)據(jù)源DataSource:Adodc1總標題Caption:教師信息標題的字體HeadFont:宋體、五號、加粗79(3)編寫代碼在Form1中單擊[教師信息]按鈕時,顯示Form2,編寫代碼如下:
PrivateSubCmd1_Click()Form2.ShowEndSub在Form2中單擊[返回]按鈕時,關閉Form2,編寫代碼如下:PrivateSubCmdBack_Click()Form1.ShowUnloadMeEndSub80例8-7設計可以顯示教師信息,并且當單擊DataGrid1選中教師表的某行記錄時,在DataGrid2控件中顯示該教師所教的課程信息。(1)設計界面添加控件到窗體上,如圖8-23。圖8-23例8-6界面設計圖8-24例8-6運行界面81(2)設置控件的屬性設置Adodc1控件的屬性如下:Visible:False(運行時不可見)。連接到教師信息表上設置Adodc2控件的屬性如下:與Adodc1控件的屬性設置基本相同,所不同的是[記錄源]的設置:在[記錄源]選項卡中,選則命令類型:1-adCmdText,在[命令文本(SQL)]框中輸入SQL語句:
Select*From課程信息表
82DataGrid1與Adodc1綁定,顯示教師表記錄,設置屬性如下:
DataSource:Adodc1Caption:教師信息HeadFont:宋體、五號、加粗DataGrid2與Adodc2綁定,顯示課程表信息,設置屬性如下:DataSource:Adodc2Caption:課程信息HeadFont:宋體、五號、加粗83(3)編寫程序PrivateSubDataGrid1_Click()DimSQLStrAsStringSQLStr="Select*From課程信息表Where教師編號='"&Adodc1.Recordset.Fields("教師編號")&"'"Adodc2.RecordSource=SQLStr
'設置Adodc2連接的記錄源Adodc2.RefreshEndSub運行程序,在DataGrid1中,單擊選擇某行記錄,則可在下邊的DataGrid2中顯示對應教師的講課情況(結果見圖8-24)。84例8-8編寫一個可瀏覽教師表數(shù)據(jù),并可修改教師表數(shù)據(jù)的程序。要求:在Form1中(如圖8-25),顯示教師信息表格;當選中某行記錄并單擊[修改數(shù)據(jù)]按鈕時,將打開Form2(如圖8-26所示),顯示該行記錄的信息,并可以修改數(shù)據(jù)。圖8-25教師信息表界面圖8-26信息修改界面85(1)設計界面及設置屬性在Form1中,添加一個DataGrid1和Adodc1。設置屬性如下:將Adodc1連接到cjgl數(shù)據(jù)源的“教師信息表”,Visible:False(運行時Adodc1不可見);將DataGrid1的DataSource設為Adodc1,即綁定到Adodc1上,并在DataGrid1的屬性頁中的[通用]選項卡中,將[允許更新]、[允許刪除]復選框設為不選中狀態(tài)(即不允許在DataGrid1中修改數(shù)據(jù))。在Form1中,添加1個按鈕,名稱為CmdEdit,Caption設為“修改數(shù)據(jù)”。86Form2中,添加5個標簽,用于顯示教師信息表的字段名,2個文本框Text1、Text2用于顯示在Form1中選中的記錄的教師編號和姓名。性別、職稱和單位分別用組合列表框Combo1、Combo2、Combo3顯示,這三個組合列表框也提供輸入值的選項列表。Form2中控件的屬性設置如表??丶麑傩悦麑傩灾悼丶麑傩悦麑傩灾礣ext1Text空CmdUpdateCaption更新Text2Text空CmdBackCaption返回Combo1List男女Combo2List教授副教授講師Combo3List信息學院機械學院經(jīng)貿學院外語學院87(2)程序設計如下Form1中的代碼:PrivateSubCmdEdit_Click()‘[修改數(shù)據(jù)]按鈕的單擊事件'判斷是否選中了表中的一行:IfAdodc1.Recordset.EOFOrAdodc1.Recordset.BOFThen
MsgBox"請選擇要修改的行"ExitSubEndIfForm2.Show'顯示Form2Form1.Hide'隱藏Form1EndSub88Form2中的代碼如下:PrivateSubForm_Load()’顯示在Form1中選擇的當前記錄值Text1.Text=Form1.Adodc1.Recordset.Fields("教師編號")Text2.Text=Form1.Adodc1.Recordset.Fields("姓名")Combo1.Text=Form1.Adodc1.Recordset.Fields("性別")Combo2.Text=Form1.Adodc1.Recordset.Fields("職稱")Combo3.Text=Form1.Adodc1.Recordset.Fields("單位")EndSub89PrivateSubCmdUpdate_Click()’Form2中[更新]按鈕的單擊事件Form1.Adodc1.Recordset.Fields("教師編號")=Text1.TextForm1.Adodc1.Recordset.Fields("姓名")=Text2.TextForm1.Adodc1.Recordset.Fields("性別")=Combo1.TextForm1.Adodc1.Recordset.Fields("職稱")=Combo2.TextForm1.Adodc1.Recordset.Fields("單位")=Combo3.TextForm1.Adodc1.Recordset.UpdateForm1.Adodc1.RefreshEndSub90PrivateSubCmdBack_Click()‘Form2中[返回]按鈕的單擊事件UnloadForm2‘卸載Form2Form1.Show‘顯示Form1EndSub918.4在ADOData控件中使用SQL語句進行查詢在數(shù)據(jù)庫應用程序設計中,經(jīng)常需要查找滿足一定條件的記錄集,這就是查詢操作。利用SQL語言中的SELECT語句,可以實現(xiàn)查詢。在ADOData控件中使用Select語句查詢的步驟如下(1)給出Select語句字符串(2)將Select語句字符串賦給ADOData控件的RecordSource屬性(3)執(zhí)行ADOData控件的Refresh方法。例如在文本框中輸入要查詢的學生姓名,查詢該生的基本信息的SQL語句應為:Str="Select*From學生信息表Where姓名='"&Text1&"'"Adodc1.RecordSource=StrAdodc1.Refresh92例8-9根據(jù)輸入的姓名,查詢教師講課信息。設計窗體如圖8-27。要求:在Text1中輸入姓名,單擊[查詢]按鈕,顯示該教師的講課情況如圖8-28。注意表中除了顯示課程信息表的所有字段,還顯示教師的“姓名”字段(該字段屬于教師信息表),所以要用到兩表查詢語句。圖8-27查詢界面的設計圖8-28查詢程序的運行結果93添加控件,并設置屬性如下:設置Adodc1控件的屬性Visible:False鼠標右擊Adodc1控件,打開屬性頁,在[通用]選項卡中選擇ODBC數(shù)據(jù)資源名稱為cjgl;在[記錄源]選項卡中,選則命令類型:
1-adCmdText,在[命令文本(SQL)]中輸入SQL語句:
Select*From教師信息表DataGrid1與Adodc1綁定,設置屬性如下:
DataSource:Adodc1Caption:教師信息表94文本框的屬性如下:名稱:Text1Text:清空標簽的屬性:名稱:Label1Caption:輸入姓名按鈕的屬性如下:名稱:Cmd1Caption:查詢95編寫代碼:'[查詢]按鈕的單擊事件:PrivateSubCmd1_Click()DimstrAsStringstr="Select教師信息表.姓名,課程信息表.*From課程信息表Join教師信息表
"str=str&"On教師信息表.教師編號=課程信息表.教師編號
"str=str&"Where教師信息表.姓名='"&Text1&"'"Adodc1.RecordSource=strAdodc1.RefreshEndSub96此題若改為“模糊查詢”,只需將代碼中的查詢語句的條件改為:"Where教師信息表.姓名Like'"&Text1&"%'"這時運行程序,在文本框中只要輸入姓(例如:王),就可以在表格中顯示所有姓王的教師的講課信息。97例8-10設計能夠選擇多種條件的查詢窗體。要求:在例8-9的基礎上做進一步的改進,可以選擇按教師姓名、教師編號、課程名稱、課程編號、學時等條件,查詢課程信息。查詢結果中包含:課程信息表的所有字段、教師信息表的“姓名”字段。(1)設計界面如圖8-29所示。其中組合列表框Combo1中添加查詢條件的字段名,供用戶選擇。圖8-29查詢界面的設計圖8-30查詢程序的運行結果98(2)設計代碼PrivateSubForm_Load()Combo1.AddItem"姓名"'為組合列表框添加各選項Combo1.AddItem"教師編號"Combo1.AddItem"課程名稱"Combo1.AddItem"課程編號"Combo1.AddItem"學時"Combo1.Text="姓名"'讓組合框初始選中"姓名"項Text1.Text=""'清空文本框EndSub99PrivateSubCmd1_Click()DimstrAsStringstr="Select教師信息表.姓名,課程信息表.*From課程信息表
Join教師信息表
"
str=str&"On教師信息表.教師編號=課程信息表.教師編號
"
str=str&"Where課程信息表."&Combo1.Text&"Like'"&Text1&"%'"Adodc1.RecordSource=strAdodc1.RefreshEndSub本例實現(xiàn)模糊查詢,運行程序時,選擇按“課程名稱”查詢,輸入查詢信息:機械,結果搜索到課程名稱以“機械”開頭的課程信息,如圖8-30。100例8-11設計登錄窗體。要求:將該登錄界面設為啟動窗體,當密碼輸入正確時,才顯示查詢窗體。在Text1中輸入用戶名,在Text2中輸入密碼,若正確,則打開Form1,否則提示密碼錯誤。允許輸入3次。(1)設計界面在例8-8的基礎上,添加一個窗體Form2,設計登錄界面如圖8-31所示。圖8-31登錄窗體101添加窗體的方法:執(zhí)行菜單:[工程]\[添加窗體]命令,在[新建]選項卡中,選中“窗體”并單擊[打開]按鈕,即可在本工程中添加Form2。設啟動窗體的方法:執(zhí)行菜單[工程]\[工程屬性],在打開的對話框中,將啟動對象設為Form2。(2)設計密碼表在“成績管理”數(shù)據(jù)庫中添加一個密碼表,表結構如表8-9,在表中存放一組用戶名和密碼如表8-10。字段名數(shù)據(jù)類型長度用戶名char10密碼char6用戶名密碼lzw111111表8-9密碼表的表結構表8-10密碼表102(3)設置各控件的屬性Adodc1連接到密碼表,方法同前;注意在[記錄源]選項卡中,選則命令類型:1-adCmdText,在[命令文本(SQL)]中輸入SQL語句:select*from密碼表Vsible:False(運行時不可見)。文本框Text1的屬性:Text:清空。文本框Text2的屬性:Text:清空,PasswordChar:*注意:Text1和Text2不要綁定到Adodc1上,以免剛啟動登錄窗體時,就顯示密碼表的內容。[登錄]按鈕的屬性:名稱:CmdLand,Caption:登錄[取消]按鈕的屬性:名稱:CmdCancel,Caption:取消103(4)編寫程序[登錄]按鈕單擊事件的代碼如下:DimmiCountAsInteger‘用于記錄輸入密碼次數(shù)PrivateSubCmdLand_Click()DimsqlstrAsStringsqlstr="Select*From密碼表Where用戶名='"&Text1&"'"Adodc1.RecordSource=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國非標壓力容器行業(yè)發(fā)展狀況及營銷戰(zhàn)略研究報告
- 2025-2030年中國表演服市場創(chuàng)新前景分析及投資預測報告
- 2025-2030年中國薺藍油市場競爭格局規(guī)劃研究報告
- 2025-2030年中國自助回單打印終端市場發(fā)展狀況及營銷戰(zhàn)略研究報告
- 2025-2030年中國羽毛(絨)加工業(yè)市場規(guī)模分析及發(fā)展建議研究報告
- 2025-2030年中國粉末冶金模產業(yè)運行狀況及發(fā)展趨勢預測報告
- 2025-2030年中國空氣凈化系統(tǒng)工程行業(yè)發(fā)展規(guī)模規(guī)劃研究報告
- 2025-2030年中國電腦機箱市場現(xiàn)狀分析規(guī)劃研究報告
- 株洲師范高等??茖W校《車輛動力學與強度》2023-2024學年第二學期期末試卷
- 重慶青年職業(yè)技術學院《電力電子技術及應用課程設計》2023-2024學年第二學期期末試卷
- 社團活動情況登記表
- 2025屆湖北武漢武昌區(qū)武漢大學附屬中學數(shù)學高三上期末達標測試試題含解析
- 山東省濰坊市2023-2024學年高二下學期期末測試+英語試卷
- 生涯規(guī)劃與就業(yè)創(chuàng)業(yè)全套課件電子教案板
- 湘少版六年級英語下冊《全冊課件》
- 2024-2030年中國護眼臺燈行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 《土壤肥料學通論》課程教學大綱
- 第十四屆全國交通運輸行業(yè)職業(yè)技能競賽(公路收費及監(jiān)控員)賽項題庫-下(多選題-共3部分-2)
- 集合功能的測定(雙眼視檢查)
- 2024年農村自建房裝修合同
- 2024年《高等教育心理學》考前輔導必背習題庫(300題)
評論
0/150
提交評論