TQueryのフィルタプロパティを使って文字列のワイルドカード指定の方法


ある  2005-06-25 10:05:52  No: 15932

TQueryコンポーネントを使ってDBのデータを取得しています。
フリガナの一部に  タナ  が含まれるデータのみ抽出したいのですが、
フィルタプロパティに kana = '*タナ*'
と指定しているのですが、抽出されません。

どうすればよいのでしょうか?
DBはAccessのMDBを使っています。


kkk  2005-06-26 01:44:05  No: 15933

>>フィルタプロパティに kana = '*タナ*'

フィルタプロパティに '*タナ*'以外を設定したときには抽出は成功しているのでしょうか?
上記設定は動的(プログラム上で)に設定しているのでしょうか?


ある  2005-06-26 08:18:38  No: 15934

日付の項目や、キー項目(数値)を絞り込むことはできました。
文字列型も*を使わなければOKです。

動的にプログラム上で設定しています


もう一人の kkk  2005-06-26 09:37:19  No: 15935

kana Like '%タナ%'
ではダメ?


@っしー  2005-06-26 18:47:12  No: 15936

TQueryを使われいるんでしたら、SQL文で書いてみては?

Query1.SQL.Text := 'SELECT * FROM table1 WHERE kana LIKE ' + QuatedStr(%タナ%));
Query.Open;


ある  2005-06-26 18:53:44  No: 15937

kana Like '%タナ%'
を試したところ、「この操作は行えません」とDelphiのエラーがでました

SQL文で書けば解決するのですが、
できればFilterプロパティで実現したいのです(TーT


kkk  2005-06-27 17:43:10  No: 15938

>>文字列型も*を使わなければOKです。
>>動的にプログラム上で設定しています
 
可能であれば「フィルタプロパティに kana = '*タナ*'」を
設定しているところのコードを表示してほしいのですが
たぶん「edit.text」を使用しているかと思うのですが...


ある  2005-06-28 01:19:05  No: 15939

コードですが、
今はこんな感じにベタ書きしてます。

dtmGrobal.qryFax.Filter := 'kana Like ''%タナ%''';
dtmGrobal.qryFax.Filtered  := True;

この状態で動かないので、なぜなんだろうと悩んでいます(−−;;


kkk  2005-06-28 02:57:45  No: 15940

ちょっくら調べてみたら
・文字列の部分検索のメタキャラクタは、* で、文字列の
  最後にしか使えません。
との事
ゆえに
kana = '*タナ*'; はだめ見たいですね。
となるとSQLしかないのかも?

ps
もう一人の kkk どうも(^^)
次回から私はHNを3kにしようかな
でも3kだと...(笑)。


ある  2005-06-28 08:23:40  No: 15941

>文字列の部分検索のメタキャラクタは、* で、文字列の
>最後にしか使えません。

そうでしたか
調べてもらって申し訳ないです。

SQLでやってみます。
皆さん、親切にありがとうございました。


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

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






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