TQUERYのパラメータについて

解決


サンプー  2005-04-11 09:19:58  No: 14235  IP: [192.*.*.*]

Dl6Pro,XPPro,BDEにてデータベースの勉強中です。
TQueryを利用して、データベースを作成しています。TQueryのSQLプロパティにSQL文を記載し、DBGridにデータを表示しています。この時、Paramsプロパティにパラメータを設定した時に、パラメータには初期値を設定しておかないと、うまくDBGRIDに表示されないようですが、ココで問題です。初めは、パラメータを設定しないデータを取得して、その後、パラメータを変化させ、色々なデータを取得したと考えています。どなたか、ご教示ください。

編集    削除
HOta  2005-04-11 19:13:34  No: 14236  IP: [192.*.*.*]

1.TQueryを複数用意して、取り替える。

2.TQueryのSQL文を条件により変更する。

等でしょうか。

編集    削除
サンプー  2005-04-11 21:48:29  No: 14237  IP: [192.*.*.*]

HOTAさんいつもレス有難うございます。
>>1.TQueryを複数用意して、取り替える。
TQUERY1、TQUERY2の2つのTQUERYを用意したとします。
この場合、TQUERY1を使って、DBGRIDにデータをセットし、DBNABIGATORを配置、セットし、このDBNABIGATORを使ってデータを削除し、この削除後のデータについて色々なデータを取得したいと考えていますが、どのようにしたら良いのかわかりません。もう少し、詳しくご教示願えれば幸いです。


>>2.TQueryのSQL文を条件により変更する。
1回目のSQLにより発行されたデータについて、さらに色々な条件に基づいてデータを取得する場合、1回目にSQL発行により取得したデータについては、デーブルへの保存の必要性があるのではないですか?もし、あるとすれば、それは避けたいです。何故なら、元テーブルのデータは、変更したくないからです。
この場合、元のデータを1回、

編集    削除
どら  2005-04-11 21:54:19  No: 14238  IP: [192.*.*.*]

>1回目にSQL発行により取得したデータについては、デーブルへの保存の必要性があるのではないですか?

ありません。

編集    削除
サンプー  2005-04-12 00:09:45  No: 14239  IP: [192.*.*.*]

どらさん、早速のレス有難うございます。なにせ、独学で勉強中の身なのでもう少し、具体的にご教示願えると助かります。それと、参考になるサンプルコードをご存知でしたら教えていただけると幸いです。

編集    削除
どら  2005-04-12 00:51:29  No: 14240  IP: [192.*.*.*]

こういうことを望んでいるのでしょうか?
違っていたらスルーして下さい。

with Query1 do
begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM テーブル WHERE 項目1 IS NOT NULL');
  if Edit1.Text <> '' then
  begin
    SQL.Add('AND 項目1 = :Param1');
    ParamByName('Param1').AsString := Edit1.Text;
  end;
  if Edit2.Text <> '' then
  begin
    SQL.Add('AND 項目2 = :Param2');
    ParamByName('Param2').AsString := Edit2.Text;
  end;
  if Edit3.Text <> '' then
  begin
    SQL.Add('AND 項目3 = :Param3');
    ParamByName('Param3').AsString := Edit3.Text;
  end;
  Open;
end;

編集    削除
HOta  2005-04-12 01:01:43  No: 14241  IP: [192.*.*.*]

TQueryで取り出したデーターセットは変更・追加をすれば、変更・追加したレコードを登録すればよいだけです。修正のないレコードを登録する必要はないということです。

編集    削除
サンプー  2005-04-13 08:10:14  No: 14242  IP: [192.*.*.*]

どらさん。HOtaさんありがとうございました。何とか解決できました。期待どうりの結果を得ることが出来ました。
SQL文の中で、CLEARをその都度入れて、OPENしていたのが原因のようでした。また、ひとつ勉強になりました。今後ともよろしくお願いします。

編集    削除