sql - excel中的ado,将记录插入access数据库

标签 sql vba ms-access ado insert-into

第一次提问,通常我可以通过搜索找到答案,但今天我的 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 值,然后将其粘贴到 Access 中的查询中并执行它 - 它会运行很好!

如果 Access 与日期时间格式发生冲突,我尝试将其切换为文本(以及代码中的主题标签),但仍然失败。我也尝试过指定列名称。

任何人都可以阐明我做错了什么吗?我从来没有在使用非常简单的 SQL 时遇到如此多的麻烦。

提前致谢!

最佳答案

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

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

关于sql - excel中的ado,将记录插入access数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17919696/

相关文章:

vba - 在 Excel-VBA 中为整列添加撇号

vba - 自动生成问题处理

ms-access - 循环记录集并添加到字典/集合 : item key exists

python - 将 VBA Type/C 结构移植到 Python ctypes.Structure : array of strings with fixed length

class - 使 Excel 工作表成为类模块成员

mysql - MS Access + ODBC 8.0 + MySQL 某些字段显示前 10 行 =0,但 MySQL 显示其他值

mysql - 触发器在 PhpMyAdmin sql 选项卡中不起作用

sql - 使用 select 语句获取子表中的记录数

sql - 选择最近点的最有效方法

mysql - 如何在 SQL 中按最大日期分组(Order By a Group By)