- ベストアンサー
DataViewで複数条件のフィルタのやり方
- Vb2005とACCESS2003の開発環境で、データテーブルのフィルタ処理をしたい。具体的には、ふりがなに基づいてあ行、か行などの条件で抽出を行いたいが、うまくいかない。式の書き方を教えて欲しい。
- 現在のコードでは、フリガナがアで始まる人のみを抽出しているが、複数の条件をどのようにフィルタにかければ良いかわからない。ANDや&を試したがうまくいかない。
- データテーブルのフィルタ処理で、ふりがなに基づいて複数の条件をかける方法を教えて欲しい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
失礼しました。勘違いしていましたね。 調べてみたらleft関数は使えないようですね。申し訳ありません。 代替関数のsubstringが使えそうなので、これでどうですか? dv.RowFilter = "substring(フリガナ,1,1) in ('ア','イ','ウ','エ','オ')" またLIKEを使うのであれば dv.RowFilter = "(フリガナ LIKE 'ア%') OR ("フリガナ LIKE 'イ%')・・・ とORでつなげれば可能だと思います。 ただパフォーマンスは最初の方がいいと思います。
その他の回答 (1)
- ppg-2
- ベストアンサー率39% (77/193)
>dv.RowFilter = "フリガナ LIKE 'ア%'" dv.RowFilter = "left(フリガナ,1) in ('ア','イ','ウ','エ','オ')" これではどうですか? ちなみにLIKEはア行を抽出するのではなく、アタマとかアサガオとか抽出するものです
お礼
ppg-2さま、回答ありがとうございました。 >dv.RowFilter = "left(フリガナ,1) in('ア','イ','ウ','エ','オ')" で実行したところ、「left」の部分で「式に定義されていない関数呼び出し left() が含まれています。」とエラーになってしまいます。 何か他に設定が必要でしょうか? 「LIKE」ですが、ア行を抽出しようとしたのではないです。アで始まるフリガナの人を抽出しようとしました。ア行を抽出するためにdv.RowFilter = "フリガナ LIKE 'ア%'"のあとに'イ%'や'ウ%'をANDなどでくっつけるのだろうか?と思っていました。わかりにくくてすみませんでした。 「Left」関数について調べてみます。
お礼
こんにちは、再びの回答ありがとうございました。 教えていただいたコードで、フィルタをかけることができました。 悩んでいたのですっきりできてうれしいです。 「substring」関数というのを知らなかったのでwebで見てみました。勉強になりました。 LIKE関数のつなげ方も教えていただき、ありがとうございます。 パフォーマンスが「substring」の方が良いとのことなので、こちらを使わせていただきます。本当にありがとうございました。