




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、二級(jí)二級(jí)ACCESSACCESS培訓(xùn)培訓(xùn)講義講義第第9章章 VBA數(shù)據(jù)庫編程數(shù)據(jù)庫編程 二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義第第9章章 VBA數(shù)據(jù)庫編程數(shù)據(jù)庫編程本章要求本章要求 掌握常用的操作方法操作數(shù)據(jù)庫對(duì)象 掌握ADO和DAO的概念及結(jié)構(gòu),并能使用它們?cè)L問數(shù)據(jù)庫二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義9.1 VBA常用操作方法一、打開和關(guān)閉操作在VBA中,操作主要有:1.打開窗體Docmd.OpenForm 格式: Docmd.OpenForm formname,view,filtername,wherecondition,datamode,windowmode參數(shù)說明:formname:字
2、符串表達(dá)式,代表當(dāng)前數(shù)據(jù)庫中窗體的有效名稱;view:為下列固有常量之一:acDesign,asFormDS,acNormal,acPreviewfiltername:過濾查詢的有效名稱,主要是對(duì)窗體數(shù)據(jù)源數(shù)據(jù)進(jìn)行過濾和篩選wherecondition:字符串表達(dá)式,不包含Where關(guān)鍵字的有效SQL Where子句datamode:為下列固有常量之一:acFormAdd,acFormEdit, acFormReadOnly ,acFormPropertySettingswindowmode:用于規(guī)定窗體的打開形式,為下列固有常量之一:acDialog, acHidden,acIcon,acW
3、indowNormal二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義 例:以對(duì)話框形式打開“登陸”窗體Docmd.Openform “登陸”,acDialog2.打開報(bào)表Docmd.OpenReport格式:Docmd.OpenReport reportname,view,filtername,wherecondition參數(shù)說明:reportname:字符串表達(dá)式,代表當(dāng)前數(shù)據(jù)庫中報(bào)表的有效名稱view:為下列固有常量之一:acViewDesign,acViewNormal,acViewPreviewfiltername:字符串表達(dá)式,代表當(dāng)前數(shù)據(jù)庫中查詢的有效名稱wherecondition:字符串
4、表達(dá)式,不包含Where關(guān)鍵字的有效SQL Where子句二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義 例:預(yù)覽“學(xué)生信息”報(bào)表Docmd.Openreport “學(xué)生信息”,acViwePreview3.關(guān)閉操作Docmd.Close格式:Docmd.Closeobjecttype,objectname,save參數(shù)說明:objiecttype:下列固有常量之一,acDataAccessPage,acDefault,acDiagram,acForm,acMacro,acModule,acQuery,acReport,acServerView,acStoredProcedure,acTable。obj
5、ectname:字符串表達(dá)式,代表有效的對(duì)象名稱。save:下列固有常量之一,acSaveNo,acSavePrompt,acSaveYes。由Docmd.Close命令參數(shù)可以看出,該命令可以廣泛用于關(guān)閉Access各種對(duì)象。省略所有參數(shù)的命令(Docmd.Close)可以關(guān)閉當(dāng)前窗體。二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義例:關(guān)閉“登陸”窗體。Docmd.Close acForm,“登陸”關(guān)閉“登陸”報(bào)表。Docmd.Close acReport,“登陸”二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義 二、輸入框輸入框主要用于顯示提示,并要求用戶輸入文本。它在VBA中以函數(shù)形式調(diào)用。格式:InputB
6、ox(prompt,title,default,xpos,ypos,help)參數(shù)說明:prompt:提示字符串。title:顯示對(duì)話框中標(biāo)題欄的字符串表達(dá)式。default:顯示文本框中的字符串表達(dá)式。xpos:指定對(duì)話框左邊距屏幕左邊的水平距離。ypos:指定對(duì)話框上邊距屏幕上邊的垂直距離。helpfile:為對(duì)話框提供上下文的幫助。context:某個(gè)主題的幫助上下文編號(hào)二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義 注意:輸入?yún)^(qū)缺省值有$返回字符類型,否則為數(shù)值類型。 提示文本如需換行,則用 Chr(13) + Chr(10) 將各行分開。 上圖所示為inputbox的一個(gè)示例,調(diào)用語句如下:s
7、trName=InputBox(請(qǐng)輸入你的姓名 + Chr(13) + Chr(10) + 然后單擊確定, 輸入框, 王曉明, 100, 100)提示缺省值標(biāo)題二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義三、消息框消息框用于在對(duì)話框中顯示消息,等待用戶單擊按鈕,并返回一個(gè)整型值。格式:MsgBox(Prompt,buttons,title,help)參數(shù)說明:prompt:提示字符串title:顯示對(duì)話框中標(biāo)題欄的字符串表達(dá)式buttons:顯示按鈕的數(shù)目及形式,圖標(biāo)的樣式等helpfile:為對(duì)話框提供上下文的幫助context:為某個(gè)主題的幫助上下文編號(hào)例:MsgBox“請(qǐng)輸入學(xué)生姓名”,vbIn
8、formation,“學(xué)生信息”二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義 根據(jù)用戶所選按鈕,根據(jù)用戶所選按鈕,函數(shù)返回函數(shù)返回1 1到到7 7的整數(shù)值,的整數(shù)值,其含義如下其含義如下Buttons選項(xiàng)取值說明選項(xiàng)取值說明二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義 窗體上有兩個(gè)命令按鈕:顯示(cmdDisplay)、測(cè)試(cmdTest)。事件過程的功能是:單擊“測(cè)試”按鈕,彈出消息框,如果單擊消息框的“確定”按鈕,隱藏窗體上的“顯示”按鈕,如果單擊消息框的“取消”按鈕,關(guān)閉窗體。Private Sub cmdTest_Click() Answer=_(“隱藏按鈕”,vbOKCancel) If Answ
9、er=vbOK then cmdDisplay.Visible=_ Else DoCmd.CloseEnd Sub(2006.4)(2006.4)MsgBoxFalse二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義4.VBA編程數(shù)據(jù)驗(yàn)證使用窗體和數(shù)據(jù)訪問頁,每當(dāng)保持記錄數(shù)據(jù)時(shí),所做的更改會(huì)保持到數(shù)據(jù)源表當(dāng)中。在控件中的數(shù)據(jù)被改變之前或記錄數(shù)據(jù)被更新之前會(huì)發(fā)生BeforeUpdate事件。通過創(chuàng)建窗體或控件的BeforeUpdate事件過程,可以實(shí)現(xiàn)對(duì)輸入到窗體控件中的數(shù)據(jù)進(jìn)行各種驗(yàn)證。例如,數(shù)據(jù)類型驗(yàn)證、數(shù)據(jù)范圍驗(yàn)證等。注意:控件BeforeUpdate事件過程是有參過程。通過設(shè)置其參數(shù)Cancel,可
10、以確定BeforeUpdate事件是否會(huì)發(fā)生。將Cancel參數(shù)設(shè)置為True將取消BeforeUpdate事件。此外,在進(jìn)行控件輸入數(shù)據(jù)驗(yàn)證時(shí),VBA提供了一些相關(guān)函數(shù)來幫助驗(yàn)證。二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義 常用驗(yàn)證函數(shù)函數(shù)名稱函數(shù)名稱返回值返回值說明說明IsnumericBoolean值檢驗(yàn)輸入內(nèi)容是否為數(shù)值IsdateBoolean值檢驗(yàn)輸入內(nèi)容是否可以轉(zhuǎn)換為日期IsnullBoolean值檢驗(yàn)輸入內(nèi)容是否為空IsemptyBoolean值檢驗(yàn)輸入內(nèi)容是否已經(jīng)初始化IsarrayBoolean值檢驗(yàn)輸入內(nèi)容是否為數(shù)組IserrorBoolean值檢驗(yàn)輸入內(nèi)容是否為錯(cuò)誤值Isob
11、jectBoolean值檢驗(yàn)輸入內(nèi)容是否表示對(duì)象變量二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義5.計(jì)時(shí)事件在VBA中通過設(shè)置窗體的“計(jì)數(shù)器間隔TimerInterval”屬性與添加“計(jì)時(shí)器觸發(fā)(Timer)”事件來完成定時(shí)功能。其處理過程是:Timer事件每隔TimerInterval時(shí)間間隔就會(huì)被激發(fā)一次,并運(yùn)行Timer事件過程來響應(yīng)。二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義9.2 VBA的數(shù)據(jù)庫編程 VBA通過數(shù)據(jù)庫引擎(Microsof jet)工具完成對(duì)數(shù)據(jù)庫的訪問,所謂數(shù)據(jù)庫引擎其實(shí)是一組動(dòng)態(tài)鏈接庫(DLL),程序運(yùn)行時(shí)被連接到VBA程序,而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問功能。1.VBA中提供了3種數(shù)據(jù)
12、庫訪問接口: ODBC API:開放數(shù)據(jù)庫互連應(yīng)用編程接口。DAO:數(shù)據(jù)訪問對(duì)象。ADO:Active數(shù)據(jù)對(duì)象 2.VBA訪問的三種數(shù)據(jù)庫類型:本地?cái)?shù)據(jù)庫:ACCESS外部數(shù)據(jù)庫 ODBC數(shù)據(jù)庫:如Oracle、SyBase、SQL Server等 二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義3.數(shù)據(jù)庫訪問對(duì)象(DAO)DAO數(shù)據(jù)模型采用的是層次結(jié)構(gòu)。DBEngineWorkspaceDatabaseRecordSetFieldErrorQueryDefDBEngineDBEngine數(shù)據(jù)庫引擎為數(shù)據(jù)庫引擎為DAODAO模型最上層對(duì)象,包含并模型最上層對(duì)象,包含并管理其它對(duì)象。管理其它對(duì)象。二級(jí)二級(jí)A
13、CCESS培訓(xùn)講義培訓(xùn)講義4.ADO對(duì)象ADO數(shù)據(jù)對(duì)象模型Error(s)ConnectionCommandRecordSetField(s)指定數(shù)據(jù)連接提供者,指定數(shù)據(jù)連接提供者,建建立到數(shù)據(jù)源的連接立到數(shù)據(jù)源的連接??蓤?zhí)行一個(gè)命令可執(zhí)行一個(gè)命令,如可執(zhí)行,如可執(zhí)行SQL查詢。查詢。一般用于表結(jié)構(gòu)的修改一般用于表結(jié)構(gòu)的修改??蓤?zhí)行可執(zhí)行SQL查詢返回一個(gè)查詢返回一個(gè)記錄集記錄集,并可對(duì)記錄集進(jìn)行修改、插入、并可對(duì)記錄集進(jìn)行修改、插入、刪除操作。刪除操作。是是ADO中最靈活的對(duì)中最靈活的對(duì)象象。二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義NoImage 例:例:分別用分別用DAO和和ADO來完成對(duì)來完
14、成對(duì)“教學(xué)管理教學(xué)管理.mdb”文件中文件中“學(xué)生表學(xué)生表”的學(xué)生年齡都加的學(xué)生年齡都加1的操作。(假設(shè)文件存放在的操作。(假設(shè)文件存放在E盤盤“考試中心教程考試中心教程”文件夾中)文件夾中)使用使用DAODAO技術(shù):技術(shù): Sub SetAgePlus1() dim ws as DAO.Workspace 工作區(qū)對(duì)象工作區(qū)對(duì)象 dim db as DAO.Database 數(shù)據(jù)庫對(duì)象數(shù)據(jù)庫對(duì)象 dim rs as DAO.Recordset 記錄集對(duì)象記錄集對(duì)象 dim fd as DAO.Field 字段對(duì)象字段對(duì)象 set ws=DBEngine.Workspace(0) set db=
15、ws.OpenDatabase(“e:考試中心教程考試中心教程教學(xué)管理教學(xué)管理.mdb”) 打開數(shù)據(jù)庫打開數(shù)據(jù)庫 set rs=db.OpenRecordSet(“學(xué)生表學(xué)生表”) 返回返回“學(xué)生表學(xué)生表”記錄集記錄集 set fd=rs.Fields(“年齡年齡”) 設(shè)置設(shè)置“年齡年齡”字段字段二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義NoImageDo while not rs.eof 對(duì)記錄集用循環(huán)結(jié)構(gòu)進(jìn)行遍歷對(duì)記錄集用循環(huán)結(jié)構(gòu)進(jìn)行遍歷 rs.edit 設(shè)置為設(shè)置為“編輯編輯”狀態(tài)狀態(tài) fd=fd+1 年齡字段值加年齡字段值加1 rs.update 更新記錄,保存年齡值更新記錄,保存年齡值 r
16、s.movenext 記錄指針移動(dòng)至下一條記錄指針移動(dòng)至下一條 Loop rs.close 關(guān)閉并回收對(duì)象變量關(guān)閉并回收對(duì)象變量 db.close set rs=Nothing 關(guān)閉并回收對(duì)象變量關(guān)閉并回收對(duì)象變量 set db=Nothing End sub二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義NoImage使用使用ADOADO技術(shù):技術(shù): Sub SetAgePlus1() dim cn as New ADODB.Connection 連接對(duì)象連接對(duì)象 dim rs as New ADODB.RecordSet 記錄集對(duì)象記錄集對(duì)象 dim fs as ADODB.Field 字段對(duì)象字段對(duì)
17、象 dim strConnect as String 連接字符串連接字符串 dim strSQL as String 查詢字符串查詢字符串 strconnect=(“e:考試題目考試題目教學(xué)管理教學(xué)管理.mdb”) 設(shè)置連接數(shù)據(jù)庫設(shè)置連接數(shù)據(jù)庫 cn.Provider=“Microsoft.jet.oledb.4.0” 設(shè)置數(shù)據(jù)提供者設(shè)置數(shù)據(jù)提供者 cn.open strconnect 打開與數(shù)據(jù)源的連接打開與數(shù)據(jù)源的連接 strSQL=“select 年齡年齡 from 學(xué)生表學(xué)生表” 設(shè)置查詢語句設(shè)置查詢語句 rs.open strSQL,cn,adOpenDynamic,adLockOp
18、timistic,adCmdText set fd=rs.Fields(“年齡年齡”)二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義NoImage 對(duì)記錄集用循環(huán)結(jié)構(gòu)進(jìn)行遍歷對(duì)記錄集用循環(huán)結(jié)構(gòu)進(jìn)行遍歷 Do while not rs.eof fd=fd+1 年齡字段值加年齡字段值加1 rs.update 更新記錄,保存年齡值更新記錄,保存年齡值 rs.movenext 記錄指針移動(dòng)至下一條記錄指針移動(dòng)至下一條 Loop 關(guān)閉并回收對(duì)象變量關(guān)閉并回收對(duì)象變量 rs.close db.close set rs=Nothing set db=Nothing End sub二級(jí)二級(jí)ACCESS培訓(xùn)講義培訓(xùn)講義 ADO數(shù)據(jù)對(duì)象模型的相關(guān)要點(diǎn)(1)Recordset記錄集對(duì)象記錄指針的移動(dòng)方法: MoveFirst 記錄指針移到第一條記錄記錄指針移到第一條記錄 MoveNext 記錄指針移到當(dāng)前記錄的下一條記錄記錄指針移到當(dāng)前記錄的下一條記錄MovePrevious 記
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院會(huì)議邀請(qǐng)函
- 辦公家具買賣合同
- 車間的管理制度
- 初中英語邀請(qǐng)函的
- 汽車后懸架系統(tǒng)設(shè)計(jì):鋼板彈簧的創(chuàng)新設(shè)計(jì)
- 杰出教育工作者:個(gè)人成就與貢獻(xiàn)案例分析
- 鐵路安全生產(chǎn)規(guī)章制度
- 安全生產(chǎn)管理原理有
- 數(shù)字教育時(shí)代高職教學(xué)模式的創(chuàng)新路徑研究
- 監(jiān)理安全管理規(guī)章制度
- 2025年7月新疆維吾爾自治區(qū)學(xué)業(yè)水平合格性考試歷史試題(含答案)
- 建立并優(yōu)化醫(yī)院的藥品管理體系
- 農(nóng)村農(nóng)資采購與供應(yīng)長期合作協(xié)議
- 反假幣培訓(xùn)課件
- 2025至2030中國電壓暫降治理行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 遼寧省2024年7月普通高中學(xué)業(yè)水平合格性考試化學(xué)試卷(含答案)
- 煤炭造價(jià)知識(shí)培訓(xùn)
- 2025屆遼寧省大連市高新區(qū)英語七年級(jí)第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含答案
- 腫瘤全程康復(fù)管理制度
- 對(duì)患者的健康教育制度
- 2025年酒店管理專業(yè)基礎(chǔ)知識(shí)考試試題及答案
評(píng)論
0/150
提交評(píng)論