こんにちはmasalifeです。
今回はあまり知られていないけど、とても便利なStrComp関数を紹介します。
StrComp関数を使用すると、文字列を全角/半角、大文字/小文字、ひらがな/カタカナを区別して比較することが出来ます。
それでは使い方を確認していきましょう。
StrComp関数とは?
microsoft-officeサポートでは次のように示されています。
【構文】
StrComp(string1,string2,[,compare])
*microsoft-officeサポートより引用
引数 | 説明 |
string1 | 任意の有効な文字列式 |
string2 | 任意の有効な文字列式 |
compare | 文字列比較の種類を指定 *Nullの場合はエラーが発生 |
第3引数であるcompareでどのように文字列を比較するのかを設定します。
設定する値は次のとおりです。
【Compare引数の値】
値 | 説明 |
0 | バイナリの比較を実行 * 全角/半角、大文字/小文字、ひらがな/カタカナを区別 |
1 | テキストの比較を実行 * 全角/半角、大文字/小文字、ひらがな/カタカナを区別 しない |
2 | Accessの設定に従う * defaultはテキストの比較を実行 |
StrComp関数の戻り値は次のとおりです。
戻り値 | 条件 |
-1 | string1がstring2より小さい |
0 | string1とstring2が等しい |
1 | string1がstring2より大きい |
Null | string1またはstring2がNullである |
原則、大きい・小さいはASCIIやJISの大小となりますが、
等しい場合は戻り値が0で、等しくなかったら0以外という事を覚えていればいいと思います。
クエリで戻り値を確認する
テーブルに次のように文字列を用意して、クエリで戻り値を確認してみましょう。
クエリを作成します。
クエリをデザインビューで開いて、
バイナリ型・テキスト型それぞれで比較するフィールドを作成します。
実行すると、
バイナリ型とテキスト型で戻り値が異なることが確認出来ます。
抽出条件を<>0とする事で、登録誤りで確認が必要なデータだけを抽出のような、現場で役立つ機能を作成出来るのでとても便利な関数です。
・バイナリ型の設定は全角/半角、大文字/小文字、ひらがな/カタカナを区別
・テキスト型の設定は全角/半角、大文字/小文字、ひらがな/カタカナを区別しない
・戻り値は一致するなら0、一致しないなら0以外
フォームを使った活用例
バイナリ型で大文字/小文字…を区別できるので、ログインフォームの作成にとても役立ちます。
簡易的なログインフォーム機能の作成方法を別の記事で紹介しています。
StrComp関数をVBAで使用しているので、VBAでの活用例を知りたい方もぜひ参考にしてみてください。
さいごに
現場で使用していたログインフォームを確認してみたら、IIf関数で一致不一致の確認をしてありました。
IIf関数だとテキスト型での比較となるため、ログイン機能のような全角/半角・・・の区別が必要な状況には適しません。
もし、同じような状況の方がいたら、ぜひStrComp関数を使用したものに変更してください。
少しでも安全に効率よく使用できるものにアップデートしていきましょう。
最後まで読んでいただきありがとうございました。