我目前遇到更新查询的问题,该查询更新了我们的一个 Oracle 表中的一列。基本上,我们将一个 CSV 文件导入 Access,将其命名为“NewULN”,然后使用该文件中的标准来更新我们的表。
如果您手动输入人员代码,此脚本可以正常工作。它用正确的结果相应地更新表。代码如下:
UPDATE NewULN INNER JOIN FES_PEOPLE ON NewULN.MISIdentifier = FES_PEOPLE.PERSON_CODE SET FES_PEOPLE.UNIQUE_LEARN_NO = [NewULN].[ULN]
WHERE (NewULN.ULN Is Not Null) AND (FES_PEOPLE.PERSON_CODE=[Enter Person Code]);
我们现在希望一次更新所有记录,但我们一直很难做到这一点。这是我认为下面的代码可以:
原始代码:
UPDATE NewULN INNER JOIN FES_PEOPLE ON NewULN.MISIdentifier = FES_PEOPLE.PERSON_CODE SET FES_PEOPLE.UNIQUE_LEARN_NO = [NewULN].[ULN]
WHERE (NewULN.ULN Is Not Null) AND (FES_PEOPLE.PERSON_CODE=NewULN.MISIdentifier);
最新版本(基于建议):
UPDATE NewULN INNER JOIN FES_PEOPLE ON NewULN.MISIdentifier = FES_PEOPLE.PERSON_CODE SET FES_PEOPLE.UNIQUE_LEARN_NO = [NewULN].[ULN]
WHERE (NewULN.ULN Is Not Null);
但是我们遇到了各种各样的错误——有时当您尝试运行访问查询时,Access 会崩溃。
有时它会出现锁冲突(有趣的是,它会更新第一条记录,然后失败所有其他记录)。有时会弹出错误“FES_PEOPLE - 'invalid number'”,有时会弹出“只能绑定长值以插入长列”。
字段 ULN 一直是 Text 并且以前一直有效,MISIdentifier 也一直是 Text(当我们在 Windows XP 上运行此版本时)但现在我已将其更改为 Long Int。
这不是我最初写的,在我们将机器升级到 Windows 7 后它停止工作,所以我现在不得不在几乎不了解 Access 的情况下重写它。
感谢我提前收到的任何回复