2013-04-18 63 views
2

我目前遇到更新查詢問題,它在我們的某個Oracle表中更新了一列。基本上我們將一個CSV文件導入到Access中,將其稱爲'NewULN',然後使用此文件中的條件來更新我們的表格。MS Access更新Oracle數據庫 - 查詢問題

如果您手動輸入人員代碼,此腳本工作正常。它會相應地更新表格並顯示正確的結果。代碼如下:

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 - '無效數字'」,其他時間「只能綁定一個長整數值才能插入長列」。

ULN字段一直是Text,它以前一直工作,MISIdentifier總是Text(當我們在Windows XP上有一個運行版本)時,但現在我已將其更改爲Long Int。

我沒有寫這個,它在我們將機器升級到Windows 7後停止工作,所以我現在不得不用很少的Access知識來重寫它。你已經在做

感謝我提前

回答

0

原來,創建一個新的Access數據庫並重新鏈接所有的表再次啓用此查詢工作。語法沒有錯:-)

1

在你的第二個查詢得到任何答覆上NewULN.MISIdentifier = FES_PEOPLE.PERSON_CODE一個JOIN所以也包括在WHERE子句是多餘的這一條件。也許這是在向作品投入一把扳手?

+0

感謝您的輸入,我甚至沒有注意到這一點。我拿出WHERE子句中的位並運行更新,但得到了一個鎖定違規錯誤。它再次更新的第一條記錄,但未能對其他67 新代碼: UPDATE NewULN INNER JOIN FES_PEOPLE ON NewULN.MISIdentifier = FES_PEOPLE.PERSON_CODE SET FES_PEOPLE.UNIQUE_LEARN_NO = [NewULN] [ULN] WHERE(NewULN。 ULN不是空的); – Zakerias

0

您使用什麼ODBC驅動程序連接到Oracle?如果使用Microsoft for Oracle驅動程序,請嘗試使用Oracle驅動程序。 MS驅動程序自版本7以來沒有更新過,因此不應使用。