VBA使用Access附加查询

时间:2015-01-16 15:50:33

标签: sql vba ms-access access-vba

我正在尝试向表单添加一个按钮,以将表单内容添加为表格中的新行。我以前写过这行代码,但这次它没有用。

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

我没有尝试使整个字符串工作,而是将代码减少到只添加一个框(其中一个自动填充的框)。我得到符文时错误'438':对象不支持此属性或方法。

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

代码如下:

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)

我很沮丧!我对此仍然很陌生,我觉得完全不符合我的要素。

2 个答案:

答案 0 :(得分:2)

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

CurrentProject.Connection.Execute strInsert

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

或者像这样DAO ......

CurrentDb.Execute strInsert, dbFailOnError

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

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

然后您应该看到Debug.Print输出类似于此...

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

如果没有围绕 OH08801405 的引号,db引擎将不会理解它应该是一个应该插入的字符串值,而是假设它是一个你没有提供值的参数

答案 1 :(得分:1)

我必须假设错误消息发生在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")
相关问题