我正在编写一个数据库,我只是想使用tblSchedule
中的ItemNo
更新tblStock
,但在尝试运行时遇到错误:
操作必须是可更新的查询
我似乎无法弄清楚为什么它不起作用。
UPDATE [tblSchedule]
SET [tblSchedule].ItemNo =
(SELECT DISTINCT Item
FROM [tblStock], [tblSchedule]
WHERE [tblStock].Bookcode=[tblSchedule].[PartCode]
)`;
真的很感激任何帮助
答案 0 :(得分:0)
您在SQL中缺少结束括号。
UPDATE [tblSchedule] Set
[tblSchedule].ItemNo = (
SELECT DISTINCT Item
FROM [tblStock], [tblSchedule -- Missing closing bracket
WHERE ((([tblStock].Bookcode)=[tblSchedule].[PartCode]))
)
尝试关闭tblSchedule
上的括号。
我没有Access数据库来为你测试这个。
答案 1 :(得分:0)
我的猜测是你的内部SELECT返回2条记录而不是1条记录。
您可以执行此操作进行验证。
SELECT Items.ItemNo, count(*) total
FROM
(
SELECT DISTINCT Sc.ItemNo, St.Item
FROM
[tblSchedule] Sc INNER JOIN
[tblStock] St ON Sc.PartCode = St.Bookcode
) as Items
GROUP BY Items.ItemNo
HAVING count(*) > 1;
答案 2 :(得分:0)
由于我想要的简单性,我已经走下了成功运作的Dlookup路线。
UPDATE [tblSchedule], [tblStock] SET [tblSchedule].ItemNo = DLookUp("Item","[tblStock]","[tblStock].Bookcode='" & [tblSchedule].[PartCode] & "'")
WHERE (([tblStock].[Bookcode]=[tblSchedule].[PartCode]));
这可能不是最好的方法,但是由于它更新的记录数量很少(252),它可以完美地工作而不会有任何明显的时间延迟。
再次感谢! 克里斯