全角文字のみ入力させる

 漢字ひらがな数字が混在するようなフィールドであっても全角文字のみ受け付けたいという場合がありますが、その方法についてです。

f:id:accs2014:20161119153018p:plain:right:w400

 右の画像は「所在地」列にて設定する例です。入力規則に以下のように記入しています。



LenB(StrConv([所在地],128))=LenB([所在地])

LenB関数は文字列のバイト数を返す関数です。また、StrConv関数についてですが、文字列をStrConv関数(第2引数128)で変換することにより「全角文字は2バイト、半角文字は1バイト」と評価されます。一方、StrConv関数を経ずにLenB関数を用いた場合はすべての文字が2バイトと評価されます。Accessが通常用いるUnicodeだとすべての文字が2バイトだからです。
 つまり、式の左辺は「全角文字は2バイト、半角文字は1バイト」として評価したバイト数、右辺は「すべての文字は2バイト」として評価したバイト数となります。双方が一致すれば文字列はすべて全角ということであり、一致しなければ半角文字が含まているということになります。


f:id:accs2014:20161119153017p:plain:right:w400

 入力の様子です。1,2行目は数字も含めすべて全角で入力されていますが、3行目において半角の文字「123」を含めようとしたためエラーとなっています。もちろん半角カタカナも弾かれます。