【发布时间】:2013-04-18 10:15:29
【问题描述】:
我目前遇到了更新查询的问题,该查询更新了我们的一个 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'”,有时会弹出“Can bind a long value only for insert into a long column”。
字段 ULN 一直是 Text 并且之前一直有效,MISIdentifier 也一直是 Text(当我们在 Windows XP 上运行此版本时)但现在我已将其更改为 Long Int。
这不是我最初写的,在我们将机器升级到 Windows 7 后它就停止工作了,所以我现在不得不在几乎不了解 Access 的情况下重写它。
感谢我提前收到的任何回复
【问题讨论】:
标签: sql oracle ms-access sql-update