在 MS Access 中使用 SQL 更新空字段

Update Null Fields with SQL in MS Access

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

我正在收货

Run time Error '3061' Too Few Parameters. Expected 1

但它的格式似乎正确。

我使用的代码如下。用户将作为字符串传递,例如- "Joe Bloggs".

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

我认为您需要在查询中使用单引号将用户作为 '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

EDIT: As @jarlh has mentioned I agree, I don't think that the square parentheses are required

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

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