Datagridで『更新に必要なキー列の情報が足りません。』のエラーメッセージを表示させないようにするには?


あきる  2007-01-17 00:37:56  No: 134864

お世話になります。あきると申します。

本題ですが、
Datagridで『更新に必要なキー列の情報が足りません。』のエラーメッセージを表示させないようにするには?
です。

環境ですが
・OS⇒WINDOWS XP
・アプリ⇒VisualBasic6.0
・データベース⇒Mysql4.025-Max
・VBの使用しているコンポーネント⇒Microsoft ADO Data Control 6.0(OLEDB)、Microsoft Datagird Control6.0(OLEDB)です。

只今、簡易な入金処理の画面を作成しております。
Microsoft ADO Data Control 6.0よりJOINしたテーブルをMicrosoft Datagird Control6.0(OLEDB)にデータソースを連結させレコードを
表示させるには成功しました。
ですが、そのセルの項目の値を変更したところ、
『更新に必要なキー列の情報が足りません。』のエラーメッセージを表示
されました。このエラーメッセージを表示させないで、セルの項目を変更
させ、テーブルを更新するにはどうしたらよいのでしょうか。
Microsoft ADO Data Control 6.0よりJOINしたテーブルをMicrosoft Datagird Control6.0(OLEDB)にデータソースを連結させただけでは、
テーブルは更新されないのでしょうか(UPDATE文等プログラムを明示
させないと駄目なのでしょうか。)

又、インターネットでこの文章の質問の回答を導き出そうと
思いましたが(MicrosoftのMSDNです。)、回答はVB.netしか記載
されておりません。皆様はインターネットでどのようにして
VisualBasic6.0のDatagridの疑問を解決されておりますか?

ご教授お願い致します。


魔界の仮面弁士  2007-01-17 04:51:24  No: 134865

JOIN すると、主キー情報を得にくくなるのか、更新が阻害されることはありますね。

とりあえず確認することは、DataGrid というよりも、
  Recordset の Supports メソッドで、adUpdate (バッチモードでは adUpdateBatch) の
  戻り値が、どのようになっているのか。
を確認することでしょう。これが False を返してくるようであれば、
そのレコードセットが更新がサポートしないという意味になってきます。

このあたりは、データベースの種類や、プロバイダの違い、主キーの構成、
リレーションの張り方、CursorType, CursorLocation, LockType の組み合わせ等、
幾つかの条件に依存しますので、一般的に「こうすれば良い」とは言い難いです。

たとえばプロバイダによっては、JOIN した 複数のテーブルを更新するのか、
それとも一方だけを更新するのかといった情報を、Recordset に対する
ダイナミックプロパティ(Propertiesコレクション)に、更新先の
テーブルやキー情報などを指定できるものもあるようですが……
すべてのパターンに共通して使える方法というわけではありません。

> (UPDATE文等プログラムを明示させないと駄目なのでしょうか。)
場合によりますが、
  「CursorType, CursorLocation, LockType の組み合わせを変更してみる」
  「JOIN していないレコードセットを使う」
  「表示用のRecordsetと、更新用のRecordsetを分ける」
  「個々の行を、UPDATE の SQL で別に処理する」
  「編集可能な SQL に変更する」
  「Recordset の Properties を変更してみる」
などで対応できたり、できなかったり。

# 私は Mysql の利用経験が無いので、実際にどうすべきかは答えられません。(^^;


あきる  2007-01-23 23:01:35  No: 134866

返信遅れて大変申し訳ございません。。。。
あきるです。

とりあえず、Datagridで『更新に必要なキー列の情報が足りません。』のエラーメッセージがでる原因はJOINテーブルを更新しようとして、エラーになっている事が分かりました。

解決策としては、VBと連結しているJOINテーブルをVIEWテーブルにしようと考えております。

ただ現行のMysql4.025-maxではViewテーブルを作成できないので、
Mysqlを最新バージョンに変更しようと考えております。

その上でもまだDatagridで『更新に必要なキー列の情報が足りません。』
というエラーメッセージが表示された場合は、魔界の仮面弁士さんの
ご意見を参考にいたします。

ご意見、大変感謝いたします。

ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加