データグリッドにて、データベースを編集する際のエラーを無くすには?

解決


しぶしげ  2004-05-12 03:29:49  No: 83320

データグリッドで、データベースを編集する際、
rs.Delete
や、
rs.MoveNext
を実行する際に
「キー列のフィールドの情報が足りないか、正しくありません。更新の影響を
  受ける行が多すぎます。」
といったエラーが起こることがあって、困っています。
どのような条件でこのエラーが発生し、また、回避する方法というのを
知りたいのですが、ご教授のほど、宜しくお願い致します。


魔界の仮面弁士  2004-05-12 03:38:58  No: 83321

Recordset内に、レコードを一意に取得するための情報(基本的には主キー項目)が含まれていないのでは。


しぶしげ  2004-05-12 03:59:22  No: 83322

早速のお答え、ありがとうございます。

Recordset内に、主キーが含まれていないというのは、
データベース上には、主キーが設定してあっても、Recordsetを
読み込む際に主キーとなるフィールドを省いているとだめだということ
でしょうか?
データグリッド上に主キーとなるフィールドを表示したくなかったため、
そのフィールドを含めていませんでした。
(SELECT文で、データグリッド上に表示させたいフィールドのみを
  指定している状態です。)


魔界の仮面弁士  2004-05-12 04:27:08  No: 83323

「マルチポスト」を行う場合、結果を双方に報告するようにしてくださいね。

> データベース上には、主キーが設定してあっても、Recordsetを
> 読み込む際に主キーとなるフィールドを省いているとだめだということでしょうか?
駄目とは限りません。「駄目な事もある」という事です。

データベースによっては、主キー相当の非表示列(ROWID列など)が利用される事もあるので、その場合は、主キーが含まれていなくても更新可能です。

また、OLE DBのカーソル機構を用いず、データベース側でカーソル管理を行っている場合には、主キー情報が無くても、Bookmarkによって更新対象行を特定できますので、その場合も更新が可能です。

> データグリッド上に主キーとなるフィールドを表示したくなかったため、
データグリッドは、列単位での表示/非表示設定ができますよ。
(ちなみに、特定の列を2回表示させたり、また、それぞれを別の書式で表示させたりする事も出来ます)


しぶしげ  2004-05-13 01:49:14  No: 83324

>「マルチポスト」を行う場合、結果を双方に報告するようにしてくださいね。
了解しました。

主キーをレコードセットに読み込むようにし、データグリッドで
不要なフィールドを表示しないように変更しました。
現状、エラーは発生していません。
データベースに関しての知識が乏しい為、もっと勉強しようと思います。

親切な対応、どうもありがとうございました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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