• 締切済み

MSアクセス2000で英数の大文字・小文字とかな文字のカタカナ・ひらがなを区別して扱いたい

クエリーやレホートでテキスト型フィールドに対してグルーピングなどを行う際に英数の大文字・小文字とかな文字のカタカナ・ひらがなを区別して扱いたいのですが、アクセスでは区別できないのでしょうか?オプションやプロパティなどを見ても見つかりません。 設定で区別ができないようなら、区分用のフィールドをつくって区別をしたいと考えています。その際、その区分を自動的に入力したいのです。 たとえば、Aフィールド(テキスト型)のデータを自動的に検査して(大文字・小文字やカタカナ・ひらがなに区別したい)、Bフィールドに自動的にそれを入力する方法などはありますでしょうか?

みんなの回答

  • SpeedKing
  • ベストアンサー率50% (6/12)
回答No.3

フィールド内の文字列が英数大文字・小文字・ひらがな・カタカナのいずれかに統一されているのであれば、yoishoさんや-boya-が回答されているようにAsc関数を使用して、 最初の文字で判断できるのではないでしょうか。 クエリーのフィールドに 分類:IIF(Asc(フィールド名)>64 and Asc(フィールド名)<96,1,IIF(Asc・・・・))) としてコードを分類してしまえば、Group by 分類 句で区別できるのはないでしょうか。 もし、全ての文字列をチェックして分類する必要があるのでしたら、小文字・大文字が混在している場合の条件をFunctionで作成して、上記と同様に 分類:Function名を記載すれば、分類フィールドで区分できると思います。 また、Functionを使用して、入力をフォームで行うのであれば、更新後のイベントで入力できますし、SQLで更新もできると思います。 ひょとしてはずしてますか?

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.2

残念ながら、クエリー上では区別はできないようです。 データの抽出条件として区別するなら、WHERE句の記述で、StrComp関数や InStr関数を引数 compare に 0 を指定して使えば、バイナリでの比較ができると思いますが (たとえば WHERE StrComp(フィールド名, "抽出条件", 0) = 0 のように記述、詳しくはHELPで調べてみてください)、グループ化はちょっと厳しいですね。 先頭文字だけで区別するなら、グループ化するフィールドに、-boya-さんが示していらっしゃる Asc関数を使う方法も有効かと思います (Left関数をはさむ必要はなさそうですが)。(たとえば GROUP BY (Asc(フィールド名) のように) ということで、区分用のフィールドをつくる件ですが、 たとえばAフィールドの更新前処理のイベントで、やはり Asc関数を使って文字コードから文字の種別を判断して、Bフィールドに区分を入れるのが、一つの方法として考えられますが・・・。 蛇足として、ご存知かと思いますが、VBAモジュールでの比較なら、Option Compare ステートメントで宣言してやれば、バイナリーでの区別が可能です。

  • -boya-
  • ベストアンサー率35% (176/494)
回答No.1

VBAなら「Asc関数」を使えば区別できるのでは無いでしょうか? kyukieeさんの求める機能がどう言うものかよく分かりませんでしたが、 leftで左側の一文字を持ってきてAscで返ってきた値を 参照すれば、、、 使い方はヘルプなどを参照してください。

関連するQ&A

専門家に質問してみよう