- - PR -
◆明細画面で更新すると”フィールド '管理番号' は更新できません。”とエラー
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-01 19:04
※引用の順番が前後しています。
エラー内容で示されたものは、固定資産テーブル上にある更新できない列である "管理番号" をUPDATEクエリで更新しようとしたために、Accessが出したエラーです。 (オートナンバー型は、レコードを登録するときにAccessが自動的に番号を振り、以降は更新できません) ここまではOKですか?
次に、ではいったいどの処理が更新を実行しているのでしょうか? それがこの部分です。
TableAdapter についての説明は割愛しますが、Update() メソッドで実行されるクエリ情報は UpdateCommand プロパティ内にあります。 UpdateCommand プロパティの中身ですが、OleDbCommand オブジェクトなどを扱った経験があれば、それと同じようなものだと思ってください。 デザイナ上から 固定資産TableAdapter を選択して、そのプロパティを見ます。UpdateCommand プロパティがあると思いますので、クエリテキストを確認してください。おそらく "管理番号" を更新するように書かれていると思います。 # UpdateCommandプロパティの中身を編集するためのメニューもどこかにあったと思いますが、場所は忘れてしまいました。 修正するためには、UpdateCommand の内容を手で編集するか、自動で作り直すかのどちらかになると思います。 手で編集する場合は、クエリテキストから、その列を更新している部分を削除することになります。あわせて、パラメータの数と順番が編集後のクエリと対応するように、パラメータのほうも直す必要があります。 自動で作り直す方法ですが、個人的には抵抗があります。 最初に自動生成したときに "管理番号" 列を更新するようなクエリになっていたのはなぜか? この疑問に説明がつけば、自動生成で大丈夫だと思います。 (例えば、以前作ったときには主キーを設定していなかった、など) | ||||||||||||
|
投稿日時: 2008-10-01 19:35
rainさん、たびたびありがとうございます。
なるほど、rainさんご指摘の通りこの"固定資産"テーブルは以前ACCESSで使用していた テーブルをそのまま流用したものです。 ご指摘の 「デザイナ上から 固定資産TableAdapter を選択して、 そのプロパティを見ます。UpdateCommand プロパティ があると思いますので、クエリテキストを確認してく ださい。おそらく "管理番号" を更新するように書か れていると思います。」 との事でCommandTextを調べました。内容は次のとおりです。 UPDATE `T04固定資産` SET `管理番号` = ?, `機類` = ?, `名称` = ?, `構造` = ?, `細目` = ?, `取得日` = ?, ・・・・・・・・・・・・・・・・・・・とありました。 これをどのように修正したらよいのでしょうか。よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2008-10-02 08:10
ご指導いただきましたrainさん、からあげさん、Kingさん、ありがとうございました。
「UpdateCommand の内容を手で編集するか、自動で作り直すかのどちらかになる」との ことでしたが、どちらも難しそうなことに合せて、固定資産テーブルに不要の項目が あることなどから、再度固定資産テーブルを作り直してセットしました。 おかげさまで正常に動作しております。今回のことで古いテーブルの流用や途中で オートナンバーに設定すると、こんなトラブルが発生することもある事を学びました。 ありがとうございました。 [ メッセージ編集済み 編集者: One.net 編集日時 2008-10-02 11:36 ] |