deiphiでDBGridに出力したデータを変更するには?


たろ  2007-04-26 02:39:49  No: 25931

初心者なのですが、SQLで作成したDBテーブルをTableコンポーネントとDataSourceコンポーネントを用いてDBGridに出力したのですが、実行中にその表の中身を直接書き換えようとすると「Project1.exeがEDBEngineErrorクラスの例外を生成しました。'複数のレコードが見つかりましたが,必要なのは1つだけです.'」というエラーが出てしまいました。
何か設定の問題なのでしょうか?ご教授よろしくお願いします。


たろ  2007-04-26 02:46:52  No: 25932

上の追記です。環境はDelphi4です。


HOta  2007-04-27 00:44:23  No: 25933

作成したテーブルのインデックスはどのようになっていますか?また、その中のどの項目を変えようとしているのでしょうか?
エラーから見ると、キーの重複があり、どのレコードか判別できないようです.


beagle  2007-04-27 01:06:04  No: 25934

憶測だが、そのエラーメッセージは正確には
×  複数のレコードが見つかりましたが,必要なのは1つだけです
○  複数のレコードが見つかりましたが、必要なのは1つです
ではないか?

http://www.google.co.jp/
でキーワード「複数のレコードが見つかりましたが    必要なのは」で検索
しましょう。  Tipsがヒットするので、それが参考になるかもしれません。


たろ  2007-04-27 19:57:13  No: 25935

皆さんありがとうございます

HOtaさん、8行×27列のテーブルでインデックスは使っていません。

実行中に書き換えというのは、DBGridの書き換えたいセルをマウスでクリックして、キーボード入力する、ということです。

beagleさん、そちらのサイトも見させて頂きましたが、回答は既に削除されているのか表示されませんでした。


beagle  2007-04-27 22:30:41  No: 25936

google検索で  Borland Answers - Delphi Tips がヒット・・・まではOK
ですね?
では「キャッシュ」をクリックして下さい。

インデックスを使っていないとすれば、
1)そもそも「SQLで作成した」時点で既に、重複レコードが存在していた。
2)ある項目を変更すると、他のレコードと全く同じ内容になる。
このどちらかの状況じゃないかなあ。


TS  2007-04-28 05:07:02  No: 25937

>SQLで作成したDBテーブルをTableコンポーネントと
>DataSourceコンポーネントを用いてDBGridに出力したのですが、
QueryコンポーネントのSQLで作成したDBテーブルを
DataSourceコンポーネントを用いてDBGridに出力したのですが、
とは違うのですか。


HOta  2007-04-28 16:33:19  No: 25938

>8行×27列のテーブルでインデックスは使っていません。
なら、インデックスがないので、更新する相手が判らないのでしょう。
重複レコードが存在しないインデックスを付けましょう。


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

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






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