- PR -

◆明細画面で更新すると”フィールド '管理番号' は更新できません。”とエラー

投稿者投稿内容
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-10-01 19:04
※引用の順番が前後しています。

引用:

One.netさんの書き込み (2008-10-01 17:32) より:

からあげさんの言われるとおり"管理番号"は主キーに設定していてオートナンバーです。
申し訳ありませんが、ご指導いただいた中身がまだ理解できていませんので、しばらく
時間を下さい。とりあえずお返事が遅くなったことをお詫びいたします。


エラー内容で示されたものは、固定資産テーブル上にある更新できない列である "管理番号" をUPDATEクエリで更新しようとしたために、Accessが出したエラーです。
(オートナンバー型は、レコードを登録するときにAccessが自動的に番号を振り、以降は更新できません)
ここまではOKですか?

引用:

rainさんの言われる「固定資産TableAdapter で持っている更新クエリ(UpdateCommand
プロパティ)の中身が怪しい」とのことですが意味がよく理解できていません。自動生成
の中身にも管理番号を更新しようとしている箇所があるかもしれないということでしょうか。


次に、ではいったいどの処理が更新を実行しているのでしょうか?
それがこの部分です。
コード:
    Me.固定資産TableAdapter.Update(Me.DataSet1.固定資産)


TableAdapter についての説明は割愛しますが、Update() メソッドで実行されるクエリ情報は UpdateCommand プロパティ内にあります。
UpdateCommand プロパティの中身ですが、OleDbCommand オブジェクトなどを扱った経験があれば、それと同じようなものだと思ってください。

デザイナ上から 固定資産TableAdapter を選択して、そのプロパティを見ます。UpdateCommand プロパティがあると思いますので、クエリテキストを確認してください。おそらく "管理番号" を更新するように書かれていると思います。
# UpdateCommandプロパティの中身を編集するためのメニューもどこかにあったと思いますが、場所は忘れてしまいました。

修正するためには、UpdateCommand の内容を手で編集するか、自動で作り直すかのどちらかになると思います。

手で編集する場合は、クエリテキストから、その列を更新している部分を削除することになります。あわせて、パラメータの数と順番が編集後のクエリと対応するように、パラメータのほうも直す必要があります。

自動で作り直す方法ですが、個人的には抵抗があります。
最初に自動生成したときに "管理番号" 列を更新するようなクエリになっていたのはなぜか? この疑問に説明がつけば、自動生成で大丈夫だと思います。
(例えば、以前作ったときには主キーを設定していなかった、など)
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-10-01 19:35
rainさん、たびたびありがとうございます。
なるほど、rainさんご指摘の通りこの"固定資産"テーブルは以前ACCESSで使用していた
テーブルをそのまま流用したものです。
ご指摘の
「デザイナ上から 固定資産TableAdapter を選択して、
そのプロパティを見ます。UpdateCommand プロパティ
があると思いますので、クエリテキストを確認してく
ださい。おそらく "管理番号" を更新するように書か
れていると思います。」
との事でCommandTextを調べました。内容は次のとおりです。

UPDATE `T04固定資産` SET `管理番号` = ?, `機類` = ?, `名称` = ?, `構造` = ?,
`細目` = ?, `取得日` = ?, ・・・・・・・・・・・・・・・・・・・とありました。

これをどのように修正したらよいのでしょうか。よろしくお願いいたします。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-10-02 08:10
ご指導いただきましたrainさん、からあげさん、Kingさん、ありがとうございました。
「UpdateCommand の内容を手で編集するか、自動で作り直すかのどちらかになる」との
ことでしたが、どちらも難しそうなことに合せて、固定資産テーブルに不要の項目が
あることなどから、再度固定資産テーブルを作り直してセットしました。

おかげさまで正常に動作しております。今回のことで古いテーブルの流用や途中で
オートナンバーに設定すると、こんなトラブルが発生することもある事を学びました。
ありがとうございました。


[ メッセージ編集済み 編集者: One.net 編集日時 2008-10-02 11:36 ]

スキルアップ/キャリアアップ(JOB@IT)