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


めるめる  2007-06-20 23:36:37  No: 26766

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-21 01:22:03  No: 26767

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


ぽんぽん  2007-06-21 02:06:42  No: 26768

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

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


めるめる  2007-06-21 21:18:33  No: 26769

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


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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