第一次提问,通常我可以通过搜索找到答案,但今天我的 google-fu 似乎很弱。
我有一个 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)”:自动化错误。
它尝试插入记录的数据库包含一个表,usage,有两列 - UserID 和 AccessDate,分别格式化为文本和日期时间。
奇怪的是连接字符串似乎没问题,因为它在连接打开后失败,但如果我在执行运行之前获取 sCommand 值,然后将其粘贴到访问中的查询中并执行它 - 它运行良好!
如果访问与日期时间格式发生冲突,我尝试将其切换为文本(以及代码中的主题标签),但仍然失败。我也尝试过指定列名称。
谁能阐明我做错了什么?我从来没有在使用非常简单的 SQL 时遇到如此大的麻烦。
提前致谢!
在 Access 中,我们需要指定字段名称。即便如此,我发现在插入之前我需要将表名括在方括号中:
sCommand = "INSERT INTO [Usage] (UName, SomeDate) VALUES ('" & Environ("Username") _
& "',#" & Now() & "#)"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)