- ベストアンサー
Access 2007 クエリのあいまい検索について
Access 2007 クエリのあいまい検索について 特定の文字を含むデータ以外を表示させたいと考えています。 下記の文字を含むデータ以外を表示させたい場合 どのように抽出条件を入れればいいでしょうか。 <抽出条件> 担当者もしくは空欄を含むデータ以外を表示 ※「担当者」という文字列です。 よろしくお願いいたします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
抽出条件ではなくクエリの新しいフィールドに、 IIf(Not IsNull([住所]),funcIsHirakana([住所])) とし、抽出条件を False です。表示はチェックをいれません。 それこそ「あいまい」でした。 以上です。
その他の回答 (7)
- layy
- ベストアンサー率23% (292/1222)
論点が変わっている?。 クエリで「出力対象フラグ」でも作って、担当者文字有無、空欄か否か、ひらがな含むか、アルファベット含むか否か、考えられる判定結果をVBAで求めTRUEやFALSEを返す、で良い。 クエリ側で、この4つの存在判定をそれぞれ組み合わせでみていくのはできなくはないがー、LikeやNOT多発でケース漏れそうでわかりにくい。判定はVBA側に1つに固めて記載した方が良いかと。例えばー、4つなら1111ならすべてダメ、0111なら1つめ条件だけOK、0000ならすべてOK等こんな判定もできる。 条件増減の修正にも耐えるように。
お礼
ご回答ありがとうございます。VBAも勉強したいと思います。
- piroin654
- ベストアンサー率75% (692/917)
失礼しました。抽出条件を IIf(Not IsNull([名前]),funcIsHirakana([名前])) としてください。空欄があるとそのままでは エラーになります。
- piroin654
- ベストアンサー率75% (692/917)
ひらかなが含まれているとTrueを返す関数です。 以下の関数を標準モジュールに貼り付け保存します。 'ひらかなが含まれていたらTrueを返します Function funcIsHirakana(strMojiretu As String) As Boolean If Len(strMojiretu) = 0 Then Exit Function End If Select Case Asc(Mid$(strMojiretu, 1)) Case -32096 To -32015 funcIsHirakana = True End Select End Function 使い方は、フィルターをかけるフィールドを[名前]とすると、 クエリの新しいフィールドに、 funcIsHirakana([名前]) とし、その抽出条件に False といれます。これで名前のフィールドにひらかなが 含まれるレコードは表示されません。
- piroin654
- ベストアンサー率75% (692/917)
アルファベットについては、 Not Like '*[A-Z]*' でいいと思いますが、ひらがな については関数を作る必要が あります。たとえば、 http://www.vbalab.net/vbaqa/data/access/log/tree_265.htm にあるような関数を少し変更して ひらがなを含む文字列を取り出す 関数に変更します。アスキーコード でひらがなを区別します。他のサイト にも関連情報があります。 http://www.accessclub.jp/bbs2/0048/beginter15717.html 時間があれば、作成して検証しますが。
- layy
- ベストアンサー率23% (292/1222)
クエリデザインでLikeを使っての抽出を学習して下さい。 文字「担当者」を含む、空欄を含む、この判断の裏返しです。ある文字を含むレコードだったら1、以外は0と別途判断項目を準備する。0を抽出します。判断結果がより明確になります。 WHEREに書くときANDとORを間違えないように。
お礼
ご回答ありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
#1です。クエリの抽出条件に直接 書く場合です。
補足
ご回答ありがとうございます。最後に質問させてください。 ひらがなとアルファベットの文字列については、データに抽出しないということも可能でしょうか。
- piroin654
- ベストアンサー率75% (692/917)
Not Like "*" & "担当者" & "*" AND Not Is Null
お礼
ご回答ありがとうございました。ご回答頂きました内容をもとにいろいろ試したいと思います。