ADOTable で部分一致検索をするには?


めるめる  2007-06-20 14:36:37  No: 26766  IP: 192.*.*.*

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)

編集 削除
めるめる  2007-06-20 16:22:03  No: 26767  IP: 192.*.*.*

ちなみに、絞り込んだデータは、
TDataSource 経由で TDBGrid に表示しています。

編集 削除
ぽんぽん  2007-06-20 17:06:42  No: 26768  IP: 192.*.*.*

ADOTableの、OnFilterRecordに以下のように記述する方法ならお役にたてますが・・・どうでしょうか?

Accept:=(AnsiPos(EDIT.Text,ADOTable1A.Text) >0);

編集 削除
めるめる  2007-06-21 12:18:33  No: 26769  IP: 192.*.*.*

ぽんぽん様
情報、ありがとうございます。
何とかなりそうです。
いろいろ試してみます。

編集 削除