Access Tips by pPoy

  
トップへ←Top    QueryへQuery  FormへForm  ReportへReport  Module(Sub)へSub  Module(Function)へFunction  ExcelへExcel  Etc.へEtc.  Word連携へWord

Query 文字列の大文字・小文字・半角・全角を区別するクエリ
《文字コードでグループ化》(Ac97,Ac2000,Ac2002)
Access では、文字列の大文字・小文字・半角・全角の区別はありません。

つまり、 「SAKURA」 と 「sakura」 と 「SAKURA」 と 「sakura」 は、
全て同じ文字列とみなされます。
また、「さくら」 と 全角の 「サクラ」 と 半角の 「サクラ」 も全て同じとみなされます。

以下は文字列を ASCIIコードに変換する関数を使用して、グループ化する方法です。

文字列をそのまま比較すると区別は出来ませんが、文字コードでは区別できるからです。
このクエリには、strASC() か strHEX() 関数 が必要です。
≪準備≫

tbl_文字列テスト

「tbl_文字列テスト」 には、
6 件のデータがあります。

この中の、「名称」 でグループ化します。
≪名称でグループ化≫

集計クエリ

普通に集計クエリを作成すると、
結果は見事にまとめられてしまいます。

まず、こちらの関数を標準モジュールに貼り付けてください。
(文字列に、全角文字があるので、strHEX() 関数を使用します。)
この頁のTOPへTop
≪関数でグループ化≫

標準モジュールに こちら のユーザ定義関数を貼り付けてから、
以下のグループ化を設定するクエリを作成します。

クエリグリッド

フィールドには、名称HEX: strHEX([名称]) と入力します。
≪結果≫

結果

無事に文字コード毎にグループ化され、文字種別にまとめられます。
≪注意≫
  • 解りやすいために文字コードの結果も表示していますが、実際には非表示でもOKです。

  • 文字列を検索する場合は、「名称HEX」 フィールドの抽出条件式に、関数を入力します。
      例: strHEX("SAKURA")

  • 文字列の部分一致で検索する場合は、「名称HEX」 フィールドの抽出条件式に、
    以下のように入力します。
      例: Like "*" & strHEX("s") & "*"
    この例では、「名称」 に 「s」 を含むデータが全て抽出されます。

  • この関数は、文字列の全てをループします。従って処理に時間が掛かります。
    データ量が非常に多い場合、クエリでは使用に耐えないかもしれません。
    動きが重い場合は、新しいフィールドに更新クエリで文字コードを作成し、
    そちらを使用して集計してください。

    ただし、デコードする関数はありませんので、元の文字列は絶対に上書きしないでください。

  • テストデータに全角文字が含まれる為、strHEX() 関数を使用しましたが、
    strASC() 関数でも同様に使用できます。


この頁のTOPへTop
【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
  form mail はこちら

Copyright(C) pPoy 2004