大家好,今日繼續講解VBA與數據庫的第4講內容:VBA如何與數據庫建立連接。我的講解從簡(jiǎn)單入手,逐漸將進(jìn)入較為復雜的階段,之前的內容主要以了解范疇的知識較多,將逐漸過(guò)渡到實(shí)際的操作。這講內容仍需要讀者以了解為側重,但相關(guān)的知識點(diǎn)還是需要有一個(gè)清晰的輪廓。
VBA可以訪(fǎng)問(wèn)的數據庫類(lèi)型有Microsoft access、dBase、Microsoft SQLServer、Oracle 等,這給VBA的利用范圍得到擴展。我們的講解主要是VBA與Access數據庫的連接方式,這種連接是大多數的應用。
一、利用ODBC方式連接Access數據庫
利用這種方式連接數據庫,必須先注冊數據源DSN,目前,Windows提供32位和64位ODBC驅動(dòng)程序,但在A(yíng)ccess中,使用ODBC API訪(fǎng)問(wèn)數據庫需要大量的VBA函數原型聲明,操作繁瑣,因此很少使用。這里就不再多說(shuō)了。
二 通過(guò)OLEDB方式連接access數據庫
OLE DB是用于訪(fǎng)問(wèn)數據的Microsoft系統級別的編程接口。它是一個(gè)規范,定義了一組組件接口規范,封裝了各種數據庫管理系統服務(wù),是ADO的基本技術(shù)和ADO.NET的數據源
set conn=Server.CreateObject('ADODB.Connection')
conn.open 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='&<數據庫名>&';Persist Security Info=False'
三 通過(guò)DAO方式連接Access數據庫
DAO提供了一個(gè)訪(fǎng)問(wèn)數據庫的對象模型,利用其中定義的一系列數據訪(fǎng)問(wèn)對象(如:Database、Recordset等),可以實(shí)現對數據庫的各種操作,由于在創(chuàng )建數據庫時(shí)系統并不自動(dòng)引用DAO庫,所以需要用戶(hù)自行進(jìn)行引用設置。具體設置步驟如下:
(1)在VBE工作環(huán)境中,選擇'工具'菜單中的'引用'命令,打開(kāi)'引用'對話(huà)框。
(2)在'可使用的引用'列表中勾選 'Microsoft DAO 3.6 Object Library' 如下圖:
利用DAO 訪(fǎng)問(wèn)數據庫 首先要創(chuàng )建對象變量,
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
Set ws = DBEngine.workspae(0) '打開(kāi)默認工作區
Set db = ws.OpenDatabase('<數據庫名>') ' 打開(kāi)數據庫
四 利用ADO方式連接Access數據庫
ADO是基于組件的數據庫編程接口。使用ADO可以方便地連接任何符合ODBC(開(kāi)放式數據庫連接)標準的數據庫。ADO是DAO的后繼產(chǎn)物。相比DAO,ADO擴展了DAO使用的層次對象模型,用較少的對象、更多的方法和事件來(lái)處理各種操作,簡(jiǎn)單易用,是當前數據庫開(kāi)發(fā)的主流技術(shù)。
1 引用ADO
(1)在VBE工作環(huán)境中,選擇'工具'菜單中的'引用'命令,打開(kāi)'引用'對話(huà)框。
(2)在'可使用的引用'列表中勾選 Microsoft ActiveX Data Object *.* Library,這里的*.*是指的時(shí)ADO的版本號,一般來(lái)說(shuō),應用程序或ActiveX控件都具有向下兼容性,所以我們盡可能選擇比較新的版本.以確保程序在能識別舊版本Access的同時(shí),也能識別較新版本的Access.
2.用CreateObject創(chuàng )建對象: Set Conn = CreateObject(ADODB.Connection)
創(chuàng )建了對象之后,下一步我們要做的就是打開(kāi)數據庫了.先看下面的代碼,可以成功的打開(kāi)數據庫:
Set Conn = CreateObject(ADODB.Connection)
strPath = ThisWorkbook.Path & '\mydata.accdb'
Conn.Open 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' & strPath
在之后的《VBA與數據庫》的講解中,主要利用的是ADO的連接,以后會(huì )逐漸的展開(kāi)給大家慢慢的講解。
數據庫內容是VBA內的一塊較為重要的部分,同時(shí)也是對于學(xué)習人員水平的一個(gè)提高,但是,如果我之前的內容沒(méi)有弄懂的朋友,還是請先弄懂之前的內容,在《VBA代碼解決方案》中,我講解了147講較為有代表的案例,可以覆蓋大多數的知識點(diǎn),基本掌握后再看數據庫相關(guān)的操作,更會(huì )好些。
今日內容回向:
1 常見(jiàn)的幾種連接數據庫的方式是否有個(gè)大概的印象呢?
2 這幾種常見(jiàn)的方式中那種是比較年輕的呢?
聯(lián)系客服