dポイントプレゼントキャンペーン実施中!

よろしくお願いします。
開発環境は、Vb2005とACCESS2003です。
表題のとおりなんですが、データテーブルに名簿が登録してあり、フィルタ処理をしたいと思っています。ふりがなから、あ行、か行、という抽出を行いたいのですが、あ行でしたら、あ、い、う、え、お、と五つの条件が必要かと思うのですが、どうもうまくいきません。
どのように式を書くのかお教えください。
現在は下記のようなコードにしています。(当然ですがアで始まる人しか抽出できていません)
Dim dv As New DataView
dv.Table = DataSet1.Tables("社員")
dv.RowFilter = "フリガナ LIKE 'ア%'"

"フリガナ LIKE 'ア%'"に、ANDをつけてみたり&をつけたりしたんですが、
複数の条件をどのようにフィルタにかけるのかわからないので、うまくいきません。
すみませんがどのように書けばよいのかお教えください。よろしくお願いします。

A 回答 (2件)

失礼しました。

勘違いしていましたね。
調べてみたらleft関数は使えないようですね。申し訳ありません。
代替関数のsubstringが使えそうなので、これでどうですか?

dv.RowFilter = "substring(フリガナ,1,1) in ('ア','イ','ウ','エ','オ')"

またLIKEを使うのであれば
dv.RowFilter = "(フリガナ LIKE 'ア%') OR ("フリガナ LIKE 'イ%')・・・
とORでつなげれば可能だと思います。

ただパフォーマンスは最初の方がいいと思います。
    • good
    • 0
この回答へのお礼

こんにちは、再びの回答ありがとうございました。
教えていただいたコードで、フィルタをかけることができました。
悩んでいたのですっきりできてうれしいです。
「substring」関数というのを知らなかったのでwebで見てみました。勉強になりました。
LIKE関数のつなげ方も教えていただき、ありがとうございます。
パフォーマンスが「substring」の方が良いとのことなので、こちらを使わせていただきます。本当にありがとうございました。

お礼日時:2006/11/27 17:58

>dv.RowFilter = "フリガナ LIKE 'ア%'"



dv.RowFilter = "left(フリガナ,1) in ('ア','イ','ウ','エ','オ')"

これではどうですか?

ちなみにLIKEはア行を抽出するのではなく、アタマとかアサガオとか抽出するものです
    • good
    • 1
この回答へのお礼

ppg-2さま、回答ありがとうございました。
>dv.RowFilter = "left(フリガナ,1) in('ア','イ','ウ','エ','オ')"
で実行したところ、「left」の部分で「式に定義されていない関数呼び出し left() が含まれています。」とエラーになってしまいます。
何か他に設定が必要でしょうか?
「LIKE」ですが、ア行を抽出しようとしたのではないです。アで始まるフリガナの人を抽出しようとしました。ア行を抽出するためにdv.RowFilter = "フリガナ LIKE 'ア%'"のあとに'イ%'や'ウ%'をANDなどでくっつけるのだろうか?と思っていました。わかりにくくてすみませんでした。
「Left」関数について調べてみます。

お礼日時:2006/11/27 08:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A