0

最近、Oracle から SQL Server に切り替えましたが、以前は機能していたこの古い更新ステートメントがありましたが、現在は「操作は更新可能なクエリでなければなりません」というエラーが発生しています。クエリの種類が更新に設定されています。管理者として実行しようとしましたが成功しませんでした。select ステートメントを問題なく実行できたので、接続は問題ありませんか?

AccessではなくSSMSでの作業に慣れているため、本当に単純なものが欠けているだけかどうかはわかりません。Update ステートメントのコードは次のとおりです。

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]));

ご回答ありがとうございます。

4

2 に答える 2

1

エラー「操作は更新可能なクエリでなければなりません」。
ほとんどの場合、インデックス作成の問題を意味し、通常は主キーがありません。また、クエリのプロパティ ページを確認し、スナップショットとダイナセットの設定を探します。

于 2013-07-22T16:26:28.250 に答える
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]));
于 2013-07-22T08:04:51.537 に答える