版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1第第7章章用用VBA訪問訪問Access數(shù)據(jù)庫數(shù)據(jù)庫2本章內(nèi)容本章內(nèi)容 37.1 記錄集概述記錄集概述 47.1.1 ADO的的9個(gè)對象個(gè)對象 oADO:ActiveX Data Objects oAccess內(nèi)嵌的內(nèi)嵌的VBA是用是用ADO技術(shù)開發(fā)數(shù)據(jù)庫應(yīng)技術(shù)開發(fā)數(shù)據(jù)庫應(yīng)用的主要工具用的主要工具oADO對象模型有對象模型有9個(gè)對象:個(gè)對象:nConnection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error n常用對象:常用對象:Connection、Command、Recordset57.1.1 ADO的的9
2、個(gè)對象個(gè)對象 oConnection對象:對象:ADO對象模型中最高級的對對象模型中最高級的對象,實(shí)現(xiàn)應(yīng)用程序與數(shù)據(jù)源的連接。象,實(shí)現(xiàn)應(yīng)用程序與數(shù)據(jù)源的連接。oCommand對象:主要作用是在對象:主要作用是在VBA中通過中通過SQL語句訪問、查詢數(shù)據(jù)庫中的數(shù)據(jù)??梢詫?shí)現(xiàn)語句訪問、查詢數(shù)據(jù)庫中的數(shù)據(jù)??梢詫?shí)現(xiàn)Recordset對象不能完成的操作,如創(chuàng)建數(shù)據(jù)表、對象不能完成的操作,如創(chuàng)建數(shù)據(jù)表、修改表結(jié)構(gòu)、刪除表等。修改表結(jié)構(gòu)、刪除表等。o Recordset對象的功能最常用、最重要對象的功能最常用、最重要67.1.2 了解記錄集了解記錄集 o記錄集記錄集(Recordset):對表執(zhí)行查詢操作
3、時(shí),返:對表執(zhí)行查詢操作時(shí),返回的一組特定記錄?;氐囊唤M特定記錄。o用記錄集可執(zhí)行的操作:對表中的數(shù)據(jù)進(jìn)行查詢用記錄集可執(zhí)行的操作:對表中的數(shù)據(jù)進(jìn)行查詢和統(tǒng)計(jì),在表中添加、更新或刪除記錄。和統(tǒng)計(jì),在表中添加、更新或刪除記錄。o記錄集是一個(gè)對象,它包括記錄和字段,具有其記錄集是一個(gè)對象,它包括記錄和字段,具有其特定的屬性和方法,利用這些屬性和方法就可以特定的屬性和方法,利用這些屬性和方法就可以編程處理數(shù)據(jù)庫中的記錄。編程處理數(shù)據(jù)庫中的記錄。77.2 在在Access中引用中引用ADO對象對象 o應(yīng)用程序中的應(yīng)用程序中的ADO引用:聲明引用:聲明Connection對象對象創(chuàng)建創(chuàng)建Recordse
4、t對象對象編程完成各種數(shù)據(jù)訪問編程完成各種數(shù)據(jù)訪問操作操作87.2.1 聲明聲明Connection對象對象 (1) 聲明一個(gè)聲明一個(gè)Connection對象對象 (2) 初始化初始化Connection對象(決定對象(決定Connection對對 象與哪個(gè)數(shù)據(jù)庫相連接)象與哪個(gè)數(shù)據(jù)庫相連接) 例如:例如: Dim cnGraduate As ADODB.Connection Set cnGraduate=CurrentProject.Connection 與當(dāng)前數(shù)據(jù)庫連接與當(dāng)前數(shù)據(jù)庫連接 97.2.2 聲明聲明與打開與打開Recordset對象對象 (1) 聲明聲明Recordset對象對象
5、 (2) 創(chuàng)建創(chuàng)建Recordset對象實(shí)例對象實(shí)例 (3) 打開打開Recordset對象對象 例如:例如: Dim rsStudents As ADODB.Recordset Set rsStudents=New ADODB.Recordset rsStudents.Open 研究生研究生, cnGraduate, , , adCmdTable 前面聲明的前面聲明的Connection對象對象 表名稱表名稱 打開的是表對象打開的是表對象 參數(shù)占位符參數(shù)占位符 107.2.3 關(guān)閉關(guān)閉Recordset和和Connection對象對象 o方法:執(zhí)行方法:執(zhí)行Recordset 對象和對象和C
6、onnection對象對象的的Close方法方法 將對象設(shè)置為將對象設(shè)置為Nothing例如:例如:rsStudents.ClosecnGraduate.CloseSet rsStudents=NothingSet cnGraduate=Nothingo上述語句不是必須的。應(yīng)用程序終止運(yùn)行時(shí),系上述語句不是必須的。應(yīng)用程序終止運(yùn)行時(shí),系統(tǒng)會自動關(guān)閉并清除這兩個(gè)對象。統(tǒng)會自動關(guān)閉并清除這兩個(gè)對象。 117.3 引用記錄字段引用記錄字段 o任何對記錄集的訪問都是針對當(dāng)前記錄進(jìn)行的。打開任何對記錄集的訪問都是針對當(dāng)前記錄進(jìn)行的。打開記錄集時(shí)默認(rèn)的當(dāng)前記錄為第記錄集時(shí)默認(rèn)的當(dāng)前記錄為第1條記錄。條記錄
7、。o引用記錄的字段:引用記錄的字段:n直接在記錄集對象中直接在記錄集對象中引用字段名稱引用字段名稱 Code=rsStudents!學(xué)號學(xué)號n使用記錄集對象的使用記錄集對象的Fields(n)屬性。屬性。n是記錄中字段從左到右的排列序號,第一個(gè)字段的序號為0。 Code=rsStudents.Fields(0)127.3 引用記錄字段引用記錄字段 例例7-1 建立名為建立名為ADO的模塊,編寫如下過程。運(yùn)的模塊,編寫如下過程。運(yùn)行該過程后,輸出對話框顯示行該過程后,輸出對話框顯示“導(dǎo)師導(dǎo)師”表中第一表中第一位教師的編號和姓名。位教師的編號和姓名。 137.3 引用記錄字段引用記錄字段 o記錄集
8、更多的應(yīng)用是在窗體對象上:記錄集更多的應(yīng)用是在窗體對象上:建立一個(gè)空建立一個(gè)空白窗體白窗體設(shè)計(jì)各個(gè)控件設(shè)計(jì)各個(gè)控件編程引用記錄集當(dāng)前記編程引用記錄集當(dāng)前記錄的相關(guān)字段或?qū)⒆侄蔚闹低ㄟ^控件顯示錄的相關(guān)字段或?qū)⒆侄蔚闹低ㄟ^控件顯示o注意:如果涉及數(shù)據(jù)訪問的事件過程不止一個(gè),注意:如果涉及數(shù)據(jù)訪問的事件過程不止一個(gè),可在代碼窗口的可在代碼窗口的通用段通用段定義定義Connection對象和對象和Recordset對象,然后在對象,然后在Form_Load事件事件過程過程中完成數(shù)據(jù)庫連接和數(shù)據(jù)表的打開。中完成數(shù)據(jù)庫連接和數(shù)據(jù)表的打開。147.3 引用記錄字段引用記錄字段 運(yùn)行:運(yùn)行:分別單擊分別單擊“
9、導(dǎo)師編號導(dǎo)師編號”和和“導(dǎo)師姓名導(dǎo)師姓名”按鈕按鈕 窗體設(shè)計(jì)視圖窗體設(shè)計(jì)視圖( (刪除導(dǎo)航按鈕刪除導(dǎo)航按鈕) ) 例例7-2:設(shè)計(jì)窗體,顯示第一位導(dǎo)師的編號和姓名:設(shè)計(jì)窗體,顯示第一位導(dǎo)師的編號和姓名157.3 引用記錄字段引用記錄字段 例例7-2窗體程序代碼窗體程序代碼 167.4 瀏覽記錄瀏覽記錄 oRecordset記錄集對象提供了記錄集對象提供了4種記錄指針的移動方法種記錄指針的移動方法nMoveFirst 記錄指針移到第一條記錄記錄指針移到第一條記錄nMoveNext 記錄指針移到當(dāng)前記錄的下一條記錄記錄指針移到當(dāng)前記錄的下一條記錄nMovePrevious 記錄指針移到當(dāng)前記錄的上
10、一條記錄記錄指針移到當(dāng)前記錄的上一條記錄nMoveLast 記錄指針移到最后一條記錄記錄指針移到最后一條記錄177.4 瀏覽記錄瀏覽記錄 oRecordset記錄集的記錄集的BOF和和EOF屬性用于判斷記錄指針屬性用于判斷記錄指針是否處于有記錄的正常位置是否處于有記錄的正常位置n記錄指針將指向最后一條記錄之后,記錄指針將指向最后一條記錄之后,EOF屬性為屬性為Truen記錄指針將指向第一條記錄之前,記錄指針將指向第一條記錄之前,BOF屬性為屬性為TruenBOF和和EOF屬性的值均為屬性的值均為True,表示記錄集為空,表示記錄集為空 187.4 瀏覽記錄瀏覽記錄 例例7-3 對例對例7-2進(jìn)
11、行修改進(jìn)行修改 增加如下事件過程代碼:增加如下事件過程代碼: Private Sub Command3_Click() 單擊單擊“下一個(gè)記錄下一個(gè)記錄”按按鈕鈕 rsTeacher.MoveNext End Sub197.4 瀏覽記錄瀏覽記錄 o上面的過程隱含錯(cuò)誤:移至最后一條記錄后無上面的過程隱含錯(cuò)誤:移至最后一條記錄后無法再下移指針,將出現(xiàn)運(yùn)行錯(cuò)誤信息框。法再下移指針,將出現(xiàn)運(yùn)行錯(cuò)誤信息框。o兩種糾正錯(cuò)誤的方法:兩種糾正錯(cuò)誤的方法:n如果記錄集的如果記錄集的EOF屬性為屬性為True,就回到第一,就回到第一條記錄條記錄n如果記錄集的如果記錄集的EOF屬性為屬性為True,就回到最后,就回到
12、最后一條記錄一條記錄 207.4 瀏覽記錄瀏覽記錄 Private Sub Command3_Click() rsTeacher.MoveNext If rsTeacher.EOF Then rsTeacher.MoveFirst End IfEnd Sub 方法方法1:若記錄:若記錄集的集的EOF屬性為屬性為True,則回到首,則回到首記錄記錄 方法方法2:若記錄:若記錄集的集的EOF屬性為屬性為True,則回到末,則回到末記錄記錄Private Sub Command3_Click() rsTeacher.MoveNext If rsTeacher.EOF Then rsTeacher.
13、MoveLast End IfEnd Sub217.4 瀏覽記錄瀏覽記錄 o方法方法2的程序還將運(yùn)行出錯(cuò)。因?yàn)榈某绦蜻€將運(yùn)行出錯(cuò)。因?yàn)镽ecordset對對象有一個(gè)名為象有一個(gè)名為LockType的屬性,默認(rèn)值為的屬性,默認(rèn)值為adLockReadOnly,此時(shí)只能瀏覽記錄數(shù)據(jù),記,此時(shí)只能瀏覽記錄數(shù)據(jù),記錄的移動方式也只能是錄的移動方式也只能是MoveNext和和MoveFirst,不能執(zhí)行不能執(zhí)行MoveLast和和MovePrevious操作。操作。227.4 瀏覽記錄瀏覽記錄 o修改:將該記錄集對象的修改:將該記錄集對象的LockType屬性設(shè)置成屬性設(shè)置成adLockPessimis
14、tic(保守式鎖定保守式鎖定)o編輯數(shù)據(jù)時(shí)即鎖定數(shù)據(jù)源記錄,直到數(shù)據(jù)編輯完成編輯數(shù)據(jù)時(shí)即鎖定數(shù)據(jù)源記錄,直到數(shù)據(jù)編輯完成才釋放。才釋放。 rsTeacher.LockType = adLockPessimistic rsTeacher.Open 導(dǎo)師, cnGraduate, , , adCmdTable237.4 瀏覽記錄瀏覽記錄 o如果數(shù)據(jù)表中沒有記錄,即如果數(shù)據(jù)表中沒有記錄,即BOF和和EOF同時(shí)為同時(shí)為True,就不能引用表中的數(shù)據(jù)。,就不能引用表中的數(shù)據(jù)。n將單擊將單擊“導(dǎo)師姓名導(dǎo)師姓名”按鈕的事件過程改寫如按鈕的事件過程改寫如下下Private Sub Command2_Click
15、() If rsTeacher.BOF = True And rsTeacher.EOF = True Then Text1.Value = Else Text1.Value = rsTeacher!姓名姓名 End IfEnd Sub247.6 用用ADO技術(shù)實(shí)現(xiàn)復(fù)雜查詢技術(shù)實(shí)現(xiàn)復(fù)雜查詢 例例7-8 在在ADO模塊中建立模塊中建立Sex過程:統(tǒng)計(jì)并在輸過程:統(tǒng)計(jì)并在輸出對話框中顯示男、女研究生人數(shù)比。要求以人出對話框中顯示男、女研究生人數(shù)比。要求以人數(shù)多的一方為數(shù)多的一方為1、放在右側(cè)、保留小數(shù)兩位。、放在右側(cè)、保留小數(shù)兩位。 程序分析:先遍歷全部記錄,分別統(tǒng)計(jì)出男、女研究程序分析:先遍歷全
16、部記錄,分別統(tǒng)計(jì)出男、女研究生人數(shù)。如果男生人數(shù)多于女生,則男生人數(shù)為生人數(shù)。如果男生人數(shù)多于女生,則男生人數(shù)為1 1,女生,女生人數(shù)改為女生人數(shù)除以男生人數(shù);反之亦然。人數(shù)改為女生人數(shù)除以男生人數(shù);反之亦然。 25Sub Sex() (定義對象、完成與數(shù)據(jù)庫的連接、打開研究生表、定義變量)(定義對象、完成與數(shù)據(jù)庫的連接、打開研究生表、定義變量) Student.MoveFirst Do While Not Student.EOF 統(tǒng)計(jì)男、女研究生人數(shù)統(tǒng)計(jì)男、女研究生人數(shù) If Student!性別性別 = 男男 Then Boy = Boy + 1 If Student!性別性別 = 女女 Then Girl = Girl + 1 Student.MoveNext Loop If Girl = Boy Then 以男生人數(shù)為以男生人數(shù)為1 MsgBox 女女:男男= & Format(Girl / Boy, 0.00) & :1 Else 以女生人數(shù)為以女生人數(shù)為1 MsgBox 男男:女女= & Format(Boy / Girl, 0.00) & :1 End IfEnd Sub7.6 用用ADO技術(shù)實(shí)現(xiàn)復(fù)雜查詢技術(shù)實(shí)現(xiàn)復(fù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河北建筑安全員-A證考試題庫附答案
- DB32T-食品安全督導(dǎo)工作規(guī)范編制說明
- 三個(gè)共點(diǎn)力的動態(tài)平衡
- 單位人力資源管理制度精彩大合集十篇
- 公用事業(yè)行業(yè)十二月行業(yè)動態(tài)報(bào)告:水電發(fā)電量降幅收窄風(fēng)光核裝機(jī)目標(biāo)明確
- 江蘇省連云港市海州區(qū)2024-2025學(xué)年八年級上學(xué)期期末考試生物學(xué)試卷(含答案)
- 單位管理制度展示合集【職員管理篇】十篇
- 年產(chǎn)5000臺液晶電視項(xiàng)目可行性研究報(bào)告建議書
- 單位管理制度展示選集人力資源管理篇
- 單位管理制度品讀選集人員管理篇十篇
- 建筑結(jié)構(gòu)荷載規(guī)范DBJ-T 15-101-2022
- 制藥專業(yè)畢業(yè)設(shè)計(jì)開題報(bào)告
- 普通心理學(xué)智慧樹知到期末考試答案2024年
- 青少年涉毒問題監(jiān)測制度
- 污水管網(wǎng)巡查及養(yǎng)護(hù) 投標(biāo)方案(技術(shù)方案)
- 征兵眼科科普知識講座
- (高清版)DZT 0275.1-2015 巖礦鑒定技術(shù)規(guī)范 第1部分:總則及一般規(guī)定
- ODM委托加工協(xié)議書模板(二篇)
- 人工智能在醫(yī)療健康領(lǐng)域的應(yīng)用探索報(bào)告
- 高二上學(xué)期數(shù)學(xué)期末測試卷01-【好題匯編】備戰(zhàn)2023-2024學(xué)年高二數(shù)學(xué)上學(xué)期期末真題分類匯編(人教A版2019選擇性必修第一、二冊)(原卷版)
- 環(huán)評驗(yàn)收方案
評論
0/150
提交評論