2013-07-22 27 views
0

我們最近從Oracle切換到SQL Server,並且我們有這個舊的更新語句曾經工作,但現在給出的錯誤'操作必須是可更新的查詢'。那麼查詢類型設置爲更新,我試圖以管理員身份運行它,沒有成功,我們能夠運行select語句沒有問題,所以連接必須正常嗎?舊的訪問更新聲明

我不確定我是否僅僅錯過了一些非常簡單的事情,因爲我習慣於在SSMS中工作而不是訪問。更新語句的代碼如下:

UPDATE dbo_LEARNER_AIMS 
INNER JOIN dbo_REGISTRATION_UNITS ON dbo_LEARNER_AIMS.RUL_CODE = dbo_REGISTRATION_UNITS.RUL_CODE 
SET dbo_LEARNER_AIMS.END_DATE = [EXP_END_DATE], 
dbo_LEARNER_AIMS.COMPLETION = "10", 
dbo_LEARNER_AIMS.OUTCOME = "40", 
dbo_REGISTRATION_UNITS.FES_PROGRESS_CODE = "EXT", 
dbo_REGISTRATION_UNITS.FES_PROGRESS_DATE = [EXP_END_DATE], 
dbo_REGISTRATION_UNITS.PROGRESS_STATUS = "X" 
WHERE (((dbo_LEARNER_AIMS.END_DATE) Is Null) 
AND ((dbo_LEARNER_AIMS.FUNDING_YEAR)="17") 
AND ((dbo_LEARNER_AIMS.LEARNING_AIM) = [Enter Aim]) 
AND ((dbo_LEARNER_AIMS.EXP_END_DATE) Between #8/1/2012# 
AND [enter expected end date])); 

在此先感謝您的任何答案。

+0

我還沒有理解你,你在Access或SQL Server上運行這個嗎? –

+0

對不起,如果我沒有解釋得很好 - 我在Access中運行更新。 – Zakerias

回答

1

錯誤 '操作必須是一個可更新的查詢'。
幾乎總是意味着索引問題,通常是缺少主鍵。 也 檢查查詢的屬性頁,尋找快照與動態集設置。

+0

確實。查詢更新視圖沒有主鍵..我改變它來更新相關表格中的數據,它工作。謝謝你的幫助。 – Zakerias

1

嘗試此查詢:

UPDATE dbo_LEARNER_AIMS 

SET END_DATE = [EXP_END_DATE], 
COMPLETION = "10", 
OUTCOME = "40", 
/* 
dbo_REGISTRATION_UNITS.FES_PROGRESS_CODE = "EXT", 
dbo_REGISTRATION_UNITS.FES_PROGRESS_DATE = [EXP_END_DATE], 
dbo_REGISTRATION_UNITS.PROGRESS_STATUS = "X" 

You can't update multiple table in one update statement ! */ 

FROM dbo_LEARNER_AIMS /* add this line */ 
INNER JOIN dbo_REGISTRATION_UNITS ON dbo_LEARNER_AIMS.RUL_CODE = dbo_REGISTRATION_UNITS.RUL_CODE 

WHERE (((dbo_LEARNER_AIMS.END_DATE) Is Null) 
AND ((dbo_LEARNER_AIMS.FUNDING_YEAR)="17") 
AND ((dbo_LEARNER_AIMS.LEARNING_AIM) = [Enter Aim]) 
AND ((dbo_LEARNER_AIMS.EXP_END_DATE) Between #8/1/2012# 
AND [enter expected end date])); 
+0

你好,謝謝你的建議,但我在UPDATE語句中出現語法錯誤時,我添加了一行:FROM dbo_LEARNER_AIMS :-(。 – Zakerias

+0

我的不好,看看編輯 – jazzytomato

+0

嗨湯姆,我們怎麼能更新多個表當這個查詢用來更新我們的Oracle表?+'d您的答案迄今爲止您的努力。 – Zakerias