Google
 

星期六, 4月 25, 2009

如何透過DAO存取資料庫

有時我們需要在Excel中存取資料庫中的資料,這時就可以透過DAO操作。

最簡便的方式,是在系統中設定好ODBC資料來源,然後就可以用DAO連接這個資料來源,而不用管後端的資料庫是什麼。

假設我有一個ODBC資料來源,叫MyDSN,以jonaschen登入。
它所存取的資料庫中有一個table叫employee,這個table有三個欄位: emp_id, name, tel。

你必需先引用DAO,才可以使用它。
引用方式是在工具中選擇設定引用項目,然後勾選"Microsoft DAO 3.6 Object Library"(或其它版本)。

以下是一個範例,說明如何透過DAO的Connection物件執行SQL INSERT指令,在資料庫中新增一筆資料;然後再利用SQL SELECT指令將所需的資料截取到一個Recordset中,把所有資料依序顯示出來。

Sub OpenConnection()

Dim wrkODBC As Workspace
Dim conTEST As Connection
Dim rsTemp As Recordset


' Create ODBCDirect Workspace object.
Set wrkODBC = CreateWorkspace("NewODBCWorkspace", "jonaschen", "", dbUseODBC)


' Open Connection object, where "MyDSN" is a data source name registered on the system
Set conTEST = wrkODBC.OpenConnection("MyDSN")

' insert record
On Error GoTo Err_Execute
conTEST.Execute ("insert employee value(""000009"",""ABC"",""119"")")
On Error GoTo 0

Set rsTemp = conTEST.OpenRecordset("select * from employee")

With rsTemp
Do While Not .EOF
Debug.Print , .Fields(0), .Fields(1), .Fields(2)
.MoveNext
Loop
End With

Set rsTemp = Nothing

conTEST.Close
wrkODBC.Close

Exit Sub

Err_Execute:

' Notify user of any errors that result from
' executing the query.
If DBEngine.Errors.Count > 0 Then
For Each errLoop In DBEngine.Errors
MsgBox "Error number: " & errLoop.Number & vbCr & errLoop.Description
Next errLoop
End If

Resume Next

End Sub

張貼留言