こんにちはmasalifeです。
Accessの力を最大限に発揮させるためには、関数の知識が必要不可欠です。
僕が多くのシステム構築をしてきた経験から、
この関数を覚えといた方がいい
というものを順に紹介していきたいと思います。
今回紹介するのは、
Len関数
です。
文字列の文字数を取得したいときに使います。
あまり聞きなれない関数だと思いますが、
入力制御機能を実装する時に役立ちます。
関数を知っていても、どうやって使えばいいか分からないという方のために、
代表的な使用例も紹介したいと思います。
関数の感覚を掴んでくださいね。
Len関数とは?
microsoft-officeサポートでは次のように示されています。
【構文】
Len(文字列)
*microsoft-officeサポートより引用
括弧内に文字数を取得したい文字列を入れます。
実際にクエリでやってみましょう。
クエリでの活用
文字列を指定する
Len関数の括弧内に文字列を指定してみましょう。
赤枠の部分を入力します。
注意してもらいたい事として、文字列をダブルクォーテーション(” “)で括ってください。
文字列を指定する時はダブルクオーテーション(” “)で括る
覚えてもらいたい決まり事です。
クエリを実行して確認してみましょう。
「桁数は?」は4文字なので正しい結果が表示されていますね。
フィールドを指定する
文字列にフィールドを指定することも出来ます。
赤枠の部分を入力します。
フィールド名を指定するので、[ ]で括ってください。
クエリを実行して確認してみましょう。
フィールドに入力した文字列の文字数が取得出来ていますね。
ここで注目してもらいたいのは、
「スペースは どうなるの」
の文字数が11となっていることです。
文字の数は10ですが、スペースも文字数とカウントされていることが分かります。
スペースも文字数としてカウントされる
Len関数のポイントとしておさえておいてください。
Len関数を用いた加工【IIf関数と組み合わせる】
文字数を取得出来るのは分かったが実用の仕方が分からない
と思っている方もいるかもしれません。
Len関数はIIf関数と組み合わせて使うと便利です。
僕が経験した一例を紹介すると
次のように入力されているOPNoを
【1桁の場合は頭に0を2つ付けて3桁にする】
1→001
【2桁の場合は頭に0を1つ付けて3桁にする】
99→099
【3桁の場合はそのまま】
100→100
としたい場合に、Len関数とIIf関数を用いると便利です。
赤枠の部分を入力します。
Len関数で桁数(文字数)を取得して、IIf関数で桁数により処理を変えています。
IIf関数の中にIIf関数を入れる(入れ子にする)場合
フロー図を作成すると分かりやすいです。
クエリを実行して確認してみましょう。
正しく加工出来ていますね。
現場では、(1~100)まで手作業でやろうと言われましたが
このクエリを使えば数分で出来ました。
ささいな効率化ですよね。
フォームでの活用【入力の制御をかける】
Len関数を用いた入力の制御の一例を紹介します。
先ほど、OPNoを3桁に加工しましたが
新たに登録するOPNoは必ず3桁にする
とします。
登録するための入力フォームを用意し、OPNoが3桁でしか登録出来ないようにしましょう。
プロパティで制御をかける
フォームをデザインビューで開いて
OP番号を入力するテキストボックスのプロパティ―シートを出します。
入力規則:Len([OPNo]=3
エラーメッセージ:OP番号は3桁で入力してください!!
と入力します。
入力規則プロパティはこのテキストボックスに入力する値を制御します。
[OPNo]フィールドに入る値は3桁ですよという意味です。
エラーメッセージプロパティは入力規則に従わなかった場合のメッセージを指定します。
間違って2桁で入力したとしても、エラーメッセージで教えてくれるので便利です。
もちろんデータが登録されることはありません。
VBAで制御をかける
VBAでも制御をかけられます。
参考までにコードを紹介します。
OP番号を入力するテキストボックスのイベントの更新後処理に記述してください。
さいごに
オペレータ番号や管理番号のようなマスタの登録誤りは命取りとなります。
入力機能を構築する時は制御を的確にかけていきましょう。
読んでいただいた方の安全なシステム構築、システム運用のお役に立てれば幸いです。