DBグリッド更新・削除


LUKU  2010-01-15 15:47:06  No: 37009

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


HOta  2010-01-15 16:43:45  No: 37010

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


igy  2010-01-15 17:05:21  No: 37011

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

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

>できませんでした。

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


LUKU  2010-01-17 01:24:46  No: 37012

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-17 02:21:33  No: 37013

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

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

あと、

>FieldBYNAME('STUDENT_NUMBER').AsInteger

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


igy  2010-01-17 02:47:21  No: 37014

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


LUKU  2010-01-17 05:22:13  No: 37015

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


HOta  2010-01-17 05:34:31  No: 37016

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


igy  2010-01-17 11:07:02  No: 37017

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

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

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


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

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






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