2013-07-29 65 views
1

第一次提問,通常我可以通過搜索找到答案,但我的google-fu今天似乎很弱。ado在excel中,插入記錄到訪問數據庫中

我有一個Excel工作簿連接到一個Access 2003數據庫中插入使用記錄

的代碼我使用的是:

sdbpath = ThisWorkbook.Path & "\Data.mdb" 
sCommand = "INSERT INTO Usage VALUES('" & Environ("Username") & "',#" & Now() & "#)" 

Dim dbCon As New ADODB.Connection 
Dim dbCommand As New ADODB.Command 

dbCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sdbpath & "; Jet OLEDB:Database Password=TestPass;" 
dbCommand.ActiveConnection = dbCon 

dbCommand.CommandText = sCommand 
dbCommand.Execute 

dbCon.Close 

上線dbCommand.Execute代碼失敗,運行 - 時間錯誤'-2147217900(80040e14)':自動化錯誤。

試圖插入記錄到的數據庫包含一個表,用法和兩列 - UserID和AccessDate,分別格式化爲文本和DateTime。

奇怪的部分是連接字符串看起來不錯,因爲它在連接已經打開後失敗,但是如果我在運行execute之前取得sCommand值,那麼將它粘貼到訪問中的查詢中並執行它 - 它運行良好!

如果它是訪問掙扎與日期時間格式我試着將其切換到文本(和代碼中的標籤),但仍然失敗。我也嘗試過指定列名稱。

任何人都可以闡明我做錯了什麼?我從來沒有遇到過這麼簡單的SQL問題。

在此先感謝!

回答

1

在Access中,我們需要指定字段名稱。即使如此,我發現我需要在表格名稱中包括方括號,然後才能插入:

sCommand = "INSERT INTO [Usage] (UName, SomeDate) VALUES ('" & Environ("Username") _ 
    & "',#" & Now() & "#)" 
+0

啊哈,謝謝 - 不記得用法是一個保留字。謝謝你的幫助! – David

+0

不用擔心。現在有意義;) –

相關問題