【问题标题】:Update Null Fields with SQL in MS Access在 MS Access 中使用 SQL 更新 Null 字段
【发布时间】:2016-07-27 00:32:28
【问题描述】:

我正在尝试在 Access VBA 中运行一些 SQL 命令,以使用从表单中的组合框获得的值更新列中的空白(空)字段。

目前我正在接收

运行时错误“3061”参数太少。预计 1

但它似乎格式正确。

我正在使用的代码如下。用户将作为字符串传递,例如- “乔博客”。

Public Sub testSub(user as string)
Dim db as DAO.Database
Dim sqlstr as String
set db as CurrentDB

sqlstr = "UPDATE tTable1 SET Field1 = [" & user & "] WHERE Field1 IS NULL;"

db.Execute sqlstr

End Sub

【问题讨论】:

  • 为什么是方括号?在这种情况下,这不是表示列名吗?
  • 照顾Jim O'Shea

标签: sql vba ms-access ms-access-2003


【解决方案1】:

考虑参数查询,而不是将带引号的字符串值连接到UPDATE 语句文本中。使用参数方法时不需要这些引号,这也可以保护您免受issue Alex warned about 的影响(当用户字符串本身包含撇号时)。

Public Sub testSub(ByVal pUser As String)
    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim sqlstr As String

    sqlstr = "UPDATE tTable1 SET Field1 = [which_user] WHERE Field1 IS NULL;"
    Set db = CurrentDb
    Set qdf = db.CreateQueryDef(vbNullString, sqlstr)
    qdf.Parameters("which_user").Value = pUser
    qdf.Execute sqlstr, dbFailOnError
End Sub

【讨论】:

    【解决方案2】:

    我认为您需要在查询中使用单引号将用户作为'string'。另外,我一直用set db = currentdb而不是as

    Public Sub testSub(user as string)
    Dim db as DAO.Database
    Dim sqlstr as String
    set db = CurrentDB
    
    sqlstr = "UPDATE tTable1 SET Field1 = '" & user & "' WHERE Field1 IS NULL;"
    
    db.Execute sqlstr
    
    End Sub
    

    编辑: 正如@jarlh 提到的,我同意,我认为不需要方括号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多