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


たろ  2007-04-25 17:39:49  No: 25931  IP: 192.*.*.*

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

編集 削除
たろ  2007-04-25 17:46:52  No: 25932  IP: 192.*.*.*

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

編集 削除
HOta  2007-04-26 15:44:23  No: 25933  IP: 192.*.*.*

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

編集 削除
beagle  2007-04-26 16:06:04  No: 25934  IP: 192.*.*.*

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

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

編集 削除
たろ  2007-04-27 10:57:13  No: 25935  IP: 192.*.*.*

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

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

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

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

編集 削除
beagle  2007-04-27 13:30:41  No: 25936  IP: 192.*.*.*

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

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

編集 削除
TS  2007-04-27 20:07:02  No: 25937  IP: 192.*.*.*

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

編集 削除
HOta  2007-04-28 07:33:19  No: 25938  IP: 192.*.*.*

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

編集 削除