定型入力

 データ型の設定により列(フィールド)に記録される値の基本的な内容を定めることができますが、それぞれの列には多数のプロパティ(フィールドプロパティ)が存在し、さまざまな設定ができます。
 これらのうち、入力される値を制限するためのプロパティの1つである定型入力を紹介します。

定型入力の役割

 データ型の設定により、どの列にどのような値を入力できるのかを定めることができますが、さらに入力できる文字種を限定したり、必ず一定の文字数を入力させたいという場合があります。定型入力はこうした制約を実現するためのプロパティです。代表的な利用例としては郵便番号を入力させる場合が挙げられます。
 ただ、文字種と文字数以外は基本的に制限できませんので、活用できる機会は実際のところそう多くはありません。これら以外の考え方による制約を加えたい(例えば3の倍数のみ入力させる、日曜日の日付のみ入力させる、など)場合は定型入力ではなく別のフィールドプロパティである入力規則の利用を検討すべきです。

各データ型との対応

 定型入力はすべてのデータ型に存在するわけではありません。対応については次のようになっています。

短い
テキスト
長い
テキスト
数値型日付
/時刻型
通貨型オート
ナンバー型
OLE
オブジェ
クト型
ハイパー
リンク
添付
ファイル
集計
定型入力

定型入力の設定方法

 テーブルをデザインビューで開き、「定型入力」欄に適当な文字列を記入することで設定することができます。
 手動で入力することもできますが、まずはウイザードを使って、データ型が「短いテキスト」である「郵便番号」列に定型入力を設定してみます。
 フィールドプロパティの「定型入力」の右端をクリックすると…


 ウイザードが現れます。ここで目的どおりの「郵便番号」という選択肢が現れますので選択して次へ進みます。


 設定を表す文字列が表示されます。ここでさらに調整することもできますが、とりあえずそのまま完了します。


 設定ができました。設定を表す「000\-0000;;_」という文字列が入力されていますが、このうち「0」は「数字を入力させる(省略不可)」という意味です。また、「¥」は「その次にある文字(-)をそのまま表示させる」という意味の記号です。
 ちなみにセミコロン(;)が2つありますが、これには次のような意味があります。
 セミコロンの1つ目と2つ目の間…ここに「0」と入力した場合は、設定により表示させている文字(この場合は「-」)を値の一部として保存させます。「1」と入力した場合(または何も入力しない場合)は「-」はただ表示されているのみで、値の一部としては保存されません。
 セミコロンの2つ目の後…ここに入力した記号は、値の入力時に未入力部分が残っていることを示すために表示されます。ここに何も入力しない場合でもアンダーバー(_)が表示されます。
 なお、このセミコロンと設定値は省略可能です。


 データシートビューでの入力の様子です。ハイフンは最初から表示されており、アンダーバー(_)に沿って数字を入力していくことができます。


 上記のように「0」は「半角数字を入力させる(省略不可)」という意味ですので、数字を7つ入力する前に入力を終えようとするとエラーとなります。また、数字を7つ入力するとそれ以上入力することはできません。


 さて、フィールドプロパティに戻り、定型入力に入力されている文字列を手動で「999¥-9999;;_」に変えてみます。「9」は「半角数字を入力させる(省略可)」という意味ですので…


 今度は7字に満たなくともエラーになりません。
 ウイザードで示される設定ばかりでなく、さまざまな記号を用いて詳細な設定を行うことが可能です。


定型入力の詳細と設定例

 定型入力に使用できる文字は以下のようなものです。

設定に使用する文字説明
0半角数字を1文字入力させます。入力を省略することはできません。
9半角数字を1文字入力させます。入力は省略することができます。
#半角数字またはスペース、+、-を1文字入力させます。入力は省略することができます。
L半角英字を1文字入力させます。入力を省略することはできません。
?半角英字またはスペースを1文字入力させます。入力は省略することができます。
A半角英字または半角数字を1文字入力させます。入力を省略することはできません。
a半角英字または半角数字を1文字入力させます。入力を省略することができます。
&任意の文字、数字、記号、スペースを1文字入力させます。入力を省略することはできません。
C任意の文字、数字、記号、スペースを1文字入力させます。入力を省略することができます。
>この記号の後の英字をすべて大文字で入力させます。小文字で入力しようとしても自動的に大文字に変換されます。
<この記号の後の英字をすべて小文字で入力させます。大文字で入力しようとしても自動的に小文字に変換されます。
!この記号を置くと、入力される文字や数字は左詰めで入力されます。
¥この記号の次に置いた1文字はリテラルとして、つまりそのまま表示されます。
"リテラル"ダブルクォーテーションで囲んだ文字列はリテラルとして、つまりそのまま表示されます。
パスワード定型入力欄に「パスワード」と入力すると、入力された文字がすべて「*」と表示されます。ただし、設定を変えると入力された文字がそのまま表示されます。あくまで覗き対策程度の機能です。また、文字数や文字種を制約することはできません。

 また、上記の例にも表れていますが、設定の最後にセミコロン(;)を加え、その次に「0」を加えるとリテラルが値の一部として保存されます。同じく「1」を加えるか何も入力しないとリテラルは表示されるのみで値の一部としては保存されません。セミコロンをさらにもう1つ加え、その次に文字を置くと、値の入力時に未入力部分が残っていることを示すものとしてその文字が表示されます。省略した場合はアンダーバー(_)が表示されます。

 これらを踏まえて、具体的な設定例と、その設定により許容される値の例を示します。ウイザードによる設定例も参考になるかと思います。

設定例設定の意味許容される値の例
(表示されるだけの記号を含む)
000¥-0000数字を7文字入力させ(省略不可)、3字目と4字目の間に「-」を表示する(表示のみで保存されない)。
郵便番号の入力に適しています。
123-4567
000¥-0000;0;数字を7文字入力させ(省略不可)、3字目と4字目の間に「-」を加える(値の一部として保存される)。
郵便番号の入力に適しています。
123-4567
>L<LLLL半角英字を5文字入力させます(省略不可)。ただし、最初の1字のみ大文字で、あとは小文字で入力させます。Apple
CCCCC任意の文字を5文字入力させます(省略可)こんにちは
123
AAA+

 上記でも触れたように、定型入力は基本的に入力される文字種と文字数を制限するものであり、定型入力によってそれ以外の制約を課そうとしてもうまくいきません。例えばテキスト型の列において和暦を入力させようとして「&&99¥年99¥月99¥日;0;_」(これはウイザードで「和暦日付(大正、昭和、平成)」を選択したときの設定される内容そのものですが)と設定した場合であっても、「山田99年99月99日」といったように日付として不適切な値を入力されることを防げません。
 また、例えば数値型の列に対し「LLL」(半角英字を3文字入力)という定型入力を設定すると、どのような値も入力できない列になってしまいます。
 まず、どのような値を許容するのかきちんと整理し、データ型や入力規則の活用を考慮した上で、定型入力の利用を検討する必要があります。また、利用する場合は、その設定がデータ型の設定と噛み合っているかどうか、つまり制約のつもりがザルになっていたり逆に過度に強い制約になっていないか注意する必要があります。