第VBA的數(shù)據(jù)庫編程PPT課件_第1頁
第VBA的數(shù)據(jù)庫編程PPT課件_第2頁
第VBA的數(shù)據(jù)庫編程PPT課件_第3頁
第VBA的數(shù)據(jù)庫編程PPT課件_第4頁
第VBA的數(shù)據(jù)庫編程PPT課件_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 為了在為了在VBA程序代碼中能方便地實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的數(shù)程序代碼中能方便地實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的數(shù)據(jù)訪問功能,據(jù)訪問功能,VBA語言提供有相應(yīng)的通用的接口方式。語言提供有相應(yīng)的通用的接口方式。 VBA是通過是通過 Microsoft Jet 數(shù)據(jù)庫引擎工具來支持?jǐn)?shù)據(jù)庫引擎工具來支持對(duì)數(shù)據(jù)庫的訪問。所謂數(shù)據(jù)庫引擎實(shí)際上是一組動(dòng)態(tài)鏈對(duì)數(shù)據(jù)庫的訪問。所謂數(shù)據(jù)庫引擎實(shí)際上是一組動(dòng)態(tài)鏈接庫(接庫(DLL),當(dāng)程序運(yùn)行時(shí)被連接到),當(dāng)程序運(yùn)行時(shí)被連接到 VBA 程序而實(shí)程序而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的數(shù)據(jù)訪問功能。數(shù)據(jù)庫引擎是應(yīng)用程序與現(xiàn)對(duì)數(shù)據(jù)庫的數(shù)據(jù)訪問功能。數(shù)據(jù)庫引擎是應(yīng)用程序與物理數(shù)據(jù)庫之間的橋梁,它以一種通用接口的方式

2、,使物理數(shù)據(jù)庫之間的橋梁,它以一種通用接口的方式,使各種類型物理數(shù)據(jù)庫對(duì)用戶而言都具有統(tǒng)一的形式和相各種類型物理數(shù)據(jù)庫對(duì)用戶而言都具有統(tǒng)一的形式和相同的數(shù)據(jù)訪問與處理方法。同的數(shù)據(jù)訪問與處理方法。第1頁/共43頁 在在VBA語言中,提供了如下三種基本的數(shù)據(jù)庫訪問接口語言中,提供了如下三種基本的數(shù)據(jù)庫訪問接口: (1)開放數(shù)據(jù)庫互連應(yīng)用編程接口()開放數(shù)據(jù)庫互連應(yīng)用編程接口(簡稱簡稱ODBC API)。)。 (2)數(shù)據(jù)訪問對(duì)象()數(shù)據(jù)訪問對(duì)象(簡稱簡稱DAO)。)。 (3)Active數(shù)據(jù)對(duì)象(數(shù)據(jù)對(duì)象(簡稱簡稱ADO)。)。 在在VBA語言程序設(shè)計(jì)中,通過數(shù)據(jù)庫引擎可以訪問如下語言程序設(shè)計(jì)中,

3、通過數(shù)據(jù)庫引擎可以訪問如下三種類型的數(shù)據(jù)庫:三種類型的數(shù)據(jù)庫: (1)本地?cái)?shù)據(jù)庫,即是)本地?cái)?shù)據(jù)庫,即是 Access 數(shù)據(jù)庫。數(shù)據(jù)庫。 (2)外部數(shù)據(jù)庫,即是所有的索引順序訪問方法)外部數(shù)據(jù)庫,即是所有的索引順序訪問方法 (ISAM)數(shù)據(jù)庫。數(shù)據(jù)庫。 (3)ODBC數(shù)據(jù)庫,即是符合開放數(shù)據(jù)庫連接數(shù)據(jù)庫,即是符合開放數(shù)據(jù)庫連接 (ODBC)標(biāo)準(zhǔn)的數(shù)據(jù)庫,例如,標(biāo)準(zhǔn)的數(shù)據(jù)庫,例如,Oracle、 Microsoft SQL Server等。等。第2頁/共43頁 數(shù)據(jù)訪問對(duì)象(數(shù)據(jù)訪問對(duì)象(DAO)是)是VBA語言提供的語言提供的一種數(shù)據(jù)訪問接口,包括數(shù)據(jù)庫、表和查詢的創(chuàng)一種數(shù)據(jù)訪問接口,包括數(shù)據(jù)

4、庫、表和查詢的創(chuàng)建等功能,通過運(yùn)行建等功能,通過運(yùn)行VBA程序代碼可以靈活地控程序代碼可以靈活地控制數(shù)據(jù)訪問的各種操作。制數(shù)據(jù)訪問的各種操作。 在在Access 2010中,可以在中,可以在VBA程序中使用程序中使用DAO來訪問(來訪問(*.mdb)數(shù)據(jù)庫和()數(shù)據(jù)庫和(*.accdb)數(shù))數(shù)據(jù)庫。據(jù)庫。第3頁/共43頁第4頁/共43頁 DAO 模型的分層結(jié)構(gòu)圖如圖模型的分層結(jié)構(gòu)圖如圖10-2所示。它包含了一個(gè)所示。它包含了一個(gè)復(fù)雜的可編程數(shù)據(jù)關(guān)聯(lián)對(duì)象的層次,其中復(fù)雜的可編程數(shù)據(jù)關(guān)聯(lián)對(duì)象的層次,其中 DBEngine對(duì)象對(duì)象處于最頂層,它是模型中惟一不被其他對(duì)象所包含的數(shù)據(jù)處于最頂層,它是模型

5、中惟一不被其他對(duì)象所包含的數(shù)據(jù)庫引擎本身。層次低一層對(duì)象是,庫引擎本身。層次低一層對(duì)象是,Errors和和 Workspaces對(duì)象。層次再低一層對(duì)象如對(duì)象。層次再低一層對(duì)象如Errors對(duì)象的低一層對(duì)象是對(duì)象的低一層對(duì)象是Error;Workspaces 對(duì)象的低一層對(duì)象是對(duì)象的低一層對(duì)象是 Workspace。Databases 的低一層對(duì)象是的低一層對(duì)象是 Database。Database 的低的低一層對(duì)象是一層對(duì)象是 Containers、 QueryDefs、RecordSets、Relations 和和 TableDefs。TableDefs對(duì)象的低一層對(duì)象是對(duì)象的低一層對(duì)象是

6、TableDef。同理如此類推,在此不作詳列。同理如此類推,在此不作詳列。 其中對(duì)象名的尾字符為其中對(duì)象名的尾字符為“s”的那些對(duì)象(如,的那些對(duì)象(如,Errors、Workspaces、Databases、TableDefs、Fields 等)是等)是集合對(duì)象,集合對(duì)象下一層包含其成員對(duì)象。集合對(duì)象,集合對(duì)象下一層包含其成員對(duì)象。第5頁/共43頁對(duì)象對(duì)象說明說明DBEngine表示表示Microsoft Jet數(shù)據(jù)庫引擎。它是數(shù)據(jù)庫引擎。它是DAO模型的最上層對(duì)象,模型的最上層對(duì)象,而且包含并控制而且包含并控制DAO模型中的其余全部對(duì)象。模型中的其余全部對(duì)象。Workspace表示工作區(qū)。

7、表示工作區(qū)。Database表示操作的數(shù)據(jù)庫對(duì)象。表示操作的數(shù)據(jù)庫對(duì)象。Container表示數(shù)據(jù)庫中各種對(duì)象的基本數(shù)據(jù),如使用權(quán)限等。表示數(shù)據(jù)庫中各種對(duì)象的基本數(shù)據(jù),如使用權(quán)限等。Document表示文檔表示文檔QueryDef表示數(shù)據(jù)庫查詢信息。表示數(shù)據(jù)庫查詢信息。Parameter表示參數(shù)查詢中的參數(shù)。表示參數(shù)查詢中的參數(shù)。RecordSet表示數(shù)據(jù)操作返回的記錄集。表示數(shù)據(jù)操作返回的記錄集。Relation表示數(shù)據(jù)表之間的關(guān)系。表示數(shù)據(jù)表之間的關(guān)系。TableDef表示數(shù)據(jù)庫中的表。表示數(shù)據(jù)庫中的表。Field表示字段,包含數(shù)據(jù)類型和屬性等。表示字段,包含數(shù)據(jù)類型和屬性等。Index表

8、示數(shù)據(jù)表中定義的索引字段。表示數(shù)據(jù)表中定義的索引字段。Group表示數(shù)據(jù)庫中的組。表示數(shù)據(jù)庫中的組。User表示使用數(shù)據(jù)庫的用戶信息。表示使用數(shù)據(jù)庫的用戶信息。Error包含使用包含使用DAO對(duì)象產(chǎn)生的錯(cuò)誤信息。對(duì)象產(chǎn)生的錯(cuò)誤信息。第6頁/共43頁 DAO 對(duì)象必須通過對(duì)象必須通過 VBA 程序代碼來控制和操作。在代碼程序代碼來控制和操作。在代碼中,必須設(shè)置對(duì)象變量,然后再通過對(duì)象變量使用其下的對(duì)象、中,必須設(shè)置對(duì)象變量,然后再通過對(duì)象變量使用其下的對(duì)象、或者對(duì)象的屬性和方法?;蛘邔?duì)象的屬性和方法。 1對(duì)象變量的聲明對(duì)象變量的聲明 同普通變量的聲明一樣,聲明的關(guān)鍵字可以是同普通變量的聲明一樣,

9、聲明的關(guān)鍵字可以是 Dim、Private、Public 等。等。 聲明對(duì)象變量的語句格式:聲明對(duì)象變量的語句格式: Dim 對(duì)象變量名對(duì)象變量名 As 對(duì)象類型對(duì)象類型 例如:例如: Dim wks As Workspace 聲明聲明wks為工作區(qū)對(duì)象變量為工作區(qū)對(duì)象變量 Dim dbs As Database 聲明聲明dbs為數(shù)據(jù)庫對(duì)象變量為數(shù)據(jù)庫對(duì)象變量第7頁/共43頁2 2對(duì)象變量的賦值對(duì)象變量的賦值 Dim 只是聲明了對(duì)象變量的類型,對(duì)象變量的值只是聲明了對(duì)象變量的類型,對(duì)象變量的值必須通過必須通過 Set 賦值語句來賦值。賦值語句來賦值。Set賦值語句的格式:賦值語句的格式: Se

10、t 對(duì)象變量名稱對(duì)象變量名稱 = 對(duì)象指定聲明對(duì)象指定聲明例如:例如: Set wks = DBEngine.Workspaces(0) 打開默認(rèn)工作區(qū)(即打開默認(rèn)工作區(qū)(即0號(hào)工作區(qū))號(hào)工作區(qū)) Set dbs = wks.OpenDatabase(E:Access職工管理職工管理.accdb) 打開數(shù)據(jù)庫打開數(shù)據(jù)庫第8頁/共43頁例例9-1 9-1 例例9-1 通過通過 DAO 編程,顯示當(dāng)前打開的數(shù)據(jù)庫的名編程,顯示當(dāng)前打開的數(shù)據(jù)庫的名稱。稱。Private Sub Cmd1_Click() Dim wks As Workspace 聲明工作區(qū)對(duì)象變量聲明工作區(qū)對(duì)象變量 Dim dbs

11、As Database 聲明數(shù)據(jù)庫對(duì)象變量聲明數(shù)據(jù)庫對(duì)象變量 Set wks = DBEngine.Workspaces(0) 打開默認(rèn)工作區(qū)(即打開默認(rèn)工作區(qū)(即0號(hào)工作區(qū))號(hào)工作區(qū)) Set dbs = wks.Databases(0) 打開當(dāng)前打開當(dāng)前(默認(rèn))(默認(rèn))數(shù)據(jù)庫(即數(shù)據(jù)庫(即0號(hào)數(shù)據(jù)庫)號(hào)數(shù)據(jù)庫) MsgBox dbs.Name Name 是是 Database 對(duì)象變量的屬性對(duì)象變量的屬性End Sub第9頁/共43頁例例9-1 9-1 (續(xù))(續(xù))第10頁/共43頁 1Database 對(duì)象的常用屬性和方法對(duì)象的常用屬性和方法 Database 對(duì)象代表數(shù)據(jù)庫。對(duì)象代表數(shù)

12、據(jù)庫。Database對(duì)象的常對(duì)象的常用屬性如表用屬性如表9-2所示。所示。Database對(duì)象的常用方法如表對(duì)象的常用方法如表9-3所示。所示。屬性屬性說明說明Name標(biāo)識(shí)一個(gè)數(shù)據(jù)庫對(duì)象的名稱標(biāo)識(shí)一個(gè)數(shù)據(jù)庫對(duì)象的名稱Updatable表示數(shù)據(jù)庫對(duì)象是否可以被更新(為表示數(shù)據(jù)庫對(duì)象是否可以被更新(為True 可以可以更新,為更新,為 False 不可以更新)不可以更新)表表9-2 Database對(duì)象的常用屬性對(duì)象的常用屬性 第11頁/共43頁表表9-3 Database對(duì)象的常用方法對(duì)象的常用方法方法方法說明說明CreatQueryDef 創(chuàng)建一個(gè)新的查詢對(duì)象創(chuàng)建一個(gè)新的查詢對(duì)象CreatT

13、ableDef創(chuàng)建一個(gè)新的表對(duì)象創(chuàng)建一個(gè)新的表對(duì)象CreatRelation建立新的關(guān)系建立新的關(guān)系OpenRecordSet創(chuàng)建一個(gè)新的記錄集創(chuàng)建一個(gè)新的記錄集Excute執(zhí)行一個(gè)執(zhí)行一個(gè)SQL查詢查詢Close關(guān)閉數(shù)據(jù)庫關(guān)閉數(shù)據(jù)庫第12頁/共43頁2 2TableDef TableDef 對(duì)象的對(duì)象的CreateFieldCreateField方法方法 使用使用 TableDef 對(duì)象的對(duì)象的 CreateField 方法可創(chuàng)建表方法可創(chuàng)建表中的字段。中的字段。 使用使用 CreateField方方 法的語句格式:法的語句格式: Set fed = tbe.CreateField(name

14、, type, size) 其中:其中: fed 是字段對(duì)象變量。是字段對(duì)象變量。tbe 是表對(duì)象變量。是表對(duì)象變量。name是字段名。是字段名。type 是字段的數(shù)據(jù)類型,要用英文字符表是字段的數(shù)據(jù)類型,要用英文字符表示,如示,如 dbText 表示文本型,表示文本型,dbInteger 表示整型。表示整型。size 表示字段大小。表示字段大小。第13頁/共43頁3 3RecordSet RecordSet 對(duì)象的常用屬性和方法對(duì)象的常用屬性和方法 RecordSet 對(duì)象代表一個(gè)表或查詢中的所有對(duì)象代表一個(gè)表或查詢中的所有記錄。記錄。RecordSet 對(duì)象提供了對(duì)記錄的添加、對(duì)象提供了對(duì)

15、記錄的添加、刪除和修改等操作的支持。刪除和修改等操作的支持。 RecordSet 對(duì)象的常用屬性如表對(duì)象的常用屬性如表9-4所示。所示。 RecordSet 對(duì)象的常用方法如表對(duì)象的常用方法如表9-5所示。所示。第14頁/共43頁表表9-4 RecordSet對(duì)象的常用屬性對(duì)象的常用屬性 屬性屬性說明說明Bof若為若為 True,記錄指針指向記錄集的第一個(gè)記,記錄指針指向記錄集的第一個(gè)記錄之前錄之前Eof若為若為 True,記錄指針指向記錄集的最后一個(gè),記錄指針指向記錄集的最后一個(gè)記錄之后記錄之后Filter設(shè)置篩選條件過濾出滿足條件的記錄設(shè)置篩選條件過濾出滿足條件的記錄RecordCount

16、返回記錄集對(duì)象中的記錄個(gè)數(shù)返回記錄集對(duì)象中的記錄個(gè)數(shù)NoMatch使用使用 Find 方法時(shí),如果沒有匹配的記錄,則方法時(shí),如果沒有匹配的記錄,則為為 True,否則為,否則為 False第15頁/共43頁 表表9-5 RecordSet 對(duì)象的常用方法對(duì)象的常用方法的方法的方法方法方法說明說明AddNew添加新記錄添加新記錄Delete刪除當(dāng)前記錄刪除當(dāng)前記錄Eidt編輯當(dāng)前記錄。編輯當(dāng)前記錄。FindFirst查找第一個(gè)滿足條件的記錄。查找第一個(gè)滿足條件的記錄。FindLast查找最后一個(gè)滿足條件的記錄。查找最后一個(gè)滿足條件的記錄。FindNext查找下一個(gè)滿足條件的記錄。查找下一個(gè)滿足條

17、件的記錄。FindPrevious查找前一個(gè)滿足條件的記錄。查找前一個(gè)滿足條件的記錄。Move移動(dòng)記錄指針。移動(dòng)記錄指針。MoveFirst把記錄指針移到第一個(gè)記錄。把記錄指針移到第一個(gè)記錄。MoveLast把記錄指針移到最后一個(gè)記錄。把記錄指針移到最后一個(gè)記錄。MoveNext把記錄指針移到下一個(gè)記錄。把記錄指針移到下一個(gè)記錄。MovePrevious把記錄指針移到前一個(gè)記錄。把記錄指針移到前一個(gè)記錄。Requery重新運(yùn)行查詢,以更新重新運(yùn)行查詢,以更新 RecordSet 中的記錄。中的記錄。第16頁/共43頁 在在 VBA 編程中,利用編程中,利用 DAO 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫實(shí)現(xiàn)對(duì)數(shù)據(jù)庫訪問

18、時(shí),要先創(chuàng)建對(duì)象變量,再通過對(duì)象方法訪問時(shí),要先創(chuàng)建對(duì)象變量,再通過對(duì)象方法和屬性來進(jìn)行操作。和屬性來進(jìn)行操作。 下面通過例子介紹利用下面通過例子介紹利用 DAO 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫實(shí)現(xiàn)對(duì)數(shù)據(jù)庫訪問的一般語句和步驟:訪問的一般語句和步驟:第17頁/共43頁例例9-2 9-2 (DAODAO數(shù)據(jù)庫編程例數(shù)據(jù)庫編程例) 例例9-2編寫一個(gè)使用編寫一個(gè)使用DAO的名為的名為UseDaoUpdateAge的子過的子過程,通過調(diào)用該子過程來完成對(duì)程,通過調(diào)用該子過程來完成對(duì)“職工管理職工管理”數(shù)據(jù)庫的數(shù)據(jù)庫的“職工基職工基本資料本資料”表的年齡字段值都加表的年齡字段值都加1的操作(假設(shè)的操作(假設(shè)“職工管理職

19、工管理.accdb”數(shù)據(jù)庫文件存放在數(shù)據(jù)庫文件存放在E盤盤“E:Access”文件夾中,文件夾中,“職工基本資料職工基本資料”表中的表中的“年齡年齡”字段的數(shù)據(jù)類型是整型)。本例的窗體名稱為字段的數(shù)據(jù)類型是整型)。本例的窗體名稱為“例例9-2使用使用DAO編程編程-年齡加年齡加1”。 Cmd1 命令按鈕的單擊事件過程和命令按鈕的單擊事件過程和 UseDaoUpdateAge 子過子過程的程的VBA程序代碼如下:程序代碼如下:第18頁/共43頁例9-2第19頁/共43頁例例9-3 9-3 (DAODAO數(shù)據(jù)庫編程例數(shù)據(jù)庫編程例) 例例9-3 通過在通過在VBA程序中使用程序中使用DAO,在當(dāng),在

20、當(dāng)前數(shù)據(jù)庫中創(chuàng)建一個(gè)名為前數(shù)據(jù)庫中創(chuàng)建一個(gè)名為“用戶表用戶表”的表。的表?!坝脩舯碛脩舯怼钡谋斫Y(jié)構(gòu)如表的表結(jié)構(gòu)如表9-6所示。該表的主所示。該表的主鍵是鍵是“用戶用戶ID”字段。本例的窗體名是字段。本例的窗體名是“例例9-3 用用 DAO 創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表”,窗體中的命令按鈕名,窗體中的命令按鈕名稱是稱是Cmd1。第20頁/共43頁例例9-39-3VBA VBA 代代碼碼第21頁/共43頁 例例9-4 9-4 (DAODAO數(shù)據(jù)庫編程例數(shù)據(jù)庫編程例) 例例9-4通過在通過在VBA程序中使用程序中使用DAO,實(shí)現(xiàn),實(shí)現(xiàn)的當(dāng)前數(shù)據(jù)庫中的的當(dāng)前數(shù)據(jù)庫中的“用戶表用戶表”添加新記錄。本添加新記錄。

21、本例的窗體名是例的窗體名是“例例9-4用用DAO往用戶表添加記往用戶表添加記錄錄”,如圖,如圖9-2所示。所示。第22頁/共43頁例例9-9-4 4VBA VBA 代代碼碼第23頁/共43頁 9.3 ActiveX 9.3 ActiveX數(shù)據(jù)對(duì)象(數(shù)據(jù)對(duì)象(ADOADO) ActiveX數(shù)據(jù)對(duì)象(數(shù)據(jù)對(duì)象(ActiveX Data Objects ,簡,簡稱稱ADO)是基于組件的數(shù)據(jù)庫編程接口,它可以對(duì)來)是基于組件的數(shù)據(jù)庫編程接口,它可以對(duì)來自多種數(shù)據(jù)提供者的數(shù)據(jù)進(jìn)行讀取和寫入操作。自多種數(shù)據(jù)提供者的數(shù)據(jù)進(jìn)行讀取和寫入操作。 在在Access模塊設(shè)計(jì)時(shí)要使用模塊設(shè)計(jì)時(shí)要使用ADO的各個(gè)數(shù)據(jù)對(duì)

22、象,需的各個(gè)數(shù)據(jù)對(duì)象,需要增加對(duì)要增加對(duì)ADO庫的引用。其中,在庫的引用。其中,在Access 2010中,要在中,要在VBA程序中使用程序中使用ADO來訪問(來訪問(*.accdb)數(shù)據(jù)庫)數(shù)據(jù)庫, 需要增加需要增加對(duì)對(duì)“Microsoft ActiveX Data Objects 6.1 Library” 庫的庫的引用。該引用的設(shè)置方法:打開引用。該引用的設(shè)置方法:打開VBE窗口,單擊菜單欄上窗口,單擊菜單欄上的的“工具工具”,單擊,單擊“工具工具”菜單中的菜單中的“引用引用”項(xiàng),彈出項(xiàng),彈出“引用引用”對(duì)話框,從對(duì)話框,從“可使用的引用可使用的引用”列表項(xiàng)中,選中列表項(xiàng)中,選中“Micr

23、osoft ActiveX Data Objects 6.1 Library”項(xiàng)的復(fù)選項(xiàng)的復(fù)選框,如圖框,如圖9-4所示,然后單擊所示,然后單擊“確定確定”按鈕。按鈕。 本節(jié)僅介紹使用本節(jié)僅介紹使用ADO來訪問(來訪問(*.accdb)數(shù)據(jù)庫)數(shù)據(jù)庫.第24頁/共43頁第25頁/共43頁 ADO對(duì)象模型圖如圖對(duì)象模型圖如圖9-5所示,它提供一系列數(shù)所示,它提供一系列數(shù)據(jù)對(duì)象供使用。不過,據(jù)對(duì)象供使用。不過,ADO 接口與接口與 DAO不同,不同,ADO對(duì)象不須派生,大多數(shù)對(duì)象都可以直接創(chuàng)建對(duì)象不須派生,大多數(shù)對(duì)象都可以直接創(chuàng)建(Field 和和 Error 除外),沒有對(duì)象的分級(jí)結(jié)構(gòu)。除外),

24、沒有對(duì)象的分級(jí)結(jié)構(gòu)。 使用時(shí),只需在程序中創(chuàng)建對(duì)象變量,并通過對(duì)使用時(shí),只需在程序中創(chuàng)建對(duì)象變量,并通過對(duì)象變量來調(diào)用訪問對(duì)象方法、設(shè)置訪問對(duì)象屬性,這象變量來調(diào)用訪問對(duì)象方法、設(shè)置訪問對(duì)象屬性,這樣就實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的各項(xiàng)訪問操作。樣就實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的各項(xiàng)訪問操作。ADO 只需要九只需要九個(gè)對(duì)象和四個(gè)集合(對(duì)象)就能提供其整個(gè)功能。個(gè)對(duì)象和四個(gè)集合(對(duì)象)就能提供其整個(gè)功能。第26頁/共43頁圖圖9-59-5ADOADO對(duì)象模型圖對(duì)象模型圖第27頁/共43頁表表9-7 ADO對(duì)象說明對(duì)象說明第28頁/共43頁 ADO 對(duì)象必須通過對(duì)象必須通過 VBA 程序代碼來控制和操作。在代碼程序代碼來控制和操

25、作。在代碼中,必須設(shè)置對(duì)象變量,然后再通過對(duì)象變量使用其下的對(duì)象、中,必須設(shè)置對(duì)象變量,然后再通過對(duì)象變量使用其下的對(duì)象、或者對(duì)象的屬性和方法?;蛘邔?duì)象的屬性和方法。 聲明對(duì)象變量的語句格式:聲明對(duì)象變量的語句格式: Dim 對(duì)象變量名稱對(duì)象變量名稱 As ADODB.對(duì)象類型對(duì)象類型 例如:例如:Dim con As New ADODB.Connection 聲明一個(gè)連接對(duì)象變量聲明一個(gè)連接對(duì)象變量Dim res As New ADODB.RecordSet 聲明一個(gè)記錄集對(duì)象變量聲明一個(gè)記錄集對(duì)象變量 注意,注意,ADODB 是是 ADO 類型庫的短名稱,用于識(shí)別與類型庫的短名稱,用于識(shí)別

26、與DAO中同名的對(duì)象。例如,中同名的對(duì)象。例如,DAO中有中有 RecordSet 對(duì)象,對(duì)象,ADO 中也中也有有 RecordSet對(duì)象,為了能夠區(qū)分開來,在對(duì)象,為了能夠區(qū)分開來,在 ADO 中聲明中聲明RecordSet 類型對(duì)象變量時(shí),用上類型對(duì)象變量時(shí),用上 ADODB.RecordSet。總之,??傊谠贏DO中聲明對(duì)象變量時(shí),一般都要用上中聲明對(duì)象變量時(shí),一般都要用上“ADODB.”前綴。前綴。第29頁/共43頁1Connection 對(duì)象的常用方法對(duì)象的常用方法(1)Open方法方法通過使用通過使用Connection 對(duì)象的對(duì)象的Open方法來建立與數(shù)據(jù)源的連接。方法來建

27、立與數(shù)據(jù)源的連接。 Open方法的語句格式:方法的語句格式:Dim 連接對(duì)象變量名連接對(duì)象變量名 As New ADODB.Connection連接對(duì)象變量名連接對(duì)象變量名.Open ConnectionString, UserID, Password, OpenOptions例如,創(chuàng)建與例如,創(chuàng)建與“職工管理職工管理.mdb”數(shù)據(jù)庫連接的語句:數(shù)據(jù)庫連接的語句:Dim cnn As New ADODB.Connection 聲明一個(gè)連接對(duì)象變量聲明一個(gè)連接對(duì)象變量cnn職工管理職工管理.mdb第30頁/共43頁(2)Close方法方法 通過使用通過使用 Connection 對(duì)象的對(duì)象的 C

28、lose 方法來關(guān)閉與數(shù)方法來關(guān)閉與數(shù)據(jù)源的連接。據(jù)源的連接。 Close方法的語句格式:方法的語句格式: 連接對(duì)象變量名連接對(duì)象變量名.Close 注意,該語句可以關(guān)閉注意,該語句可以關(guān)閉Connection 對(duì)象,斷開應(yīng)用對(duì)象,斷開應(yīng)用程序與數(shù)據(jù)源的連接。但是程序與數(shù)據(jù)源的連接。但是Connection 仍在內(nèi)存中,釋仍在內(nèi)存中,釋放放 Connection 對(duì)象變量的方法是使用下面語句格式的語對(duì)象變量的方法是使用下面語句格式的語句:句: 釋放連接對(duì)象變量的語句格式:釋放連接對(duì)象變量的語句格式: Set連接對(duì)象變量名連接對(duì)象變量名= nothing 例如,關(guān)閉與例如,關(guān)閉與“職工管理職工管

29、理.accdb”數(shù)據(jù)庫連接的語句:數(shù)據(jù)庫連接的語句:cnn.CloseSetcnn = nothing第31頁/共43頁(3)如果指定的數(shù)據(jù)源就是當(dāng)前已經(jīng)打開的數(shù)據(jù)庫,則)如果指定的數(shù)據(jù)源就是當(dāng)前已經(jīng)打開的數(shù)據(jù)庫,則必須通過必須通過 CurrentProject 對(duì)象的對(duì)象的Connection屬性來取得屬性來取得連接。連接。 語句格式:語句格式:Dim 連接對(duì)象變量名連接對(duì)象變量名 As New ADODB.ConnectionSet 連接對(duì)象變量名連接對(duì)象變量名= CurrentProject.Connection 例如:創(chuàng)建與當(dāng)前已經(jīng)打開的數(shù)據(jù)庫的連接:例如:創(chuàng)建與當(dāng)前已經(jīng)打開的數(shù)據(jù)庫的

30、連接:Dim cnn As New ADODB.Connection Set cnn = CurrentProject.Connection第32頁/共43頁建立建立 Recordset 對(duì)象的語句格式:對(duì)象的語句格式: Dim 記錄集對(duì)象變量名記錄集對(duì)象變量名 As ADODB.Recordset Set 記錄集對(duì)象變量名記錄集對(duì)象變量名 = New ADODB.Recordset RecordSet 對(duì)象的常用屬性如表對(duì)象的常用屬性如表9-8所示。所示。 RecordSet對(duì)象的常用方法如表對(duì)象的常用方法如表9-9所示。所示。第33頁/共43頁屬性屬性說明說明Bof若為若為True,記錄指

31、針指向記錄集的頂部(即,記錄指針指向記錄集的頂部(即指向第一個(gè)記錄之前)。指向第一個(gè)記錄之前)。Eof若為若為True,記錄指針指向記錄集的底部(即,記錄指針指向記錄集的底部(即指向最后一個(gè)記錄之后)。指向最后一個(gè)記錄之后)。RecordCount返回記錄集對(duì)象中的記錄個(gè)數(shù)。返回記錄集對(duì)象中的記錄個(gè)數(shù)。第34頁/共43頁方法方法說明說明Open打開一個(gè)打開一個(gè) Recordset 對(duì)象。對(duì)象。Close關(guān)閉一個(gè)關(guān)閉一個(gè) Recordset 對(duì)象。對(duì)象。AddNew在在 Recordset 對(duì)象中添加一個(gè)記錄。對(duì)象中添加一個(gè)記錄。Update將將 Recordset 對(duì)象中的數(shù)據(jù)保存(即寫入)到

32、數(shù)據(jù)庫。對(duì)象中的數(shù)據(jù)保存(即寫入)到數(shù)據(jù)庫。CancelUpdate取消對(duì)取消對(duì) Recordset 對(duì)象的更新操作。對(duì)象的更新操作。Delete刪除刪除 Recordset 對(duì)象中的一個(gè)或多個(gè)記錄。對(duì)象中的一個(gè)或多個(gè)記錄。Find在在 Recordset 中查找滿足指定條件的行。中查找滿足指定條件的行。Move移動(dòng)記錄指針到指定位置。移動(dòng)記錄指針到指定位置。MoveFirst把記錄指針移到第一個(gè)記錄。把記錄指針移到第一個(gè)記錄。MoveLast把記錄指針移到最后一個(gè)記錄。把記錄指針移到最后一個(gè)記錄。MoveNext把記錄指針移到下一個(gè)記錄。把記錄指針移到下一個(gè)記錄。MovePrevious把記錄指針移到前一個(gè)記錄。把記錄指針移到前一個(gè)記錄。Clone復(fù)制某個(gè)已存在的復(fù)制某個(gè)已存在的 RecordSet 對(duì)象。對(duì)象。第35頁/共43頁 (1)建立)建立 Command 對(duì)象對(duì)象 建立建立 Command 對(duì)象的語句格式:對(duì)象的語句格式: Dim 對(duì)象變量名對(duì)象變量名 As New

溫馨提示

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

評(píng)論

0/150

提交評(píng)論