如何将Form的值转换为SQL查询?

时间:2017-03-23 12:47:55

标签: ms-access ms-access-2016

我正在尝试获取执行此操作的Access SQL查询(下面的半伪代码)

UPDATE SignIn SET SignIn.Complete=True, CompletedBy=(Select [FirstName] & " " & [LastName] AS EmployeeName From UserList where POid = Forms!HiddenUserCheck!txtPOid), CompletedDateTime=Now()

因此,在运行查询之后,数据库中的数据看起来像

Complete EmployeeName CompletedDateTime
True     John Smith   3/23/2017 8:34:10 AM

更新查询因语法不起作用而无法确定如何解决。

确切的错误消息是

  

子查询中的备注,OLE或超链接对象无效' [FirstName]& " "   &安培; [姓氏]'

2 个答案:

答案 0 :(得分:0)

由于Double Exclamation标记,查询可能会失败。而不是

Forms!HiddenUserCheck!txtPOid

尝试

Forms!HiddenUserCheck.txtPOid

您的WHERE Statment

末尾还有一个额外的)

答案 1 :(得分:0)

好的,那么你的问题可能是子查询可能会返回多条记录:

UPDATE 
    SignIn 
SET 
    SignIn.Complete=True, 
    CompletedBy = 
        (Select First([FirstName] & " " & [LastName]) AS EmployeeName 
        From UserList 
        Where POid = Forms!HiddenUserCheck!txtPOid), 
    CompletedDateTime = Now()

如果您的名称字段是Memo / LongText字段,则可能是错误的来源。如果是这样,请尝试:

UPDATE 
    SignIn 
SET 
    SignIn.Complete=True, 
    CompletedBy = 
        (Select First(Left([FirstName], 255) & " " & Left([LastName], 255)) AS EmployeeName 
        From UserList 
        Where POid = Forms!HiddenUserCheck!txtPOid), 
    CompletedDateTime = Now()

编辑。

您可以尝试使用 DLookup 作为子查询:

UPDATE 
    SignIn 
SET 
    SignIn.Complete=True, 
    CompletedBy = 
        DLookup("[FirstName] & " " & [LastName]", "UserList", "POid = " & Forms!HiddenUserCheck!txtPOid & ""), 
    CompletedDateTime = Now()