【问题标题】:VBA ACCESS - ERROR 2465VBA 访问 - 错误 2465
【发布时间】:2017-02-06 05:41:04
【问题描述】:

我试图将这些特定值放到表中,但遇到了问题。

代码:

CurrentDb.Execute "INSERT INTO FollowUpsDataBase(ER NUMBER, SUBJECT, FORWARDED TO, CASEHANDLER, [DUE DATE])" & " VALUES('" & [Me.cmdErNumber] & "','" & Me.cmdSubject & "','" & [Me.cboForwardedTo] & "','" & [Me.cboCasehandler] & "','" & [Me.cmdDueDate] & "')"

有人能指出我为什么这不起作用吗?

【问题讨论】:

  • 所以这就是结果。它确实有效并且没有更多错误,但它仍然不会在表格中插入详细信息。相反,它直接插入到子窗体中。此外,我使用的组合框给出了数字而不是我给它的字符串。

标签: vba ms-access


【解决方案1】:

表单变量不需要方括号:

CurrentDb.Execute "INSERT INTO FollowUpsDataBase([ER NUMBER], SUBJECT, [FORWARDED TO], CASEHANDLER, [DUE DATE])" & _
" VALUES('" & Me.cmdErNumber & "','" & Me.cmdSubject & "','" & Me.cboForwardedTo & "','" & Me.cboCasehandler & "','" & Me.cmdDueDate & "')"

根据 ClintB 的回答,加上 SQL 中缺少方括号

【讨论】:

  • 所以这就是结果。它确实有效并且没有更多错误,但它仍然不会在表格中插入详细信息。相反,它直接插入到子窗体中。此外,我使用的组合框给出了数字而不是我给它的字符串。
【解决方案2】:

如果字段名称中有空格,则需要使用 [方括号]

CurrentDb.Execute "INSERT INTO FollowUpsDataBase([ER NUMBER], SUBJECT, [FORWARDED TO], CASEHANDLER, [DUE DATE])" & " VALUES('" & Me.cmdErNumber & "','" & Me.cmdSubject & "','" & Me.cboForwardedTo & "','" & Me.cboCasehandler & "','" & Me.cmdDueDate & "')"

如果仍然无法正常工作,您需要发布错误消息。

此外,根据 Sergey S 的上述评论,您的表单控件周围有一些方括号。

【讨论】:

    【解决方案3】:

    您还需要正确包装日期值的字符串表达式 - 如果 ER NUMBER 确实是数字,则不要使用引号:

    CurrentDb.Execute _
    "INSERT INTO FollowUpsDataBase([ER NUMBER], SUBJECT, [FORWARDED TO], CASEHANDLER, [DUE DATE]) " & _
    "VALUES(" & Me!cmdErNumber.Value & ",'" & Me!cmdSubject.Value & "','" & Me!cboForwardedTo.Value & "','" & Me!cboCasehandler.Value & "',#" & Format(Me!cmdDueDate.Value, "yyyy\/mm\/dd") & "#)"
    

    【讨论】:

    • 请注意,将 .Value 添加到某些类型的控件可能会导致问题。 .Value 是默认属性,因此除非需要,否则不应显式使用。
    • 是的,这是 C# 的习惯......但它不可能导致任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2014-05-12
    • 2018-09-21
    相关资源
    最近更新 更多