query1.SQL.Text :=
'SELECT * FROM 金銭出納帳 WHERE 出納日付 BETWEEN '
+'"2010/0901"'
+ ' AND ' +
'"2010/09/31"'
+ ' AND WHERE 出納名称 = "本";';
という事をしたいと考えています。
特定の日付の範囲内から、特定の名称のデータを引き出したいわけです。
が、このままだとエラーになります。
以前教えて貰った(一年ほど前)、WHERE句で複数のフィールドを検索する方法(ANDでつなぐ)をやってみましたが駄目でした。
どうすれば上記を実行出来ますでしょうか?
参考書にも載ってないので困っています。
もし解決策ありましたらよろしくお願いしますm(__)m。
> +'"2010/0901"'
を
+'"2010/09/01"'
にして、
> + ' AND WHERE 出納名称 = "本";';
を
+ ' AND 出納名称 = "本";'; // ANDの後ろには、全角空白がありますので、それも削除
にしたら、どうなりますか?
(エラーになる場合、エラーメッセージなども記載したほうがよいかと思います。)
また、
WHERE (出納日付 BETWEEN "2010/09/01" AND "2010/09/31") AND (出納名称 = "本")
のようにカッコを付けたほうがよいかもしれません。(確認したわけではないですけど・・・)
igyさんいつもありがとうございますm(__)m。
一番上のコードは質問用に分かり易くと思い書き直したコードです。
全角空白入っていたのは気づきませんでした><。
igyさんのおっしゃるとおりにしたら、無事動作しました。
あと、SQLでも()が使えるんですね(!)。
良い情報ありがとうございます。
これで見易いコードが書けそうです。
以下が実際のコードです。
おかげ様できちんと動作しました^^。
それではありがとうございました。
query1.SQL.Text :=
'SELECT * FROM 金銭出納帳 WHERE 出納日付 BETWEEN "'
+ DateTimeToStr(DateTimePicker1.Date)
+ '" AND "' +
DateTimeToStr(DateTimePicker2.Date)
+ '" AND 出納名称 = "'
+ combobox1.Text
+ '";';
DataSource1.DataSet := Query1;
Query1.Open;
補足です。
解決してしまったからつい忘れてましたが、
動かない時のエラーの内容は、
キーワードの使用が無効です.
キーワード: WHERE
行番号: 1.
でした。
パラメターでする方法も有ります。DateTimeToStrで出来る文字列が、データーベースによって型が違い、受け取れない場合が有る場合も、対応できます。
ツイート | ![]() |