DBグリッド更新・削除


LUKU  2010-01-15 06:47:06  No: 37009  IP: 192.*.*.*

DELPHI5で、DBグリッドに表示させているデータを複数行、更新・削除しようとしてます。ほかの書き込みをみましたが、できませんでした。お手数をかけますが、そのやり方を少々詳しくご教授おねがいできませんか?

編集 削除
HOta  2010-01-15 07:43:45  No: 37010  IP: 192.*.*.*

TDBGridは表示させているだけです。元のデーターを更新・削除すれば、出来ます。
もっと詳しく具体的に説明願えませんでしょうか?漠然としてわかりかねます。

編集 削除
igy  2010-01-15 08:05:21  No: 37011  IP: 192.*.*.*

>ほかの書き込みをみましたが、

具体的には、どの書き込みですか?

>できませんでした。

テーブルデータのフェッチ
https://www.petitmonte.com/bbs/answers?question_id=6744
にも書きましたが、
試したソースコードを書いてみるのは
いかがですか?

編集 削除
LUKU  2010-01-16 16:24:46  No: 37012  IP: 192.*.*.*

1つのクエリ(query1)を使って,すでにDBGRIDにデータベースのTABLEデータが表示されている状態とします。その状態で、別のクエリを使って、DBGRID表示されているデータに対して、更新処理をかけるという流れです。

QUERY1の処理を省略

DELPHI5フォーム上のボタンのONCLICKプロシージャーに以下のようなコードを書きました(こちらのサイトの情報を参考にさせてもらいました)。
WITH QUERY2 DO
 BEGIN
  CLOSE;
  SQL.CLEAR;
  SQL.ADD('UPDATE TABLE_SCHOOL SET EXAM = ''合格''');
  SQL.ADD('WHERE STUDENT_NUMBER ='  Datasource1.Dataset.FieldBYNAME('STUDENT_NUMBER').AsInteger);
  ExecSQL;
end;        //(student_numberは数値型です)

このコードを書いても、datasource1.datasetの部分を認識しないというコンパイルエラーになります。仮に、この部分をすこしいじって(どう変更したかは、詳しく覚えてません)、コンパイルは通るようにしても、実行時に何の処理もされなくなります。

どの部分が間違っているか、おわかりになりますか?

編集 削除
igy  2010-01-16 17:21:33  No: 37013  IP: 192.*.*.*

>このコードを書いても、datasource1.datasetの部分を認識しないというコンパイルエラーになります。

Datasource1 は同じフォーム上にありますか?

あと、

>FieldBYNAME('STUDENT_NUMBER').AsInteger

の AsInteger の部分は、AsStringでいいのでは?

編集 削除
igy  2010-01-16 17:47:21  No: 37014  IP: 192.*.*.*

Datasource1.Dataset....
の前に
 +
がないだけのような気も・・・

編集 削除
LUKU  2010-01-16 20:22:13  No: 37015  IP: 192.*.*.*

すみません。SQL.ADD('WHERE STUDENT_NUMBER ='  + Datasource1.Dataset.FieldBYNAME('STUDENT_NUMBER').AsInteger);
です。

編集 削除
HOta  2010-01-16 20:34:31  No: 37016  IP: 192.*.*.*

実際にUpdateが出来なかったのですか?それともUpdateは出来たが、TDBGridに表示出来なかったのですか?
Datasorce1は何にリンクしているのですか?
全て書いてください。
TDBGridにリンクしているもとのテーブルを更新して、表示は変わりませんか?

編集 削除
igy  2010-01-17 02:07:02  No: 37017  IP: 192.*.*.*

>すみません。SQL.ADD('WHERE STUDENT_NUMBER ='  + Datasource1.Dataset.FieldBYNAME('STUDENT_NUMBER').AsInteger);
>です。

前回も書きましたが、
AsInteger の部分は、AsStringのほうがいいのでは?
Datasource1 は同じフォーム上にありますか?

そして、
この文でコンパイルエラーが表示するのですか?
# その場合のエラーメッセージは正確には、何と表示しますか?

編集 削除