我需要更新基于查询的表。查询 (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 和所有字段都存在于表中之外,这些变量都是数字的。为什么无法识别表?