参数错误 MS Access SQL

Parameters Error MS Access SQL

我在这里遇到参数错误:db.Execute strSQL, dbFailOnError"too few parameters, expected 1"。我不确定到底是为什么。我正在引用两个表。我也不是 100% 这写得正确 Workername = " & DLookup("username", "attendance", GetNextAssignee("program", "Language", "username")) 我希望 [Workername] 字段更新为链接到我没有得到的 GetNextAssignee("program", "Language", "username") 的工人名称,它可以连接到这个错误。

Public Function AssignNullProjects() As Long

    Dim db As dao.Database
    Dim rs As dao.Recordset
    Dim strSQL As String

    Set db = CurrentDb
    strSQL = "SELECT CFRRRID, [program], [language] FROM CFRRR WHERE assignedto Is Null"
    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
    If Not rs.BOF And Not rs.EOF Then
        While Not rs.EOF

            strSQL = "UPDATE CFRRR,attendance SET assignedto = " & GetNextAssignee("program", "Language", "username") & ", assignedby = " & Forms!Supervisor!NavigationSubform!assignedby.Value & ", Dateassigned = #" & Now & "#, actiondate = #" & Now & "#, Workername = " & _
                              DLookup("username", "attendance", GetNextAssignee("program", "Language", "username")) & ", WorkerID = " & DLookup("UserID", "attendance", GetNextAssignee("program", "Language", "username")) & " WHERE CFRRRID = " & rs!CFRRRID
            Debug.Print strSQL
            db.Execute strSQL, dbFailOnError
            rs.MoveNext
        Wend
    End If

    rs.Close
    db.Close
    Set rs = Nothing
    Set db = Nothing

End Function

这是 Debug.Print strSQL 显示的内容:

UPDATE CFRRR,attendance
SET
    assignedto = 7,
    assignedby = 33,
    Dateassigned = #5/16/2015 11:16:31 AM#,
    actiondate = #5/16/2015 11:16:31 AM#,
    Workername = Lillian,
    WorkerID = 6
WHERE CFRRRID = 6

Workername 似乎是一个文本字段,您想将字符串 Lillian 存储在那里。添加引号以便数据库引擎理解 Lillian 是文字文本而不是参数名称。

UPDATE CFRRR
SET
    assignedto = 7,
    assignedby = 33,
    Dateassigned = Now(),
    actiondate = Now(),
    Workername = 'Lillian',
    WorkerID = 6
WHERE CFRRRID = 6

由于数据库引擎支持 Now() 函数,您可以要求它将 Now() 的值存储在您的 Dateassignedactiondate 字段。这比在 VBA 中获取 Now() 的值,然后在该值周围添加 # 个字符以连接到语句文本中更简单。

我怀疑 UPDATE CFRRR,attendance 是否是正确的选择。这将是两个 table 之间的 CROSS JOIN,Access 可能因此决定查询不可更新。我建议你 UPDATE 只是 CFRRR table.