TFDTableのFilterで日付型を抽出するには?

解決


リカ  2017-08-23 14:30:42  No: 48742  IP: 192.*.*.*

TFDTableでAccessの日付型を設定し抽出しようとしたのですが出来ませんでした。原因が解りましたらお教え下さい。

「サンプル」
TFDTable.Close;
TFDTable.Filter :='nyu_ymd >=2017/03/01';
TFDTable.Filtered :=True;
TFDTable.Open;

これでエラーは出ませんでしたが全てのデーターが抽出されてしまいました。また日付の前後に#を付けたらエラー(無効な文字が見つかりました[#2016/03/01#])と表示されました。

宜しくお願いします。

編集 削除
Mr.XRAY  2017-08-23 21:41:39  No: 48743  IP: 192.*.*.*

実行環境,開発環境も,データベースのことも書いていない,
かなり度胸と勇気のある質問ですが...

Filter プロパティの型って文字列指定だと思いますよ.
日付の部分を文字列にしてみてください.

データベースに質問のコードに書いてある書式で格納されているとすれば,うまくいくかも知れません.

TFDTable.Filter :='nyu_ymd >=''2017/03/01'''; 

※ 余計なお世話かも知れませんが,SQL を使用することをお勧めします.
※ データベースをやる限り,SQL は避けて通ることはできないでしょう.多分.

編集 削除
リカ  2017-08-24 09:52:36  No: 48744  IP: 192.*.*.*

Mr.XRAさん、有難う御座います。環境とDBを書き忘れました。

Windows10、Accessです。

Filterを使ったのは複数のテーブルをリンクしてWhere文を使いSQLを使うと読込み専用になってしまうからです。TFDQueryを使って読込み専用にならない方法があれば一番良いのですが・・。

編集 削除
Mr.XRAY  2017-08-24 12:47:17  No: 48745  IP: 192.*.*.*

>読込み専用にならない方法があれば一番良いのですが・・。 

できないんじゃないんですか ?

>複数のテーブルをリンクしてWhere文を使いSQLを使うと読込み専用になってしまうからです。

ということであれば.
TADTable の Filter ではできるというのも不思議ですが.

http://edn.embarcadero.com/article/images/43368/a2.pdf
http://edn.embarcadero.com/article/images/43368/a2.pdf#page=76
http://edn.embarcadero.com/article/images/43368/a2.pdf#page=78

で,肝心の Filter の動作はどうなったのでしょう ?
以下でもダメですか ?

//DateText は string型の変数
LDateText := AnsiQuotedStr('2017/03/01', '''');
TFDTable.Filter :='nyu_ymd >=' + LDateText;

編集 削除
リカ  2017-08-24 14:17:22  No: 48746  IP: 192.*.*.*

Mr.XRAYさん、TFDTable.Filter :='nyu_ymd >=''2017/03/01''';で出来ました。

本当にありがとうございました。

編集 削除