VBA 使用 Access 追加查询

VBA Append Query Using Access

我正在尝试向表单添加一个按钮,以将表单的内容作为新行添加到我的 table 中。之前写过这行代码,这次不行了

我的表单包含文本和整数。加载表单时会自动填充表单上的 3 个框。 (自动填充的框会改变什么吗?)

我没有尝试使整个字符串都起作用,而是减少了我的代码以仅添加一个框(自动填充的框之一)。我收到运行时错误“438”:对象不支持此 属性 或方法。

我尝试用谷歌搜索错误,但找不到任何适用的内容。

代码如下:

Dim strInsert As String

strInsert = "INSERT INTO NLog(IDKEY) " & _
    " Values(" & Me.TxtIdKey & ")"

Debug.Print strInsert
CurrentProject.Execute strInsert, dbFailOnError


MsgBox ("Entry Added")

当我查看调试屏幕时,它显示以下内容: 插入 NLog(IDKEY)值(OH08801405)

我很沮丧!我对此还是很陌生,感觉完全不适应

您可以像这样使用 ADO 执行 INSERT 语句...

CurrentProject.Connection.Execute strInsert

注意 CurrentProject.Connection.Execute,而不是 CurrentProject.Execute,并且从 ADO 执行时不包括 DAO 常量 dbFailOnError

或者像这样使用 DAO ...

CurrentDb.Execute strInsert, dbFailOnError

此外,您试图将文本值插入 IDKEY 字段。假设文本是该字段的正确数据类型,请在您要插入的值周围添加引号 ...

strInsert = "INSERT INTO NLog(IDKEY) " & _
    " Values('" & Me.TxtIdKey & "')"

然后您应该会看到 Debug.Print 类似这样的输出...

INSERT INTO NLog(IDKEY) Values('OH08801405')

如果 OH08801405 周围没有引号,数据库引擎将无法理解它应该是一个应该插入的字符串值,而是假设它是一个您没有的参数'提供了一个值。

我必须假设错误消息发生在 CurrentProject.Execute strInsert, dbFailOnError,因为您的调试实际上显示了一些东西。

您需要建立与数据库的连接并使用 db.Execute strInsert, dbFailOnError

你这样声明一个连接:

Dim db As DAO.Database
Set db = CurrentDb

所以你应该得到这样的结果:

Dim strInsert As String
Dim db As DAO.Database

strInsert = "INSERT INTO NLog(IDKEY) " & _
            " Values(" & Me.TxtIdKey & ")"

Debug.Print strInsert

Set db = CurrentDb
db.Execute strInsert, dbFailOnError


MsgBox ("Entry Added")