第一次提问者,通常我可以通过搜索找到答案,但我今天的google-fu似乎很弱。
我有一个连接到Access 2003数据库的Excel工作簿以插入使用记录
我使用的代码是:
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,分别格式化为text和DateTime。
奇怪的部分是连接字符串似乎没问题,因为它在连接已经打开后失败了,但是如果我在执行run之前获取sCommand值,那么将它粘贴到访问中的查询中并执行它 - 它运行细!
如果是使用日期时间格式进行访问,我尝试将其切换为文本(以及代码中的主题标签),但仍然失败。我也尝试过指定列名。
任何人都可以了解我做错了什么吗?我用一个非常简单的SQL来解决这个问题。
提前致谢!
答案 0 :(得分:2)
在Access中,我们需要指定字段名称。即便如此,我发现在插入之前我需要将表名包装在方括号中:
sCommand = "INSERT INTO [Usage] (UName, SomeDate) VALUES ('" & Environ("Username") _
& "',#" & Now() & "#)"