Delphi6Pro、ODBCのParadoxを使い開発しています。ADOQueryで日付型のSQLを使っているのですがエラーは発生しないものの検索通りのデーターがヒットしません。
procedure TFamain.Button1Click(Sender: TObject);
var
s :String;
begin
s :='select * from TEST where 日付 =2013/08/31';
ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(s); ADOQuery2.Open;
end;
「↑ エラーは出ないがヒットしない」
尚、下記サイトも参照してみました。
http://mrxray.on.coocan.jp/Delphi/plSamples/580_ADO_TableList.htm
どなたか御存知の方教えて下さい。
ADOQuery2.Open;
が
ADOQuery1.Open;
じゃないですかってのは、置いといて(^^;
確認していませんが
s :='select * from TEST where 日付 =CAST(''2013/08/31'' AS DATE)';
ではどうですか?
あるいは
s :='select * from TEST where 日付 =:DT';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s);
ADOQuery1.Parameters.ParamByName('DT').Value = EncodeDate(2013,8,31);
ADOQuery1.Open;
とか?
ADOは使ったこと無いんでパラメータの設定方法が違うかも。
Questさんの補足で
>s :='select * from TEST where 日付 =2013/08/31';
がコピペならの日付部分の記述がおかしいです。
日付はシングルコーテーションで括らないと駄目です。
日付 = '2013/01/01'
よって、記述する時は
s :='select * from TEST where 日付 =''2013/08/31''';
だと良いと思います。
QuestさんSyakeさん、どうもです!
MrXrayさんのホームページに書かれているQuestさんの方法しか無いみたいです。この方法だとSQLの文章を文字型で繋げる場合少し複雑になってしまいますが。
s :='select * from TEST where 日付 =:DT';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s);
ADOQuery1.Parameters.ParamByName('DT').Value = EncodeDate(2013,8,31);
ADOQuery1.Open;
解決です!
Syakeさんの方法ですが、Paradoxは日付型を'mm/dd/yyyy'で表しますので、
>s :='select * from TEST where 日付 =''2013/08/31''';
はs :='select * from TEST where 日付 =''08/31/2013''';
になると思います。
HOtaさん、追加発言有難う御座います。
私の方でやってみたのですが残念ながらダメでした。
MrXrayさんのやり方しかないみたいです。
こんにちは,Mr.XRAY です.
サイトを利用して頂き,ありがとうございます.
http://mrxray.on.coocan.jp/Delphi/plSamples/580_ADO_TableList.htm#03
のリスト 3 の Button6Click のコードに [実行時にSQLに直接日付を指定する場]
を書いてはいるのですが,これではダメでしょうか.
このリスト 3 の一番下です.
個人的には,直接 SQL 文には書かないで,大抵はパラメータ文で設定しています.
というのは,SQL のパラメータは変数のことが多いので.
SQL 文に変数を使うこともできますが,結構面倒です (書き方はもう忘れてしまいした))
#でくくるのは、Accessの文法ですね。
Paradoxはシングルクオーテーションでくくれば良かったはずですが、動かないようですね。おかしいですね。
>#でくくるのは、Accessの文法ですね。
なんですが,質問された方は,ODBCのParadoxを使い開発 と書いていますが,
例のサンプルは,プロバイダの設定が Microsoft.Jet.OLEDB.4.0 なんです.
スレッドの書き込みの流れで判断して,もしかしたら,と思ったんですが (^^;
ツイート | ![]() |