【问题标题】:Access VB Error 3061: too few parameters, expected 1Access VB 错误 3061:参数太少,应为 1
【发布时间】:2016-05-23 18:00:38
【问题描述】:

我正在编写一个简单的 SQL 查询来更新我的测试数据库中的一个表,但是我遇到了问题:

Public Sub UpdateStatus(TypeName As String)
Dim DBase As Database
Dim SQLCommand As String
Dim qdfChange As QueryDef
SQLCommand = "Update Case SET Status = 1 WHERE TypeName = '" & TypeName & "';"
Debug.Print SQLCommand

Set DBase = OpenDatabase("C:\TestDatabase\CaseSet.accdb")
Set qdfChange = DBase.CreateQueryDef("", SQLCommand)
qdfChange.Execute
End Sub

表 Case 中的字段名称与我的 SQL 查询中的字段名称匹配。

(如果这是任何值,则该函数属于一个表单)

【问题讨论】:

  • 你能直接运行你的SQL吗?您的实际列/表名称是 Access 中的保留字吗? barfoo 是什么数据类型?
  • foo 是数字,bar 是短文本
  • bar 的设置是否正确?能否在SQLCommand= 行上设置断点并验证bar 是否有值?
  • 是的栏设置正确
  • 是表名field1?你真的可以把不应该泄露个人/专有数据的 SQL 语句放出来吗?

标签: sql ms-access vba


【解决方案1】:

Case is a reserved word and TypeName is a VBA Function. 这使他们无法选择数据库对象名称。

如果您无法重命名它们,请在 SQL 语句中将这些名称括起来,以便 db 引擎将它们识别为对象名称。

SQLCommand = "Update [Case] SET Status = 1 WHERE [TypeName] = '" & TypeName & "';"

【讨论】:

    猜你喜欢
    • 2018-08-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多