- 締切済み
MSアクセス2000で英数の大文字・小文字とかな文字のカタカナ・ひらがなを区別して扱いたい
クエリーやレホートでテキスト型フィールドに対してグルーピングなどを行う際に英数の大文字・小文字とかな文字のカタカナ・ひらがなを区別して扱いたいのですが、アクセスでは区別できないのでしょうか?オプションやプロパティなどを見ても見つかりません。 設定で区別ができないようなら、区分用のフィールドをつくって区別をしたいと考えています。その際、その区分を自動的に入力したいのです。 たとえば、Aフィールド(テキスト型)のデータを自動的に検査して(大文字・小文字やカタカナ・ひらがなに区別したい)、Bフィールドに自動的にそれを入力する方法などはありますでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- SpeedKing
- ベストアンサー率50% (6/12)
フィールド内の文字列が英数大文字・小文字・ひらがな・カタカナのいずれかに統一されているのであれば、yoishoさんや-boya-が回答されているようにAsc関数を使用して、 最初の文字で判断できるのではないでしょうか。 クエリーのフィールドに 分類:IIF(Asc(フィールド名)>64 and Asc(フィールド名)<96,1,IIF(Asc・・・・))) としてコードを分類してしまえば、Group by 分類 句で区別できるのはないでしょうか。 もし、全ての文字列をチェックして分類する必要があるのでしたら、小文字・大文字が混在している場合の条件をFunctionで作成して、上記と同様に 分類:Function名を記載すれば、分類フィールドで区分できると思います。 また、Functionを使用して、入力をフォームで行うのであれば、更新後のイベントで入力できますし、SQLで更新もできると思います。 ひょとしてはずしてますか?
- yoisho
- ベストアンサー率64% (331/516)
残念ながら、クエリー上では区別はできないようです。 データの抽出条件として区別するなら、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)
VBAなら「Asc関数」を使えば区別できるのでは無いでしょうか? kyukieeさんの求める機能がどう言うものかよく分かりませんでしたが、 leftで左側の一文字を持ってきてAscで返ってきた値を 参照すれば、、、 使い方はヘルプなどを参照してください。