Access數(shù)據(jù)庫技術(shù)與應(yīng)用教程課件第10章 數(shù)據(jù)庫編程_第1頁
Access數(shù)據(jù)庫技術(shù)與應(yīng)用教程課件第10章 數(shù)據(jù)庫編程_第2頁
Access數(shù)據(jù)庫技術(shù)與應(yīng)用教程課件第10章 數(shù)據(jù)庫編程_第3頁
Access數(shù)據(jù)庫技術(shù)與應(yīng)用教程課件第10章 數(shù)據(jù)庫編程_第4頁
Access數(shù)據(jù)庫技術(shù)與應(yīng)用教程課件第10章 數(shù)據(jù)庫編程_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第10章數(shù)據(jù)庫編程用ADO訪問數(shù)據(jù)庫用DAO訪問數(shù)據(jù)庫程序運(yùn)行錯(cuò)誤處理本章要點(diǎn):10.1數(shù)據(jù)庫編程概述學(xué)習(xí)數(shù)據(jù)庫編程,首先要了解一些基本知識(shí),包括;數(shù)據(jù)庫對(duì)象類型、數(shù)據(jù)庫接口、指針移動(dòng)等。10.1.1數(shù)據(jù)庫對(duì)象類型

用數(shù)據(jù)庫編程方法訪問數(shù)據(jù)庫,首先要定義數(shù)據(jù)庫對(duì)象變量,系統(tǒng)為不同的數(shù)據(jù)庫對(duì)象提供了不同的屬性和方法,這些屬性和方法要由數(shù)據(jù)庫對(duì)象變量來調(diào)用。常用數(shù)據(jù)庫對(duì)象類型:

類型類型名Workspace工作區(qū)對(duì)象Database數(shù)據(jù)庫對(duì)象Connection連接對(duì)象Command命令對(duì)象Recordset記錄集對(duì)象Field字段對(duì)象Error錯(cuò)誤對(duì)象10.1.2數(shù)據(jù)庫訪問接口

數(shù)據(jù)庫訪問接口是指將VBA與后臺(tái)數(shù)據(jù)庫連接起來的代碼片段,即VBA與Access數(shù)據(jù)庫連接的方法。設(shè)計(jì)數(shù)據(jù)庫應(yīng)用程序通常需要訪問數(shù)據(jù)庫,而操縱數(shù)據(jù)庫中的數(shù)據(jù)就要了解數(shù)據(jù)庫接口技術(shù)。VBA主要提供3種數(shù)據(jù)庫訪問接口:1.開放式數(shù)據(jù)庫連接ODBC:(OpenDatabaseConnectivity)稱為開放式數(shù)據(jù)庫連接,是一種關(guān)系型數(shù)據(jù)庫的接口界面。ODBC把SQL作為訪問數(shù)據(jù)庫的標(biāo)準(zhǔn),通過一組通用代碼給數(shù)據(jù)庫提供驅(qū)動(dòng)程序。2.DAO(DataAccessObjects):

DAO稱為“數(shù)據(jù)訪問對(duì)象”,是一種面向?qū)ο蟮慕缑娼涌冢峁┮粋€(gè)訪問數(shù)據(jù)庫的對(duì)象模型,用其中定義的一系列數(shù)據(jù)訪問對(duì)象,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的各種操作。使用DAO的程序編碼非常簡(jiǎn)單。3.ADO(ActiveXDataObjects):ADO稱為“Active數(shù)據(jù)對(duì)象”,是基于組件的數(shù)據(jù)庫編程接口。ADO實(shí)際是一種提供訪問各種數(shù)據(jù)類型的連接機(jī)制,是一個(gè)與編程語言無關(guān)的COM(ComponentObjectModel)組件系統(tǒng)。ADO設(shè)計(jì)為一種極簡(jiǎn)單的格式,可以方便地連接任何符合ODBC標(biāo)準(zhǔn)的數(shù)據(jù)庫。

VBA可以識(shí)別3類數(shù)據(jù)庫:本地?cái)?shù)據(jù)庫:即Access數(shù)據(jù)庫。外部數(shù)據(jù)庫:所有索引順序訪問方法(ISAM)數(shù)據(jù)庫,如VFP。也可以訪問文本文件數(shù)據(jù)庫和MicrosoftExcel或Lotus1-2-3電子表格。ODBC數(shù)據(jù)庫:符合ODBC標(biāo)準(zhǔn)的C/S數(shù)據(jù)庫,如SQLServer、Oracle。10.1.3VBA可訪問的數(shù)據(jù)庫類型

10.1.4指針定位

系統(tǒng)為記錄集對(duì)象提供指針定位方法:MoveFirst:將指針移到當(dāng)前記錄集的第一條記錄。MoveLast:將指針移到當(dāng)前記錄集的最后一條記錄。MoveNext:將指針從當(dāng)前位置向后移到下一條記錄。MovePrevious:將指針從當(dāng)前位置向回移到上一條記錄。Move:將指針從當(dāng)前位置移過指定數(shù)量的記錄。DAO提供了一種通過程序代碼創(chuàng)建和操縱數(shù)據(jù)庫的機(jī)制;借助VBA代碼靈活地控制數(shù)據(jù)庫訪問的各種操作。如:查詢記錄、添加記錄、刪除記錄等。10.2用DAO訪問數(shù)據(jù)庫10.2.1DAO模型結(jié)構(gòu)DAO模型是設(shè)計(jì)關(guān)系數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)的對(duì)象類的集合,它們提供了管理關(guān)系型數(shù)據(jù)庫系統(tǒng)所需的全部操作的屬性和方法,其中包括創(chuàng)建數(shù)據(jù)庫、定義表、字段和索引、建立表之間的關(guān)系、定位和查詢數(shù)據(jù)庫等。

10.2.2DAO對(duì)象簡(jiǎn)介DBEngine對(duì)象,處于最頂層,表示數(shù)據(jù)庫引擎,是模型中惟一不被其他對(duì)象所包含的對(duì)象,它包含并控制DAO模型中其他全部對(duì)象。Workspace對(duì)象,表示工作區(qū),可以使用隱含的workspace對(duì)象。Database對(duì)象,代表到數(shù)據(jù)庫的連接,表示操作的數(shù)據(jù)庫對(duì)象。RecordSet對(duì)象,代表一個(gè)數(shù)據(jù)記錄的集合,該集合的記錄來自于一個(gè)表、一個(gè)查詢或一個(gè)SQL語句的運(yùn)行結(jié)果。Field對(duì)象,表示記錄集中的字段。QueryDef對(duì)象,表示數(shù)據(jù)庫查詢信息。Error對(duì)象,表示數(shù)據(jù)提供程序出錯(cuò)時(shí)的擴(kuò)展信息。

1.用DAO訪問數(shù)據(jù)庫的流程

定義DAO對(duì)象變量,定義時(shí)在對(duì)象類型的前面加上前綴“DAO”。通過對(duì)象變量調(diào)用對(duì)象的方法,設(shè)置對(duì)象的屬性,實(shí)現(xiàn)數(shù)據(jù)庫的各種訪問。10.2.3用DAO訪問數(shù)據(jù)庫10.2.3用DAO訪問數(shù)據(jù)庫2.用DAO訪問數(shù)據(jù)庫的一般語句和步驟:下面的程序段給出了用DAO訪問數(shù)據(jù)庫的一般語句和步驟

Dimwsas

DAO.Workspace

'定義Workspace對(duì)象變量DimdbasDAO.Database

'定義Database對(duì)象變量DimrsasDAO.RecordSet

'定義RecordSet對(duì)象變量DimfdasDAO.Field

'定義Field對(duì)象變量Setws=DBEngine.Workspace(o)'打開默認(rèn)工作區(qū)Setdb=ws.OpenDatabase(數(shù)據(jù)庫的地址與文件名)'打開數(shù)據(jù)庫Setrs=db.OpenRecordSet(表名、查詢名或SQL語句)'打開記錄集DoWhilenotrs.EOF'循環(huán)遍歷整個(gè)記錄集直至記錄集末尾

……'對(duì)字段的各種操作rs.MoveNext'記錄指針移到下一條Loop

'返回到循環(huán)開始處rs.close'關(guān)閉記錄集db.close'關(guān)閉數(shù)據(jù)庫setrs=nothing'釋放記錄集對(duì)象變量所占內(nèi)存空間setdb=nothing'釋放數(shù)據(jù)庫對(duì)象變量所占內(nèi)存空間3.用DAO打開數(shù)據(jù)庫的快捷方式

如果是本地?cái)?shù)據(jù)庫,定義Workspace對(duì)象變量可以省略;將打開工作區(qū)和打開數(shù)據(jù)庫兩條語句合并為一條語句:Setdb=CurrentDb(),這是用DAO打開數(shù)據(jù)庫的快捷方式?!纠?0-1】設(shè)計(jì)一個(gè)窗體,向“學(xué)生管理”數(shù)據(jù)庫的“學(xué)生信息”表添加一個(gè)記錄。添加紀(jì)錄按鈕的click事件代碼如下:Privatesubc1_click()Rem定義Recoedset對(duì)象變量DimwsasDao.WorkspaceDimrstasDao.RecordsetDimdbasDao.Database‘打開一個(gè)工作區(qū)

Setws=DBEngine.Workspaces(0)

Rem打開一個(gè)數(shù)據(jù)庫

Setdb=ws.OpenDatabase(“D\ACCESS\學(xué)生管理.mdb”)Setrst=db.OPenRecordset(“學(xué)生信息”)‘創(chuàng)建一條空的記錄

Rst.addnewRem為新的記錄賦值

Rst.fields(“學(xué)號(hào)”)=”20100105”Rst.fields(“姓名”)=”陽陽”

Rst.fields(“性別”)=”女”Rst.fields(“年齡”)=20Rst.fields(“入學(xué)時(shí)間”)=#2010/09/12#Rem刷新表,將記錄加入到表中

Rst.UpdateRst.Closedb.Closeendsub運(yùn)行窗體,單擊“添加記錄”命令按鈕,即可向“學(xué)生信息”表中添加一條記錄。例10-2:按職稱調(diào)整工資,用DAO方法將數(shù)據(jù)更新到本地?cái)?shù)據(jù)庫的數(shù)據(jù)表中,代碼附加給命令按鈕的單擊事件,調(diào)整后工資增加的總數(shù)額顯示在文本框中。

PrivateSubc1_Click()

DimdbAsDAO.Database'定義數(shù)據(jù)庫變量

DimrsAsDAO.Recordset'定義記錄集變量

DimgzAsDAO.Field'定義字段變量

DimzcAsDAO.Field‘定義字段變量

DimsumAsSingle

'定義單精度變量

DimrateAsSingle'定義單精度變量Setdb=CurrentDb()'快捷方式打開數(shù)據(jù)庫

Setrs=db.OpenRecordset("gz")'打開記錄集

Setgz=rs.Fields("工資")'字段與字段變量建立連接

Setzc=rs.Fields("職稱")'字段與字段變量建立連接

sum=0'求和變量清零

DoWhileNotrs.EOF'循環(huán)開始

rs.Edit'使記錄集可編輯

Select

Casezc'進(jìn)入多項(xiàng)選擇

CaseIs="教授":rate=0.15'教授工資上調(diào)15%

CaseIs="副教授":rate=0.1'副教授工資上調(diào)10%

CaseElse:rate=0.05'其他人工資上調(diào)5%

EndSelectsum=sum+gz*rate'累加調(diào)整的錢數(shù)

gz=gz+gz*rate'工資調(diào)整

rs.Update'更新到表中

rs.MoveNext'指針移到下一條記錄

Loop

'開始下一次循環(huán)

rs.Closedb.Close

Setrs=Nothing

Setdb=NothingText1=sum'調(diào)整工資的總數(shù)額顯示在文本框中

DoCmd.OpenTable"gz"'打開更新后的表

EndSub轉(zhuǎn)到窗體視圖→單擊命令按鈕。

10.3用ADO訪問數(shù)據(jù)庫

10.3.1ADO模型結(jié)構(gòu)ADO對(duì)象模型是一系列對(duì)象的集合,對(duì)象不分級(jí),除Field對(duì)象和Error對(duì)象之外,其他對(duì)象可直接創(chuàng)建。使用時(shí),通過對(duì)象變量調(diào)用對(duì)象的方法、設(shè)置對(duì)象的屬性,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問。10.3.2ADO對(duì)象簡(jiǎn)介1.Connection對(duì)象,建立到數(shù)據(jù)源的連接。2.Command對(duì)象,表示一個(gè)命令。3.RecordSet對(duì)象,表示數(shù)據(jù)操作返回的記錄集合。4.Field對(duì)象,表示記錄集中的字段。5.Error對(duì)象,表示數(shù)據(jù)提供程序出錯(cuò)時(shí)的擴(kuò)展信息。

Connection對(duì)象與RecordSet對(duì)象是兩個(gè)ADO中最重要的對(duì)象。RecordSet對(duì)象可以分別與Connection對(duì)象和Command對(duì)象聯(lián)合使用。

10.3.3用ADO訪問數(shù)據(jù)庫的流程首先創(chuàng)建對(duì)象變量然后用對(duì)象的方法和屬性訪問數(shù)據(jù)庫。為了與DAO對(duì)象有所區(qū)分,ADO對(duì)象的前面加前綴“ADODB”。10.3.4

ADO訪問數(shù)據(jù)庫的一般語句和步驟

1.RecordSet對(duì)與Connection對(duì)象聯(lián)合使用DimcnasnewADOBD.Connection'建立連接對(duì)象DimrsasnewADOBD.RecordSet'建立記錄集對(duì)象cn.Provider="Microsoft.Jet.OLEDB.4.0"

'設(shè)置數(shù)據(jù)提供者cn.Open連接字符串'打開數(shù)據(jù)庫rs.Open查詢字符串'打開記錄集dowhilenotrs.EOF'循環(huán)開始

……'對(duì)字段的各種操作rs.movenext‘記錄指針移到下一條loop

'返回到循環(huán)開始處rs.close'關(guān)閉記錄集cn.close'關(guān)閉連接setrs=nothing'釋放記錄集對(duì)象變量所占內(nèi)存空間setcn=nothing'釋放連接對(duì)象變量所占內(nèi)存空間說明:對(duì)于本地?cái)?shù)據(jù)庫,Access的VBA也給ADO提供了類似于DAO的數(shù)據(jù)庫打開快捷方式,可以將設(shè)置數(shù)據(jù)提供者和打開數(shù)據(jù)庫兩條語句用下面一條語句代替:

Setcn=CurrentProject.Connection()

2.RecordSet對(duì)與Command對(duì)象聯(lián)合使用DimcmasnewADOBD.Command'建立命令對(duì)象DimrsasnewADOBD.RecordSet'建立記錄集對(duì)象cm.ActiveConnection=連接字符串'建立命令對(duì)象的活動(dòng)連接cm.CommandType=查詢類型'指定命令對(duì)象的查詢類型cm.CommandText=查詢字符串'建立命令對(duì)象的查詢字符串rs.Opencm,其他參數(shù)'打開記錄集dowhilenotrs.EOF'循環(huán)開始

……'對(duì)字段的各種操作rs.movenext'記錄指針移到下一條loop

'返回到循環(huán)開始處rs.close'關(guān)閉記錄集setrs=nothing'釋放記錄集對(duì)象變量所占內(nèi)存空間

溫馨提示

  • 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)論