現在、Oracle テーブルの 1 つの列を更新する更新クエリに問題があります。基本的に、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 の知識がほとんどない状態で書き直さなければなりません。
事前に返信していただきありがとうございます