電子書籍の厳選無料作品が豊富!

クエリーやレホートでテキスト型フィールドに対してグルーピングなどを行う際に英数の大文字・小文字とかな文字のカタカナ・ひらがなを区別して扱いたいのですが、アクセスでは区別できないのでしょうか?オプションやプロパティなどを見ても見つかりません。

設定で区別ができないようなら、区分用のフィールドをつくって区別をしたいと考えています。その際、その区分を自動的に入力したいのです。

たとえば、Aフィールド(テキスト型)のデータを自動的に検査して(大文字・小文字やカタカナ・ひらがなに区別したい)、Bフィールドに自動的にそれを入力する方法などはありますでしょうか?

A 回答 (3件)

フィールド内の文字列が英数大文字・小文字・ひらがな・カタカナのいずれかに統一されているのであれば、yoishoさんや-boya-が回答されているようにAsc関数を使用して、


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

ひょとしてはずしてますか?
    • good
    • 0

残念ながら、クエリー上では区別はできないようです。



データの抽出条件として区別するなら、WHERE句の記述で、StrComp関数や InStr関数を引数 compare に 0 を指定して使えば、バイナリでの比較ができると思いますが (たとえば WHERE StrComp(フィールド名, "抽出条件", 0) = 0 のように記述、詳しくはHELPで調べてみてください)、グループ化はちょっと厳しいですね。

先頭文字だけで区別するなら、グループ化するフィールドに、-boya-さんが示していらっしゃる Asc関数を使う方法も有効かと思います (Left関数をはさむ必要はなさそうですが)。(たとえば GROUP BY (Asc(フィールド名) のように)

ということで、区分用のフィールドをつくる件ですが、
たとえばAフィールドの更新前処理のイベントで、やはり Asc関数を使って文字コードから文字の種別を判断して、Bフィールドに区分を入れるのが、一つの方法として考えられますが・・・。

蛇足として、ご存知かと思いますが、VBAモジュールでの比較なら、Option Compare ステートメントで宣言してやれば、バイナリーでの区別が可能です。
    • good
    • 0

VBAなら「Asc関数」を使えば区別できるのでは無いでしょうか?



kyukieeさんの求める機能がどう言うものかよく分かりませんでしたが、
leftで左側の一文字を持ってきてAscで返ってきた値を
参照すれば、、、
使い方はヘルプなどを参照してください。
    • good
    • 0

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


おすすめ情報