




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章
VBA數(shù)據(jù)庫(kù)編程主編:潘惠勇
夏敏捷Access數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用1教學(xué)目標(biāo)了解數(shù)據(jù)庫(kù)引擎的作用。了解Access2016訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的幾種接口技術(shù)。了解DAO數(shù)據(jù)庫(kù)編程方法。掌握ADO數(shù)據(jù)庫(kù)編程的方法。2第8章-VBA數(shù)據(jù)庫(kù)編程第8章VBA數(shù)據(jù)庫(kù)編程8.1VBA數(shù)據(jù)庫(kù)編程相關(guān)基礎(chǔ)知識(shí)8.2
數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象8.3ActiveX數(shù)據(jù)對(duì)象8.4特殊域聚合函數(shù)和RunSQL方法8.5綜合案例3第8章-VBA數(shù)據(jù)庫(kù)編程8.1VBA數(shù)據(jù)庫(kù)編程相關(guān)基礎(chǔ)知識(shí)8.1.1VBA數(shù)據(jù)庫(kù)應(yīng)用程序一般框架8.1.2VBA數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)接口8.1.3VBA訪(fǎng)問(wèn)的數(shù)據(jù)類(lèi)型4第8章-VBA數(shù)據(jù)庫(kù)編程8.1.1VBA數(shù)據(jù)庫(kù)應(yīng)用程序一般框架它由3部分組成:
應(yīng)用程序界面是用戶(hù)和應(yīng)用程序的接口,用來(lái)輸入和展現(xiàn)數(shù)據(jù)信息;
數(shù)據(jù)庫(kù)負(fù)責(zé)數(shù)據(jù)的存儲(chǔ);
數(shù)據(jù)庫(kù)引擎實(shí)際上是一組動(dòng)態(tài)鏈接庫(kù)(DLL),當(dāng)程序運(yùn)行時(shí)被連接到VBA程序而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的訪(fǎng)問(wèn)功能5第8章-VBA數(shù)據(jù)庫(kù)編程8.1.2VBA數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)接口(1)開(kāi)放數(shù)據(jù)庫(kù)互連應(yīng)用編程接口(OpenDatabaseConnectivityAPI,ODBCAPI)(2)數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象(DataAccessObject,DAO)(3)ActiveX數(shù)據(jù)對(duì)象(ActiveXDataObjects,ADO)6第8章-VBA數(shù)據(jù)庫(kù)編程8.1.3VBA訪(fǎng)問(wèn)的數(shù)據(jù)類(lèi)型VBA訪(fǎng)問(wèn)的數(shù)據(jù)庫(kù)有3種:(1)本地?cái)?shù)據(jù)庫(kù)本地?cái)?shù)據(jù)庫(kù)文件格式與MicrosoftAccess相同。Jet引擎直接創(chuàng)建和操作這些數(shù)據(jù)庫(kù)。(2)外部數(shù)據(jù)庫(kù)
訪(fǎng)問(wèn)符合“索引順序訪(fǎng)問(wèn)文件方法(ISAM)”數(shù)據(jù)庫(kù),包括dBaseIII、dBaseIV、Foxpro2.0和2.5以及Paradox3.x和4.x。(3)ODBC數(shù)據(jù)庫(kù)
訪(fǎng)問(wèn)符合ODBC標(biāo)準(zhǔn)的客戶(hù)機(jī)/服務(wù)器數(shù)據(jù)庫(kù),如MicrosoftSQLServer。7第8章-VBA數(shù)據(jù)庫(kù)編程8.2數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象8.2.1DAO庫(kù)的引用方法8.2.2DAO模型層次結(jié)構(gòu)8.2.3利用DAO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的一般步驟8第8章-VBA數(shù)據(jù)庫(kù)編程8.2.1DAO庫(kù)的引用方法
將“MicrosoftOffice16.0AccessdatabaseengineObjectLibrary”選項(xiàng)選中,在Windows10環(huán)境下,默認(rèn)該項(xiàng)引用是選中的。9第8章-VBA數(shù)據(jù)庫(kù)編程8.2.2DAO模型層次結(jié)構(gòu)10第8章-VBA數(shù)據(jù)庫(kù)編程①DBEngine對(duì)象:表示數(shù)據(jù)庫(kù)引擎,包含并控制模型中的其他對(duì)象。②WorkSpace對(duì)象:表示工作區(qū)。③DataBase對(duì)象:表示操作的數(shù)據(jù)庫(kù)對(duì)象。④RecordSet對(duì)象:表示數(shù)據(jù)操作返回的記錄集,可以來(lái)自于表、查詢(xún)或SQL語(yǔ)句的運(yùn)行結(jié)果。⑤Field對(duì)象:代表在數(shù)據(jù)集中的某一列。⑥QueryDef對(duì)象:表示數(shù)據(jù)庫(kù)查詢(xún)信息。⑦Error對(duì)象:包含使用DAO對(duì)象產(chǎn)生的錯(cuò)誤信息。8.2.3利用DAO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的一般步驟(1)首先定義各個(gè)對(duì)象變量DimwsAsDAO.Workspace '定義Workspace對(duì)象DimdbAsDAO.Database '定義數(shù)據(jù)庫(kù)對(duì)象DimrsAsDAO.Recordset '定義記錄集對(duì)象(2)為各個(gè)對(duì)象賦值Setws=DBEngine.Workspaces(0) '將默認(rèn)工作空間賦值給wsSetdb=ws.OpenDatabase("需要打開(kāi)的數(shù)據(jù)庫(kù)") '打開(kāi)指定的數(shù)據(jù)庫(kù)Setrs=db.OpenRecordset(<表、查詢(xún)、SQL語(yǔ)句>) '打開(kāi)指定記錄集并賦值給rs11第8章-VBA數(shù)據(jù)庫(kù)編程3)一般利用循環(huán)操作記錄集DoWhileNotrs.EOF...rs.MoveNextLoop(4)關(guān)閉并回收對(duì)象所占內(nèi)存rs.Close '關(guān)閉記錄集db.Close '關(guān)閉數(shù)據(jù)庫(kù)Setrs=Nothing '釋放rs對(duì)象內(nèi)存空間Setdb=Nothing '釋放db對(duì)象內(nèi)存空間12第8章-VBA數(shù)據(jù)庫(kù)編程編輯、添加、刪除、移動(dòng)記錄操作13第8章-VBA數(shù)據(jù)庫(kù)編程【例8.1】利用DAO對(duì)象操作“學(xué)籍管理”數(shù)據(jù)庫(kù),將“學(xué)生”表中非漢族學(xué)生的民族修改為少數(shù)民族14第8章-VBA數(shù)據(jù)庫(kù)編程分析:利用DAO對(duì)象打開(kāi)“學(xué)生”表,從第一條記錄開(kāi)始判斷該學(xué)生是否為漢族,如果不是,則將其“民族”設(shè)置為“少數(shù)民族”,然后將記錄指針向下移動(dòng)一條記錄,繼續(xù)判斷,直至記錄指針移動(dòng)到記錄集的末尾PublicSubDAOTest()DimwsAsDAO.Workspace '定義Workspace對(duì)象DimdbAsDAO.Database '定義數(shù)據(jù)庫(kù)對(duì)象DimrsAsDAO.Recordset '定義記錄集對(duì)象Setws=DBEngine.Workspaces(0) '將默認(rèn)工作空間賦值給ws'打開(kāi)制定的數(shù)據(jù)庫(kù)Setdb=ws.OpenDatabase("F:\寫(xiě)書(shū)實(shí)例\學(xué)籍管理.accdb")Setrs=dB.OpenRecordset("學(xué)生") '打開(kāi)學(xué)生表,并將記錄集賦值給rs'循環(huán)操作記錄集DoWhileNotrs.EOFIfrs.Fields("mz")<>"漢族"Thenrs.Editrs.Fields("mz")="少數(shù)民族"rs.UpdateEndIfrs.MoveNextLooprs.Close '關(guān)閉記錄集dB.Close '關(guān)閉數(shù)據(jù)庫(kù)Setrs=Nothing '釋放rs對(duì)象內(nèi)存空間Setdb=Nothing '釋放db對(duì)象內(nèi)存空間EndSub15第8章-VBA數(shù)據(jù)庫(kù)編程8.3ActiveX數(shù)據(jù)對(duì)象8.3.1ADO庫(kù)的引用方法8.3.2ADO模型層次結(jié)構(gòu)8.3.3主要ADO對(duì)象的使用16第8章-VBA數(shù)據(jù)庫(kù)編程8.3.1ADO庫(kù)的引用方法其引用方法和DAO庫(kù)的操作方法相同,當(dāng)出現(xiàn)如圖8.2所示的界面時(shí),選中列表框中“MicrosoftActiveDataObjects2.1Library”前面的選項(xiàng)17第8章-VBA數(shù)據(jù)庫(kù)編程8.3.2ADO模型層次結(jié)構(gòu)18第8章-VBA數(shù)據(jù)庫(kù)編程(1)Connection對(duì)象用來(lái)建立與數(shù)據(jù)庫(kù)的連接,相當(dāng)于在應(yīng)用程序和數(shù)據(jù)庫(kù)中建立一條數(shù)據(jù)傳輸線(xiàn)。(2)Command對(duì)象用來(lái)對(duì)數(shù)據(jù)庫(kù)執(zhí)行命令,如查詢(xún)、添加、刪除、修改記錄。(3)RecordSet對(duì)象用來(lái)得到從數(shù)據(jù)庫(kù)返回的記錄集。這個(gè)記錄集是一個(gè)連接的數(shù)據(jù)庫(kù)中的表,或者是Command對(duì)象執(zhí)行結(jié)果返回的記錄集。所有對(duì)數(shù)據(jù)的操作幾乎都是在RecordSet對(duì)象中完成的,可以完成指定行、移動(dòng)行、添加、刪除和修改記錄。(4)Field對(duì)象表示記錄集中的字段數(shù)據(jù)信息。(5)Error對(duì)象表示程序出錯(cuò)時(shí)的擴(kuò)展信息。8.3.3主要ADO對(duì)象的使用1.Connection對(duì)象定義一個(gè)Connection對(duì)象的方法如下:DimcnnAsADODB.ConnectionConnection對(duì)象必須實(shí)例化后才可以使用,實(shí)例化方法如下:Setcnn=NewADODB.Connection19第8章-VBA數(shù)據(jù)庫(kù)編程ConnectionString屬性該屬性指示用于建立到數(shù)據(jù)源的連接信息。常見(jiàn)的設(shè)置方法如下。
設(shè)置數(shù)據(jù)庫(kù)提供者的名稱(chēng):cnn.Provider="Microsoft.ACE.OLEDB.16.0"'Access2016數(shù)據(jù)庫(kù)提供者名稱(chēng)
指定連接的數(shù)據(jù)庫(kù)名稱(chēng):cnn.ConnectionString="DataSource=F:\數(shù)據(jù)庫(kù)實(shí)例\學(xué)籍管理.accdb"也可以通過(guò)DefaultDatabase屬性指定Connection對(duì)象的默認(rèn)數(shù)據(jù)庫(kù),如要連接“學(xué)籍管理”數(shù)據(jù)庫(kù),可以設(shè)置DefaultDatabase的屬性值為:cnn.DefaultDatabase="F:\數(shù)據(jù)庫(kù)實(shí)例\學(xué)籍管理.accdb"20第8章-VBA數(shù)據(jù)庫(kù)編程O(píng)pen方法可以調(diào)用open方法打開(kāi)連接,方法如下:cnn.open如果Connection對(duì)象沒(méi)有設(shè)置相關(guān)屬性,也可以利用帶參數(shù)選項(xiàng)的open方法打開(kāi)連接,open方法的語(yǔ)法格式為:連接對(duì)象名.OpenConnectionString,UserId,Password,Options例如:cnn.Open"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=F:\數(shù)據(jù)庫(kù)實(shí)例\學(xué)籍管理.accdb"21第8章-VBA數(shù)據(jù)庫(kù)編程Close方法當(dāng)連接不使用時(shí),一定要斷開(kāi)連接,比如斷開(kāi)cnn對(duì)象的連接,其方法為:cnn.close22第8章-VBA數(shù)據(jù)庫(kù)編程【例8.2】利用ADO編程連接“學(xué)籍管理”數(shù)據(jù)庫(kù)實(shí)例。在標(biāo)準(zhǔn)模塊下建立一個(gè)過(guò)程MyConnection,代碼如下:PublicSubMyConnection()DimcnnAsADODB.Connection'聲明Connection對(duì)象Setcnn=NewADODB.Connection'實(shí)例化該對(duì)象'flag_begincnn.Provider="Microsoft.ACE.OLEDB.16.0"'Access2016數(shù)據(jù)庫(kù)提供者的名稱(chēng)'指定連接的數(shù)據(jù)庫(kù)名稱(chēng)cnn.ConnectionString="DataSource=F:\數(shù)據(jù)庫(kù)實(shí)例\學(xué)籍管理.accdb"'flag_endcnn.Open'打開(kāi)連接cnn.Close'關(guān)閉連接Setcnn=Nothing'撤銷(xiāo)連接EndSub活動(dòng)連接CurrentProject.Connection,即將注釋flag_begin和flag_end之間的語(yǔ)句修改為:cnn.OpenCurrentProject.Connection23第8章-VBA數(shù)據(jù)庫(kù)編程2.Command對(duì)象ADO的Command對(duì)象用來(lái)執(zhí)行對(duì)數(shù)據(jù)源的請(qǐng)求,獲得數(shù)據(jù)集。Command對(duì)象也需要先定義,方法如下:DimcmdAsADODB.Command'聲明Command對(duì)象Setcmd=NewADODB.Command'實(shí)例化該對(duì)象Command對(duì)象常用屬性有ActiveConnection和CommandText屬性。ActiveConnection屬性用來(lái)指明Command對(duì)象所要關(guān)聯(lián)的連接對(duì)象;CommandText屬性指明查詢(xún)命令的文本內(nèi)容,可以是一個(gè)表,也可以是SQL語(yǔ)句。設(shè)置完Command對(duì)象的ActiveConnection和CommandText屬性后,最后調(diào)用Command的Execute方法返回所需要的記錄集。Execute方法的語(yǔ)法結(jié)構(gòu)如下。Setrecordset=cmd.Execute(RecordsAffected,Parameters,Options)這三個(gè)參數(shù)可以省略24第8章-VBA數(shù)據(jù)庫(kù)編程【例8.3】利用ADO編程,將學(xué)生高考成績(jī)統(tǒng)一加10分。25第8章-VBA數(shù)據(jù)庫(kù)編程分析:可以將Command對(duì)象的CommandText屬性設(shè)置為SQL語(yǔ)句,建立當(dāng)前數(shù)據(jù)庫(kù)的連接,然后執(zhí)行Command對(duì)象的無(wú)返回記錄集的Execute方法,代碼如下。PublicSubMyCommand()DimcmdAsADODB.CommandSetcmd=NewADODB.Command'將當(dāng)前連接作為cmd對(duì)象的活動(dòng)連接cmd.ActiveConnection=CurrentProject.Connection'將CommandText設(shè)置為SQL語(yǔ)句cmd.CommandText="update學(xué)生setgkcj=gkcj+10"'執(zhí)行不返回記錄集的操作cmd.ExecuteEndSub運(yùn)行該過(guò)程,然后打開(kāi)“學(xué)生”表,會(huì)發(fā)現(xiàn)高考成績(jī)已經(jīng)增加了10分。3.Recordset對(duì)象RecordSet對(duì)象是最常用的一個(gè)ADO對(duì)象,從后臺(tái)數(shù)據(jù)庫(kù)中查詢(xún)所需要的記錄就存放在記錄集中。記錄集由行和列組成,像二維表一樣,利用RecordSet對(duì)象的相關(guān)屬性和方法可以對(duì)記錄集中的數(shù)據(jù)進(jìn)行查詢(xún)、增加、修改、刪除等操作。RecordSet對(duì)象的定義如下。
DimrstAsADODB.Recordset
Setrst=NewADODB.Recordset定義完記錄集對(duì)象rst后,下面就要為對(duì)象獲取所要的記錄集。獲取的方法很多,下面介紹幾種常用的方法。26第8章-VBA數(shù)據(jù)庫(kù)編程3.Recordset對(duì)象(1)通過(guò)Connection對(duì)象的Execute方法獲得語(yǔ)法格式為:Setrecordset=Connection.Execute(CommandText,RecordsAffected,Options)參數(shù)說(shuō)明如下。CommandText:字符串值,包含要執(zhí)行的SQL語(yǔ)句、存儲(chǔ)過(guò)程、URL或提供程序特定文本,還可以使用表名稱(chēng)。RecordsAffected:可選,一個(gè)Long型變量,提供程序向其返回操作所影響的記錄數(shù)。Options:可選,長(zhǎng)整型值,用于指示提供程序評(píng)估CommandText參數(shù)的方式。PublicSubrstByConnection()DimcnnAsNewADODB.Connection '聲明的時(shí)候直接實(shí)例化對(duì)象Setcnn=CurrentProject.ConnectionDimrstAsNewADODB.Recordset '聲明的時(shí)候直接實(shí)例化對(duì)象Setrst=cnn.Execute("select*from教師") '返回記錄集Debug.Printrst.Fields(0),rst.Fields(1),rst.Fields(2)cnn.CloseEndSub該例獲取教師表中的所有數(shù)據(jù),存儲(chǔ)到記錄集rst對(duì)象中,游標(biāo)當(dāng)前處于第一條記錄,然后在立即窗口打印出該條記錄的前3個(gè)字段的信息。這里Fields是RecordSet對(duì)象下的對(duì)象集合,包括了它的所有對(duì)象,通過(guò)Fields對(duì)象可以訪(fǎng)問(wèn)記錄集中的各個(gè)字段,F(xiàn)ields(0)代表第一個(gè)字段,fields(1)代表第二個(gè)字段,依此類(lèi)推。27第8章-VBA數(shù)據(jù)庫(kù)編程3.Recordset對(duì)象(2)通過(guò)Command對(duì)象的Execute方法獲得例8.3中執(zhí)行的是Command對(duì)象的不返回記錄集的Execute方法,實(shí)際編程中通過(guò)Command對(duì)象的Execute方法返回記錄集是獲得記錄集最常用的方法。PublicSubrstByCommand()DimcnnAsNewADODB.Connection'聲明的時(shí)候直接實(shí)例化對(duì)象DimcmdAsNewADODB.CommandDimrstAsNewADODB.Recordsetcnn.Provider="Microsoft.ACE.OLEDB.16.0"cnn.ConnectionString="F:\數(shù)據(jù)庫(kù)實(shí)例\學(xué)籍管理.accdb"cnn.Opencmd.ActiveConnection=cnncmd.CommandText="select*from教師"Setrst=cmd.Execute'返回記錄集Debug.Printrst("gh"),rst("xm"),rst("xb")cnn.CloseEndSub這里通過(guò)rst("字段名")方法也可以獲得記錄集中各個(gè)字段的值。28第8章-VBA數(shù)據(jù)庫(kù)編程3.Recordset對(duì)象(3)通過(guò)Recordset對(duì)象的Open方法獲得語(yǔ)法格式為:recordset.OpenSource,ActiveConnection,CursorType,LockType,Options參數(shù)說(shuō)明如下。Source:可選,變量型,取值為有效的Command對(duì)象、SQL語(yǔ)句、表名稱(chēng)等。ActiveConnection:可選,取值為有效的Connection對(duì)象變量名稱(chēng)的變量型,或包含ConnectionString參數(shù)的字符串型。CursorType:可選,返回CursorTypeEnum值,用于確定在打開(kāi)Recordset時(shí)提供程序應(yīng)使用的游標(biāo)的類(lèi)型。CursorType參數(shù)詳解如表8.2所示29第8章-VBA數(shù)據(jù)庫(kù)編程30第8章-VBA數(shù)據(jù)庫(kù)編程舉例PublicSubcmdConnection()DimcnnAsNewADODB.Connection'聲明的時(shí)候直接實(shí)例化對(duì)象DimrstAsNewADODB.RecordsetDimstrSQLAsStringcnn.Provider="Microsoft.ACE.OLEDB.16.0"cnn.ConnectionString="F:\數(shù)據(jù)庫(kù)實(shí)例\學(xué)籍管理.accdb"cnn.OpenstrSQL="select*from教師"rst.OpenstrSQL,cnn,adOpenForwardOnly'獲得記錄集Debug.Printrst.GetStringcnn.CloseEndSub31第8章-VBA數(shù)據(jù)庫(kù)編程3.Recordset對(duì)象Recordset對(duì)象常用的屬性和方法32第8章-VBA數(shù)據(jù)庫(kù)編程表8.4 RecordSet對(duì)象常用屬性屬性說(shuō)明Bof若為T(mén)rue,記錄指針指向記錄集的頂部(即指向第一個(gè)記錄之前)Eof若為T(mén)rue,記錄指針指向記錄集的底部(即指向最后一個(gè)記錄之后)RecordCount返回記錄集對(duì)象中的記錄個(gè)數(shù)表8.5 RecordSet對(duì)象常用方法方法說(shuō)明Open打開(kāi)一個(gè)RecordSet對(duì)象Close關(guān)閉一個(gè)RecordSet對(duì)象Update將RecordSet對(duì)象中的數(shù)據(jù)保存(即寫(xiě)入)到數(shù)據(jù)庫(kù)Delete刪除RecordSet對(duì)象中的一個(gè)或多個(gè)記錄Find在RecordSet中查找滿(mǎn)足指定條件的行MoveFirst把記錄指針移到第一個(gè)記錄MoveLast把記錄指針移到最后一個(gè)記錄MoveNext把記錄指針移到下一個(gè)記錄MovePrevious把記錄指針移到前一個(gè)記錄8.4特殊域聚合函數(shù)和RunSQL方法1.特殊域聚合函數(shù)常用的特殊域聚合函數(shù)有DCount函數(shù)、DAvg函數(shù)、DSum函數(shù)、DMax函數(shù)、DMin函數(shù)和DLookup函數(shù)。
(1)DCount函數(shù)格式:DCount(表達(dá)式,記錄集[,條件表達(dá)式])例如,計(jì)算“學(xué)生”表中男同學(xué)的人數(shù),語(yǔ)句為:n=DCount("[xh]","學(xué)生","[xb]='男'")33第8章-VBA數(shù)據(jù)庫(kù)編程(2)DAvg函數(shù)可以使用DAvg函數(shù)來(lái)計(jì)算特定記錄集內(nèi)一組值的平均值。格式:DAvg(表達(dá)式,記錄集[,條件表達(dá)式])例如,計(jì)算“學(xué)生”表中男同學(xué)的平均高考成績(jī),語(yǔ)句為:n=DAvg("[gkcj]","學(xué)生","[xb]='男'")(3)DSum函數(shù)可以使用DSum函數(shù)來(lái)計(jì)算特定記錄集內(nèi)一組值的總和。格式:DSum(表達(dá)式,記錄集[,條件表達(dá)式])例如,計(jì)算“學(xué)生”表中男同學(xué)的高考成績(jī)總和,語(yǔ)句為:n=DSum("[gkcj]","學(xué)生","[xb]='男'")34第8章-VBA數(shù)據(jù)庫(kù)編程(4)DMax函數(shù)可以使用DMax函數(shù)來(lái)計(jì)算特定記錄集內(nèi)一組值的最大值。格式:DMax(表達(dá)式,記錄集[,條件表達(dá)式])例如,計(jì)算“學(xué)生”表中男同學(xué)的高考成績(jī)最高分,語(yǔ)句為:n=DMax("[gkcj]","學(xué)生","[xb]='男'")(5)DMin函數(shù)可以使用DMin函數(shù)來(lái)計(jì)算特定記錄集內(nèi)一組值的最小值。格式:DMin(表達(dá)式,記錄集[,條件表達(dá)式])例如,計(jì)算“學(xué)生”表中男同學(xué)的高考成績(jī)最低分,語(yǔ)句為:n=DMin("[gkcj]","學(xué)生","[xb]='男'")35第8章-VBA數(shù)據(jù)庫(kù)編程(6)DLookup函數(shù)可以使用DSum函數(shù)來(lái)計(jì)算特定記錄集內(nèi)獲取特定字段的值。格式:DLookup(表達(dá)式,記錄集[,條件表達(dá)式])例如,獲取“學(xué)生”表中劉航同學(xué)所在的班級(jí),語(yǔ)句為:n=DLookup("[bjmc]","學(xué)生","[xm]='劉航'")36第8章-VBA數(shù)據(jù)庫(kù)編程例如,窗體上有一個(gè)文本框控件(名稱(chēng)為txtXH),在該控件中輸入學(xué)號(hào),將來(lái)自于“學(xué)生”表中該學(xué)生的姓名顯示在另一個(gè)文本框控件(名稱(chēng)為txtXM)中,語(yǔ)句為:Me!txtXM=DLookup("[xm]","學(xué)生","[xh]='"&Me!txtXH&"'")37第8章-VBA數(shù)據(jù)庫(kù)編程2.RunSQL方法DoCmd對(duì)象的RunSQL方法可以直接運(yùn)行Access的操作查詢(xún),完成對(duì)數(shù)據(jù)表記錄的操作。也可以運(yùn)行數(shù)據(jù)定義語(yǔ)句實(shí)現(xiàn)表和索引的定義。格式為:RunSQL(SQLStatement,UseTransaction)例如,將所有學(xué)生的高考成績(jī)?cè)黾?0分,語(yǔ)句為:DoCmd.RunSQL"update學(xué)生setgkcj=gkcj+10"38第8章-VBA數(shù)據(jù)庫(kù)編程8.5綜合案例39第8章-VBA數(shù)據(jù)庫(kù)編程【例8.4】對(duì)學(xué)籍管理數(shù)據(jù)庫(kù)中的教師表進(jìn)行操作,能夠?qū)崿F(xiàn)記錄的前后移動(dòng)以及數(shù)據(jù)庫(kù)常用的增加、刪除或修改記錄的功能。其界面如圖8.5所示。界面布局如下:40第8章-VBA數(shù)據(jù)庫(kù)編程控件類(lèi)型名稱(chēng)標(biāo)題控件類(lèi)型名稱(chēng)標(biāo)題文本框txtgh工號(hào):文本框txtxm姓名:文本框txtxb性別:文本框txtzc職稱(chēng):命令按鈕cmdFirst第一條命令按鈕cmdPrev向上命令按鈕cmdNext向下命令按鈕cmdLast最后一條命令按鈕cmdAdd添加命令按鈕cmdDel刪除命令按鈕cmdModi修改命令按鈕cmdExit退出關(guān)鍵代碼如下:41第8章-VBA數(shù)據(jù)庫(kù)編程O(píng)ptionCompareDatabase'通用模塊中聲明并初始化ADO各個(gè)對(duì)象DimcnnAsNewADODB.ConnectionDimrstAsNewADODB.Recordset'增加命令按鈕單擊事件過(guò)程PrivateSubcmdAdd_Click()'工號(hào)為主鍵,不能夠?yàn)榭?先判斷Iftxtgh<>""Thenrst.AddNew'增加空白記錄rst("gh")=Me!txtgh'將添加的內(nèi)容保存在記錄集中rst("xm")=Me!txtxmrst("xb")=Me!txtxbrst("zc")=Me!txtzcrst.Update'更新數(shù)據(jù)庫(kù)ElseMsgBox"工號(hào)為主鍵不能夠?yàn)榭眨?EndIfEndSub'刪除命令按鈕單擊事件過(guò)程PrivateSubcmdDel_Click()rst.DeleteEndSub'退出命令按鈕單擊事件過(guò)程PrivateSubcmdExit_Click()rst.Closecnn.Close
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 樓道維修合同范本
- MEAI-hydrochloride-生命科學(xué)試劑-MCE
- 財(cái)務(wù)報(bào)銷(xiāo)合同范本
- 口罩代工合同范本
- 2-5-Dihydroxybenzoic-acid-sodium-Gentisic-acid-sodium-生命科學(xué)試劑-MCE
- 科技創(chuàng)新與知識(shí)產(chǎn)權(quán)法的同步發(fā)展
- 科技教育下的電子商務(wù)培訓(xùn)新模式
- 電子競(jìng)技文化的傳播與價(jià)值體現(xiàn)
- 演練預(yù)算合同范本
- 項(xiàng)目回收合同范本
- 建設(shè)用地報(bào)批服務(wù)投標(biāo)方案(技術(shù)方案)
- 史賽克關(guān)節(jié)鏡系統(tǒng)
- 大豆玉米帶狀復(fù)合種植技術(shù)
- 2024屆高考語(yǔ)文一輪復(fù)習(xí):現(xiàn)代詩(shī)歌 專(zhuān)練(含答案)
- 初中生物學(xué)七年級(jí)下冊(cè)第四單元《生物圈中的人》 單元作業(yè)設(shè)計(jì)
- 《公路橋涵養(yǎng)護(hù)規(guī)范》(5120-2021)【可編輯】
- 2023年中國(guó)(安徽)大學(xué)生茶文化創(chuàng)新大賽試題庫(kù)
- 儀器分析緒論
- 鋰離子電池簡(jiǎn)介課件
- 音樂(lè)劇《貓》賞析分析課件
- 射線(xiàn)數(shù)字成像(DR)技術(shù)課件
評(píng)論
0/150
提交評(píng)論