在維基百科內的Access說明;初學者一定要去看啊。
在Access的VBA中執行SQL語句,有三種方法。
- DoCmd.RunSQL:基於Access的物件方法,使用Microsoft Jet SQL,可以在SQL語句中可以使用VBA函式。需要在呼叫前設定
DoCmd.SetWarnings False關閉提示或確認對話方塊。執行時在Access狀態列顯示進度條,可通過Esc鍵中止執行。不能取得SQL語句影響的記錄行數。不能將多個SQL語句的執行放在同一事務中。 - CurrentDB.Execute:基於DAO物件,使用Microsoft Jet SQL,可以在SQL語句中可以使用VBA函式。能取得SQL語句影響的記錄行數。可以將多個SQL語句的執行放在同一事務中。
- CurrentProject.Connection.Execute:基於ADO物件模型,連線到不同資料庫(Excel)。對Access使用ISO SQL標準語法並可以使用VBA函式。沒有提示或確認對話方塊的顯示。執行時沒有在Access狀態列顯示進度條,不可以通過Esc鍵中止執行。能取得SQL語句影響的記錄行數。可以將多個SQL語句的執行放在同一事務中。
Dim strSQL As String
strSQL = "SELECT * INTO [excel 8.0;database=d:\gz.xls].sheet1 FROM tableA WHERE tableA.city = 'gz' "
:REM 執行該函數進行SQL查詢
CurrentProject.Connection.Execute strSQL
以上例子是ADO物件方法連結到Excel , 更多說明請連結 : 使用 ADO 查詢 Excel 試算表
Set m=CurrentDB.OpenRecordset(“Select * From 客 戶”)
為什麼SQL語法放在這裡面就可以用,很神奇的。更加深我的研究精神,雖然我還是不懂。
現在我懂了;因為這一篇文章片斷,我懂了CurrentDB是DAO的方法,如下:

