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")
我正在尝试向表单添加一个按钮,以将表单的内容作为新行添加到我的 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")