日付型を検索するSQLの書き方。

解決


ちゃん  2006-05-26 00:42:51  No: 21802

paradox7のデータ項目が D の日付型になっています、
カレンダーをクリックしてある日を検索したいのですが
SQLの書き方ができません。

検索して表示させたいのですが。。。
MonthCalendar の日付をクリックして表示させたいのです。

var
  days : double; として

days:=Monthcalendar1.date;

Query1.SQL.Add('Select * from DataDB'); 

以下をどのように書くのでしょうか?

Query1.SQL.Add('where day=day');

paradox7 の日付型はdouble  とのことです。
Monthcalendar1.date  はdate 型ですので
どうしたものでしょうか?

よろしくお願いします。  ちゃん


igy  2006-05-26 01:37:23  No: 21803

試したわけでは、ありませんが、

with Query1 do
begin
    SQL.clear;
    SQL.Add('select * from DataDB where day = :ParamDate');
    ParamByName('ParamDate').AsDate := Monthcalendar1.Date;
end;

のような感じでは、できませんか?


Basser  2006-05-26 01:54:22  No: 21804

>以下をどのように書くのでしょうか?
>
>Query1.SQL.Add('where day=day');

  Query1.SQL.Add(Format(
    'WHERE (day = "%s")',
    [FormatDateTime('mm"/"dd"/"yyyy', Monthcalendar1.date)]
  ));

です。


ちゃん  2006-05-26 04:59:47  No: 21805

早速の回答ありがとうございます。
igy さん
    ParamByName は未定義の識別子と出てしまいます。
Basser  さん
    キーワードの使用が無効です
    キーワード Day
    行番号2:
    と出てきます。
    テーブルの構造情報では  
       FieldName = Day
       Type = D
    となっていますので なぜ Day ?。。

  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('Select * from DataDB');
  Query_Trail.SQL.Add(Format(
    'WHERE (Day = "%s")',
    [FormatDateTime('mm"/"dd"/"yyyy', Monthcalendar1.date)]
  ));
  Query1.open;
とそっくりまねて書くしか芸がありません。
よろしくお願いします。


igy  2006-05-26 05:33:02  No: 21806

>igy さん
>    ParamByName は未定義の識別子と出てしまいます。

    ParamByName('ParamDate').AsDate := Monthcalendar1.Date;
の部分を
    Query1.ParamByName('ParamDate').AsDate := Monthcalendar1.Date;
にしたら、どうですか?


igy  2006-05-26 05:50:21  No: 21807

>Query_Trail.SQL.Add(Format(

Query1.SQL.Add(Format(
ですよね。


igy  2006-05-26 06:00:18  No: 21808

>    キーワードの使用が無効です
>    キーワード Day
>    行番号2:
>    と出てきます。

で、

>    'WHERE (Day = "%s")',

この部分のダブルクォーテーションをシングルクォーテーションにしたらどうなります?

    'WHERE (Day = ''%s'')',    // " を  '' に置き換えています。


Basser  2006-05-26 18:58:11  No: 21809

>Basser  さん
>    キーワードの使用が無効です
>    キーワード Day
>    行番号2:
>    と出てきます。
>    テーブルの構造情報では  
>       FieldName = Day
>       Type = D
>    となっていますので なぜ Day ?。。

フィールド名 Day は、ローカルSQLで予約語になっていますね。
フィールド名を変更しないといけないでしょう。


ちゃん  2006-05-26 20:52:30  No: 21810

DAYが予約語ということで
データベースの項目名を
「DAY」から「日付」という項目名に変更しました。
1:
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from DataDB');
  Query1.SQL.Add(Format('WHERE (日付 = "%s")',
  [FormatDateTime('mm"/"dd"/"yyyy', Monthcalendar1.date)]
  ));
  Query1.Open;
--------------------------
 2:
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from DataDB where 日付 = :ParamDate');
  Query1.ParamByName('ParamDate').AsDate := Monthcalendar1.Date;
  Query1.Open;
以上2通りやってみたのですがどちらも思い通りにできました。
igy さんには文の間違いを指摘していただきご迷惑をかけました。
ありがとうございます。

                              ちゃん


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

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






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