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

解決


senzin  2004-12-26 20:03:53  No: 12490  IP: [192.*.*.*]

初めて質問させて頂きます。
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  IP: [192.*.*.*]

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  IP: [192.*.*.*]

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

編集    削除
HOta  2004-12-27 01:11:57  No: 12493  IP: [192.*.*.*]

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  IP: [192.*.*.*]

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

編集    削除