ADOTable で部分一致検索をするには?
いつもお世話になります。
現在、TTable(BDE) から TADOTable(Jet4.0) にプログラムを書き換えて
います。
そこで質問なのですが、
・やりたいこと
部分一致(ワイルドカード "*")によるデータの絞り込み
・旧プログラム
Filterプロパティを使用し、FilterOptions の foNoPartialCompare を
使用してワイルドカードを有効としています。
※規定値で既に有効になっている。
・問題点
TADOTable には FilterOptions が無いようです。
foNoPartialCompare が指定できないため、ワイルドカード(*)が機能し
ません。
・代替え策
TADOQuery を使用し、SQL文で、LIKE '%' を使用して回避しています。
・代替え策の問題点
絞り込み項目が複数になると、絞り込み条件のSQL文が複雑になる。
TADOTable のほうが、TADOQuery より簡単で何かと便利。
※BDEと互換性のある後継の TTable が出るとのアナウンスもあるよう
ですが、それまで待てそうにありません。
・質問内容
(1)TADOTable で foNoPartialCompare 等によるワイルドカード(*)が使用
できるのか?
(2)使用できるとしたらその方法は?
(3)使用できないとしたら、TADOQuery での SQL文、LIKE '%' 以外で他に
良い方法がないか?
以上、箇条書き形式で書かせていただきましたが、よろしくお願いします。
旧プログラム:WinXP + D7 + BDE(Paradox)
新プログラム:WinVISTA + D2007 + ADO/Jet4.0(MS-ACCESS)
ちなみに、絞り込んだデータは、
TDataSource 経由で TDBGrid に表示しています。
ADOTableの、OnFilterRecordに以下のように記述する方法ならお役にたてますが・・・どうでしょうか?
Accept:=(AnsiPos(EDIT.Text,ADOTable1A.Text) >0);
ぽんぽん様
情報、ありがとうございます。
何とかなりそうです。
いろいろ試してみます。
ツイート | ![]() |