相同的UPDATE查询。一个有效,另一个无效

尝试使用从不同Recordsets获取的UPDATE查询更新表。一个UPDATE查询运行并更新记录,但另一个运行,不更新记录,并且在问题所在的位置不引发任何错误。我怀疑它在WHERE子句中的某处,但无法查明。

我在引号附近玩耍,但是没有运气,这是我最困惑的地方。单引号,双引号和&字符令我有些困惑。

extArea_SQL = "SELECT * FROM Area;"
Set rsArea = CurrentDb.OpenRecordset(extArea_SQL,dbOpenDynaset)
extDiscipline_SQL = "SELECT * FROM Disciplines;"
Set rsDisp = CurrentDb.OpenRecordset(extDiscipline_SQL,dbOpenDynaset)

instAreaName_SQL = "UPDATE ReportGen SET ReportGen.AreaName = '" & rsArea.Fields("AreaName") & "' WHERE ReportGen.AreaID = '" & rsArea.Fields("AreaID") & "';"
updtDispName_SQL = "UPDATE ReportGen SET ReportGen.DisciplineName = '" & rsDisp.Fields("DisciplineName") & "' WHERE ReportGen.DisciplineID = '" & rsDisp.Fields("DisciplineID") & "';"

db.Execute instAreaName_SQL,dbFailOnError
db.Execute updtDispName_SQL,dbFailOnError

我还想指出AreaName和Discipline数据是字符串,并且具有特殊字符,例如-,()/等。

不确定较低的(updtDispName_SQL)UPDATE查询在做错什么,因为上面的查询没有问题。我复制粘贴了一种有效的格式,并更改了较低的一种格式,但仍然无法指出。

有人可以指出我在这里错过了什么吗?

qqqqj 回答:相同的UPDATE查询。一个有效,另一个无效

请考虑不使用记录集的纯SQL,因为Access支持JOINUPDATE中的子查询。将以下内容另存为存储的查询,并根据需要使用GUI或VBA运行。不同于您的代码不会循环并且只会在当前记录集行(不一定是第一行)上运行,下面的查询在所有匹配的行上运行。

SQL

查询1

UPDATE ReportGen r
INNER JOIN Area a
  ON r.AreaID = a.AreaID
SET r.AreaName = a.AreaName;

查询2

UPDATE ReportGen r
INNER JOIN Disciplines d
   ON r.DisciplineID = d.DisciplineID
SET r.DisciplineName = d.DisciplineName;

VBA

'DOES NOT SHOW WARNINGS
CurrentDb.Execute "mySavedUpdateQuery"

'DOES SHOW WARNINGS (NO NEED TO CLOSE ACTION QUERIES)
DoCmd.OpenQuery "mySavedUpdateQuery"
本文链接:https://www.f2er.com/3155954.html

大家都在问