Dl6Pro,XPPro,BDEにてデータベースの勉強中です。
TQueryを利用して、データベースを作成しています。TQueryのSQLプロパティにSQL文を記載し、DBGridにデータを表示しています。この時、Paramsプロパティにパラメータを設定した時に、パラメータには初期値を設定しておかないと、うまくDBGRIDに表示されないようですが、ココで問題です。初めは、パラメータを設定しないデータを取得して、その後、パラメータを変化させ、色々なデータを取得したと考えています。どなたか、ご教示ください。
1.TQueryを複数用意して、取り替える。
2.TQueryのSQL文を条件により変更する。
等でしょうか。
HOTAさんいつもレス有難うございます。
>>1.TQueryを複数用意して、取り替える。
TQUERY1、TQUERY2の2つのTQUERYを用意したとします。
この場合、TQUERY1を使って、DBGRIDにデータをセットし、DBNABIGATORを配置、セットし、このDBNABIGATORを使ってデータを削除し、この削除後のデータについて色々なデータを取得したいと考えていますが、どのようにしたら良いのかわかりません。もう少し、詳しくご教示願えれば幸いです。
>>2.TQueryのSQL文を条件により変更する。
1回目のSQLにより発行されたデータについて、さらに色々な条件に基づいてデータを取得する場合、1回目にSQL発行により取得したデータについては、デーブルへの保存の必要性があるのではないですか?もし、あるとすれば、それは避けたいです。何故なら、元テーブルのデータは、変更したくないからです。
この場合、元のデータを1回、
>1回目にSQL発行により取得したデータについては、デーブルへの保存の必要性があるのではないですか?
ありません。
どらさん、早速のレス有難うございます。なにせ、独学で勉強中の身なのでもう少し、具体的にご教示願えると助かります。それと、参考になるサンプルコードをご存知でしたら教えていただけると幸いです。
編集 削除こういうことを望んでいるのでしょうか?
違っていたらスルーして下さい。
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;
TQueryで取り出したデーターセットは変更・追加をすれば、変更・追加したレコードを登録すればよいだけです。修正のないレコードを登録する必要はないということです。
編集 削除どらさん。HOtaさんありがとうございました。何とか解決できました。期待どうりの結果を得ることが出来ました。
SQL文の中で、CLEARをその都度入れて、OPENしていたのが原因のようでした。また、ひとつ勉強になりました。今後ともよろしくお願いします。