DELPHI5で、DBグリッドに表示させているデータを複数行、更新・削除しようとしてます。ほかの書き込みをみましたが、できませんでした。お手数をかけますが、そのやり方を少々詳しくご教授おねがいできませんか?
TDBGridは表示させているだけです。元のデーターを更新・削除すれば、出来ます。
もっと詳しく具体的に説明願えませんでしょうか?漠然としてわかりかねます。
>ほかの書き込みをみましたが、
具体的には、どの書き込みですか?
>できませんでした。
テーブルデータのフェッチ
https://www.petitmonte.com/bbs/answers?question_id=6744
にも書きましたが、
試したソースコードを書いてみるのは
いかがですか?
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の部分を認識しないというコンパイルエラーになります。仮に、この部分をすこしいじって(どう変更したかは、詳しく覚えてません)、コンパイルは通るようにしても、実行時に何の処理もされなくなります。
どの部分が間違っているか、おわかりになりますか?
>このコードを書いても、datasource1.datasetの部分を認識しないというコンパイルエラーになります。
Datasource1 は同じフォーム上にありますか?
あと、
>FieldBYNAME('STUDENT_NUMBER').AsInteger
の AsInteger の部分は、AsStringでいいのでは?
Datasource1.Dataset....
の前に
+
がないだけのような気も・・・
すみません。SQL.ADD('WHERE STUDENT_NUMBER =' + Datasource1.Dataset.FieldBYNAME('STUDENT_NUMBER').AsInteger);
です。
実際にUpdateが出来なかったのですか?それともUpdateは出来たが、TDBGridに表示出来なかったのですか?
Datasorce1は何にリンクしているのですか?
全て書いてください。
TDBGridにリンクしているもとのテーブルを更新して、表示は変わりませんか?
>すみません。SQL.ADD('WHERE STUDENT_NUMBER =' + Datasource1.Dataset.FieldBYNAME('STUDENT_NUMBER').AsInteger);
>です。
前回も書きましたが、
AsInteger の部分は、AsStringのほうがいいのでは?
Datasource1 は同じフォーム上にありますか?
そして、
この文でコンパイルエラーが表示するのですか?
# その場合のエラーメッセージは正確には、何と表示しますか?
ツイート | ![]() |