0

我需要更新基于查询的表。查询 (tmp_Assign) 是一个直接的单表查询,用于提取特定于位置和日期的数据。导致错误的代码如下。

Set Assgnrst = CurrentDb.OpenRecordset("tmp_Assign", dbOpenDynaset)
Set SlpOccrst = CurrentDb.OpenRecordset("tmp_Occ", dbOpenDynaset)
Set OpenRms = CurrentDb.OpenRecordset("tmp_Open", dbOpenDynaset)
   
Do While Not Assgnrst.EOF
    SleepChoice = Assgnrst.SleepingChoice
    Arrive = Assgnrst.Arrival
    .
    .
    .
    MemID = Assgnrst.MemberID
    RmID = OpenRms.RmNum
    'End With
    'Add room # to member's gathering record
    strSQL = "Update [Assgnrst] " _
           & "Set [RmNum] = '" & RmID & "' WHERE [GatheringID] = " & GathID & " And " _
           & "[EventYr] = " & EvntYr & " And [MemberID] = " & MemID & ";"
    DoCmd.RunSQL (strSQL)

在运行 DoCmd.RunSQL 之前,strSQL 包含:

Update [Assgnrst] Set [RmNum] = '22A1' WHERE GatheringID = 5 And EventYr = 2021 And [MemberID] = 4290;

我已将 strSQL 复制到 Access Create Query SQL 中,它按预期工作(使用表所基于的查询名称)。

我将查询作为表打开的原因是因为我尝试在查询上使用更新代码(所有三个都需要更新)但在所有三个上都遇到了类似的错误。我将查询作为表打开,其他两个工作正常。这个没有。

省略号表示执行 FindFirst 以选择开放房间的代码。它工作正常。我不理解这个错误,因为这整个部分是一个基于 Assgnrst 表的 DO 循环,并且 SleepChoice 变量是从 Assgnrst 表中设置的。语句中的变量已正确声明和设置。除了 RmID 和所有字段都存在于表中之外,这些变量都是数字的。为什么无法识别表?

4

0 回答 0