2

第一次提问,通常我可以通过搜索找到答案,但是我的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)”:自动化错误。

试图将记录插入的数据库包含一个表usage,其中包含两列-UserID 和AccessDate,分别格式化为文本和日期时间。

奇怪的部分是连接字符串似乎没问题,因为它在连接已经打开后失败,但是如果我在运行执行之前获取 sCommand 值,然后将其粘贴到访问中的查询中并执行它 - 它运行良好!

如果它在日期时间格式上遇到困难,我尝试将其切换为文本(以及代码中的主题标签),但仍然失败。我也尝试过指定列名。

谁能阐明我做错了什么?我从来没有在一个非常简单的 SQL 上遇到过这么多麻烦。

提前致谢!

4

1 回答 1

2

在 Access 中,我们需要指定字段名称。即便如此,我发现我需要将表名括在方括号中,然后才能插入:

sCommand = "INSERT INTO [Usage] (UName, SomeDate) VALUES ('" & Environ("Username") _
    & "',#" & Now() & "#)"
于 2013-07-29T09:57:28.533 回答