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

解決


リカ  2017-08-23 23:30:42  No: 48742

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

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

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

宜しくお願いします。


Mr.XRAY  2017-08-24 06:41:39  No: 48743

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

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

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

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

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


リカ  2017-08-24 18:52:36  No: 48744

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

Windows10、Accessです。

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


Mr.XRAY  2017-08-24 21:47:17  No: 48745

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

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

>複数のテーブルをリンクして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 23:17:22  No: 48746

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

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


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








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