【发布时间】:2018-02-17 14:16:50
【问题描述】:
我有一个 DAO 记录集,它遍历一个记录集并在另一个表上运行 SQL 语句,更新该表的记录。由于某种原因,它不喜欢在 SQL 语句的 where 子句中使用记录集值。我已经尝试了我能想到的一切。
strSQL = "Select A, B FROM TABLE1"
Set rs = CurrentDb.OpenRecordset(strSQL)
If Not rs.BOF and Not rs.EOF Then
rs.MoveFirst
While (Not rs.EOF)
DoCmd.RunSQL "UPDATE TABLE2 SET TABLE2.B = rs!B WHERE TABLE2.A = rs!A;"
rs.MoveNext
Wend
End If
rs.Close
唯一的麻烦是 where 子句。 set 子句没有问题,即使它以相同的方式访问值。我在 where 子句中遇到数据类型不匹配错误。
【问题讨论】:
-
TABLE1.A 和 TABLE2.A 的字段类型是什么?它们都是字符串吗?
-
您没有使用记录集值...。您正在使用字符串“rs!A”和“rs!B”...。您需要插入 rs 的值!A 和 rs!B 到 SQL 查询字符串中......在互联网上查找
string concatenation -
天哪。只需将其编写为单个查询即可。通过循环和构建 SQL 语句来做到这一点太疯狂了!
标签: sql vba recordset mismatch