問い合わせの結果をDBGridに表示するには?

解決


senzin  2004-12-26 20:03:53  No: 12490

初めて質問させて頂きます。
Edit1への入力値を元にSQL文を作成し、その結果をDBGridに表示したいのですが
上手く動作してくれません。項目は表示するのですがデータ値が表示されないのです。
どこが悪いのかご教授願えないでしょうか?
ソースです。

with MainQuery do
begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM TABLENAME WHERE Hizuke = ' +
             '''' + Edit1.Text + '''');
    Open;
end;
DBGrid1.DataSource := TableDS;

Hizukeは日付型です。
環境は、Delphi5 Pro, Win98 se, Paradoxを使っています。
よろしくお願いします。


HOta  2004-12-26 22:33:33  No: 12491

Fieldが日付型なら、日付値で設定します。
この場合、データーベースにより書き方が違いますので、
パラメターにすれば、

SQLプロパティの内容
SELECT * FROM TABLENAME
WHERE Hizuke = :Hizuke
としておいて、Paramsプロパティで日付型に設定します。
実行時に、

MainQuery.Close;
MainQuery.ParamByName('Hizuke').asDateTime := 
    StrToDateTime(Edit1.Text);
MainQuery.Open;

としてみてください。


senzin  2004-12-26 23:48:39  No: 12492

HOtaさん、ありがとうございます。
教えて頂いた方法で望み通りの動作になりました。WHERE句を増やすこともでき
嬉しい限りなのですが、最初の私の方法では何故駄目なのかが解りません。
本に載っているソースや此処の過去ログを元にしたつもりなのですが・・・
図々しいお願いかとは思いますが後学の為にそのあたりもご教授願えませんでしょうか?


HOta  2004-12-27 01:11:57  No: 12493

Edit.Textの内容がどのようになっているのか解りませんが、
日付型で比較するのなら、日付型になるようにしないといけません。
Paradoxなら、"mm/dd/yyyy"の形で認識したかな?
 WHERE Hizuke ="' + formatdatetime('mm/dd/yyyy',StrToDateTime(Edit1.Text)
  + '"'
でいけるかもしれません。
ただ、これは、Paradoxだけで、ほかのデーターベースを使う場合は、使えません。その場合は、パラメター渡しをします。


senzin  2004-12-27 02:02:28  No: 12494

同型にして比較しないといけないんですね。
どうもありがとうございました。
解決です。


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

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






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