特定の期間の日付をSQLで検索するには?

解決


Delphi大好き  2010-04-28 03:22:20  No: 38359  IP: 192.*.*.*

procedure TForm4.Button1Click(Sender: TObject);
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from 帳簿');
  Query1.SQL.Add(Format('WHERE (日付 = "%s")',
  [FormatDateTime('mm"/"dd"/"yyyy', DateTimePicker1.date)]
  ));
  Query1.SQL.Add(' AND ');
  Query1.SQL.Add(Format(' (日付 = "%s")',
  [FormatDateTime('mm"/"dd"/"yyyy', DateTimePicker2.date)]

  ));
  try
    query1.Open;
  except end;
end;

お世話になります。
いつも拝見させて貰っています。

過去レスを参考にして、上記のような事をしたいと思っています。
何とかここまでこぎ着けたのですが、範囲指定の仕方が判りません。
sqlのエラーメッセージも出ず、
チャートに出力してるのですが、白紙になってしまいます。

因みに「日付」は、Datatime型です。


  2010/04/20  〜  2010/10/27  を、
SQLで検索したいと思っています。

何とか、範囲指定する方法は無いでしょうか?

どうかよろしくお願いします。

編集 削除
HOta  2010-04-28 05:10:06  No: 38360  IP: 192.*.*.*

BETWEENを使えば出来ます。
SQLにselect * from 帳簿 WHERE 日付 BETWEEN :Hiduke1 AND Hiduke2
を設定して、
Query1.paramByName('Hiduke1').asDatetime = DateTimePicker1.date;
Query1.paramByName('Hiduke2').asDatetime = DateTimePicker2.date;
でOpenします。

編集 削除
どら  2010-04-28 10:19:44  No: 38361  IP: 192.*.*.*

>SQLにselect * from 帳簿 WHERE 日付 BETWEEN :Hiduke1 AND Hiduke2

Hiduke2 → :Hiduke2
Hiduke2の前にもコロンが必要ですね。

編集 削除
Delphi大好き  2010-04-28 20:09:33  No: 38362  IP: 192.*.*.*

Hotaさんありがとうございます!!
なんと、一発で成功しました^^。

一度BETWEENでチャレンジして失敗してたのですが、こんな方法もあるんですね。
Delphi搭載のSQLでも、奥が深いんですね・・・。
初めて見る書き方です^^。

DelphiのSQL解説本は1冊しか持ってないので、目から鱗です。

おかげ様で無事動作し、後は仕上げの簡単なSQL処理を入れるだけで完成です。

ありがとうございましたm(__”)m

編集 削除
Delphi大好き  2010-04-29 00:45:44  No: 38363  IP: 192.*.*.*

解決ボタン忘れました^^;

ソフトは無事完成しました。
改めてありがとうございましたm(__”)m

編集 削除