- 締切済み
「更新に必要なキー列の情報が足りません。」エラーメッセージの回避策を教えてください。
Access、VB6、データグリッドを使用した処理を行った際に、 「更新に必要なキー列の情報が足りません。」というメッセージが表示 されてしまいました。 【使用環境】 ・WindowsXP SP1 ・VB6 ・ACCSESS2002 【発生手順】 (1)インプット用mdbのテーブルデータを 中間mdbのテーブルデータにコピー。 (2)中間mdbのテーブルデータをAccessクエリを使用し 画面出力用のデータを作成。 (3)クエリデータをデータグリッドに表示。 ※1.[コード1、文字列1、コード2、文字列2、コード3] を表示しています。 ※2.コード1、コード2、コード3でプライマリキーとなっています。 (4)データグリッドで特定の文字列2のセルをクリック後、 他のセルにカーソルが移動しなくなる。 このときに、エラーメッセージが表示される。 【回避できる場合】 ・エラーメッセージが表示される元となるインプット用mdbの テーブルデータの文字列2に対し、何か変更を加えたあと、 もとに戻す。 例)あいうえお→あいうえお1→あいうえお のように変更を加えたあと、1を削除して最初 の状態に戻す。 この状態で処理を実行すると、【発生手順】(4)でエラーが出ていた ものがカーソルも移動することができ、エラーが発生しなくなります。 ですが、ユーザが使用する際にこのような回避はできないため、回避策と はいえないです。 なぜ、このようなことが起こるのかや、エラーメッセージを表示させないような 回避策があれば教えていただけないでしょうか。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
データグリッドを ReadOnly にするとどうなるでしょうか?あるいはレコードソースを
- 7marine
- ベストアンサー率36% (59/160)
私じゃ力不足みたい こちらでも質問してみてはどうでしょう? http://www.moug.net/
- 7marine
- ベストアンサー率36% (59/160)
joinを行った結果に対して更新はアクセスの場合はできない仕様になっていたと思います。(データグリッドの自動更新を使用しては) クエリを変更できない場合はレコード移動などのイベントを拾って手動で更新クエリを発行するなどの対策が必要です
- 7marine
- ベストアンサー率36% (59/160)
あとは中間テーブルへのクエリにjoinなどの連結を使用しているとか?
お礼
何度も回答していただき、ありがとうございます。 joinの件ですが、inner joinなら行っていましたが、このクエリは開発者共通で使用しているため、修正することはできなさそうです。 そのほかの方法があるのでしょうか。
- 7marine
- ベストアンサー率36% (59/160)
更新対象のテーブルに主キーが設定されていない可能性があります
お礼
ご回答ありがとうございます。 クエリーデータをデータグリッドに表示しているのですが、クエリーの元となるテーブルには主キー設定をしているため、主キー設定はしていると思われます。 とすると、何が原因なのでしょう・・・。
お礼
ご回答ありがとうございます。 データグリッドは表示のみで、データグリッドに入力したデータをアクセスのテーブルに更新するというようなことはしていません。 データグリッドに表示し、あるレコードのセルにカーソルを当てた後、そのレコードの上や下にカーソルを移動したときに、エラーメッセージが出てしまうのです。 単なる表示だけなのに、何が原因なのでしょう。