「テーブルに数字のはずの列に文字が入ってしまう」「電話番号のフォーマットがバラバラで使い物にならない」「日付を入力し忘れたままレコードが保存されてしまう」——Accessで業務データベースを使い始めると、こうした入力ミスや不整合に悩む場面は多いです。
これらの問題の多くは、テーブルのフィールドプロパティと入力規則を適切に設定することで防げます。フィールドプロパティとは、各フィールドのデータ型・文字数・表示書式・入力マスク・既定値・入力必須などの属性をまとめた設定群です。入力規則(バリデーション)を組み合わせれば、「0以上の数値しか入力できない」「開始日より終了日が後でなければ保存できない」といった業務ルールをデータベース自体に組み込めます。本記事では、フィールドプロパティの各設定項目の意味と使い方から、入力規則のパターン、エラー対処、MOS Access試験の頻出出題パターンまで体系的に解説します。
「Accessでデータ品質を高めたい」「MOS Access試験でフィールド設定問題を確実に得点したい」という方は、ぜひ最後までご覧ください。
フィールドプロパティとは:テーブル設計の精度を上げる仕組み
Accessのテーブルには「デザインビュー」と「データシートビュー」の2つの表示モードがあります。フィールドプロパティはデザインビューでのみ設定できる、各フィールド固有の属性定義です。テーブルのデザインビューを開くと、画面が上下に分割されます。上半分がフィールド名・データ型・説明を入力する領域、下半分が選択中フィールドのプロパティ一覧です。
フィールドプロパティには以下のカテゴリがあります。
| プロパティカテゴリ | 主な設定項目 | 目的 |
|---|---|---|
| データ型・サイズ | データ型(上半分で設定)・フィールドサイズ | 保存できるデータの種類と最大量を制限する |
| 表示制御 | 書式・小数点以下表示桁数・タイトル | データを見やすい形式で表示する |
| 入力補助 | 入力マスク・IMEモード・ルビ | 入力フォーマットを統一する |
| 既定値と必須 | 既定値・入力必須・空文字列の許可 | 入力漏れや初期値を制御する |
| バリデーション | 入力規則・エラーメッセージ | 入力できる値の範囲を制限する |
| パフォーマンス | インデックス・Unicode圧縮 | 検索速度を最適化する |
フィールドプロパティを正しく設定すると、フォームでもクエリでも同じルールが自動的に適用されます。フォームの入力規則と二重管理する必要がなく、テーブルで一元管理できるのが大きなメリットです。
データ型の選び方とフィールドサイズの設定
フィールドプロパティ設定の前提として、データ型の選択が正確でなければなりません。データ型の選択ミスは後から修正が難しく、既存データの変換エラーを引き起こす可能性があります。
主要データ型一覧と用途
| データ型 | 格納できる値 | 用途 | フィールドサイズ既定 |
|---|---|---|---|
| 短いテキスト | テキスト(最大255文字) | 名前・住所・コード番号など | 255(変更推奨) |
| 長いテキスト | 最大65,535文字のテキスト | 備考・説明文・自由記述欄 | — |
| 数値型 | 整数・小数 | 数量・金額・点数(計算対象になるもの) | 長整数型 |
| 大きい数値 | 64ビット整数 | 大きい整数(ID等)・他システムとの連携 | — |
| 日付/時刻型 | 日付・時刻・タイムスタンプ | 生年月日・受注日・開始日など | — |
| 通貨型 | 通貨額(丸め誤差なし) | 金額・単価(小数計算でも誤差が出ない) | — |
| オートナンバー型 | 自動連番(変更不可) | 主キーID | 長整数型 |
| Yes/No型 | True/False(-1/0) | フラグ・チェックボックス | — |
| OLEオブジェクト型 | 画像・Word文書等のバイナリ | 添付ファイルはAttachment型が推奨 | — |
| ハイパーリンク型 | URL・メールアドレス | Webサイト・メールアドレス | — |
データ型選択で最もよくある間違いは、「数字のように見えるがコードや番号として扱う値」を数値型にしてしまうことです。郵便番号(123-4567)・電話番号・顧客コード(C001)のように先頭ゼロや記号が含まれる値は必ず短いテキスト型を選んでください。数値型にすると先頭ゼロが消え、ハイフンも格納できなくなります。
テキスト型のフィールドサイズ設定
短いテキスト型の既定フィールドサイズは255ですが、実際に入力される最大文字数に合わせて縮小することを強く推奨します。フィールドサイズを適切に設定することで3つのメリットがあります。
- 入力制限:設定文字数を超えるテキストが保存されなくなり、データ異常を防げる
- ストレージ効率:Accessのテキスト型はVARCHAR相当で実際の文字数だけ保存されるが、インデックス領域は節約できる
実務でよく使うフィールドサイズの目安を以下に示します。
| フィールドの用途 | 推奨フィールドサイズ |
|---|---|
| 郵便番号(000-0000形式) | 8 |
| 電話番号(ハイフン含む) | 15 |
| 都道府県名 | 4 |
| 氏名(漢字) | 20~30 |
| メールアドレス | 100 |
| 商品コード・顧客コード | 10~20 |
| 住所(市区町村以降) | 100 |
数値型のフィールドサイズは「バイト型(0~255)」「整数型(-32768~32767)」「長整数型(-21億~21億)」「単精度浮動小数点型」「倍精度浮動小数点型」「十進型」から選択します。在庫数や年齢は「整数型」、金額は「通貨型」(フィールドサイズ設定不要)が適切です。
書式・入力マスク・IMEモードの設定
書式と入力マスクは似ていますが役割が異なります。書式プロパティは「保存済みデータをどう表示するか」を制御し、入力マスクは「入力時にどんな形式で入力させるか」を制御します。
書式プロパティの設定例
日付/時刻型の書式例を以下に示します。同じ「2026年6月11日」というデータでも、書式設定によって表示が変わります。
| 書式文字列 | 表示例 | 用途 |
|---|---|---|
| (空白) | 2026/06/11 | Accessの既定表示 |
| yyyy年m月d日 | 2026年6月11日 | 日本語表示 |
| yyyy/mm/dd | 2026/06/11 | ゼロ埋め固定桁 |
| Short Date | 2026/06/11 | 地域設定に依存した短い日付 |
| Long Date | 2026年6月11日 | 地域設定に依存した長い日付 |
数値型・通貨型の書式例も押さえておきましょう。
| 書式文字列 | 表示例(値が12345.6のとき) |
|---|---|
| (空白) | 12345.6 |
| Standard | 12,345.60 |
| Currency | ¥12,346 |
| #,##0 | 12,346 |
| #,##0.00 | 12,345.60 |
| 0% | 1234560%(0.9999に使うと99%) |
入力マスクウィザードの使い方
入力マスクは、ユーザーが入力する際に「___-____」のようなプレースホルダを表示し、決まった形式でしか入力できないように誘導する機能です。電話番号・郵便番号・日付などに設定すると入力ミスを大幅に減らせます。
入力マスクウィザードを使う手順は次のとおりです。
- デザインビューで対象フィールドを選択する
- プロパティの「入力マスク」欄の右端にある「…」ボタンをクリックする
- 一覧から「電話番号」「郵便番号」「日付」等のテンプレートを選択する
- 「データのプレビュー」欄でサンプル入力を確認する
- プレースホルダ文字(既定は「_」)を必要に応じて変更する
- 入力後の値をマスク文字付きで保存するかどうかを選択する(例:03-1234-5678として保存 vs 0312345678として保存)
- 「完了」をクリックして設定を保存する
入力マスクの書式文字列は手動で記述することもできます。主な書式文字を示します。
| 書式文字 | 意味 |
|---|---|
| 0 | 数字(0~9)の入力必須 |
| 9 | 数字または空白(省略可能) |
| L | 英字(A~Z)の入力必須 |
| ? | 英字または空白(省略可能) |
| A | 英字または数字の入力必須 |
| & | 任意の文字または空白(省略可能) |
| C | 任意の文字(省略可能) |
| > | 以降の文字を大文字に変換 |
| < | 以降の文字を小文字に変換 |
| -、/、(、) 等 | そのままリテラル文字として表示 |
郵便番号のマスク文字列は 000\-0000;;_ のように記述します。セミコロン区切りで第2パラメータ(マスク文字の保存方法)と第3パラメータ(プレースホルダ文字)を指定します。IMEモードは日本語入力の自動ON/OFF制御で、住所フィールドは「ひらがな」、コードフィールドは「使用不可」に設定すると入力効率が上がります。
既定値・入力必須・インデックスの設定
既定値の設定とDate()関数の活用
「既定値」プロパティを設定すると、新しいレコードを追加したとき自動的にその値がセットされます。毎回同じ値を入力する手間が省け、入力漏れも防げます。
| フィールドの用途 | 既定値の設定例 | 効果 |
|---|---|---|
| 受注日・登録日 | Date() | 新規レコード作成日が自動入力される |
| 登録日時 | Now() | 日付と時刻が自動入力される |
| 数量フィールド | 1 | 最小単位の数量が初期値になる |
| ステータスフィールド | “未処理” | 受付直後は常に「未処理」から始まる |
| Yes/No型フィールド | No | 新規レコードは初期値「False」になる |
既定値に文字列を設定するときは必ずダブルクォーテーションで囲む必要があります。囲まないとAccessが式として解釈してエラーになります。
入力必須・空文字列の許可・インデックスの設定
「入力必須」を「はい」にすると、そのフィールドに値が入力されていないとレコードを保存できなくなります。「空文字列の許可」は「入力必須:はい」との組み合わせで動作が変わります。
| 入力必須 | 空文字列の許可 | 動作 |
|---|---|---|
| いいえ | いいえ | 空白(Null)も空文字列(””)も禁止。何らかの値が必要 |
| はい | いいえ | Nullを禁止。ただし空文字列(””)は許可 |
| はい | はい | Nullを禁止するが空文字列(””)は許可 |
| いいえ | はい | Nullも空文字列も許可(既定) |
「インデックス」プロパティは検索・並べ替えの速度に影響します。「はい(重複あり)」は重複値を許可したインデックス、「はい(重複なし)」は一意制約付きインデックスです。主キー以外で頻繁に検索・結合するフィールド(顧客コード・受注番号など)にはインデックスを設定することをおすすめします。ただし、インデックスが多すぎると更新・挿入時のパフォーマンスが低下するため、検索頻度の高いフィールドに絞ってください。
フィールドレベルの入力規則でバリデーションを実装する
「入力規則」プロパティに条件式を設定すると、その条件を満たさない値を保存できなくなります。フォームやマクロとは独立してテーブル自体で動作するため、どんな経路でデータが入力されても同じ制約が適用されます。
入力規則プロパティの書き方
入力規則は、そのフィールドの値が満たすべき条件式を記述します。式ビルダー(「…」ボタン)を使うと、演算子・関数の一覧から選択して記述できます。
入力規則で使える主な演算子と関数を示します。
| 演算子・関数 | 説明 | 記述例 |
|---|---|---|
| 比較演算子(>, <, >=, <=, =, <>) | 数値・日付・文字列の大小・一致比較 | >=0 |
| Between … And … | 値が範囲内かどうか | Between 1 And 100 |
| In(値1, 値2, …) | 値がリストのいずれかに一致するか | In(“東京”,”大阪”,”名古屋”) |
| Like “パターン” | 文字列のパターン一致(* は任意文字列、? は任意1文字) | Like “T*” |
| Is Not Null | Nullでないこと | Is Not Null |
| And / Or | 複数の条件を組み合わせる | >=0 And <=100 |
| Date() | 今日の日付 | >= Date() |
| Len() | 文字列の長さ | Len([郵便番号]) = 7(テーブル規則では不可・式ビルダーで確認) |
入力規則を設定したら、必ず「エラーメッセージ」プロパティにも説明文を入力してください。エラーメッセージを設定しないと、ユーザーにはAccessの汎用エラーメッセージが表示され、何が間違っているのか伝わりません。
よく使う入力規則パターン
| 用途 | 入力規則の式 | エラーメッセージ例 |
|---|---|---|
| 数量は0以上 | >=0 | 数量は0以上の値を入力してください。 |
| 点数は0~100 | Between 0 And 100 | 点数は0から100の範囲で入力してください。 |
| 日付は今日以降 | >= Date() | 開催日は本日以降の日付を入力してください。 |
| ステータスを特定語句に限定 | In(“未処理”,”処理中”,”完了”,”保留”) | ステータスは「未処理」「処理中」「完了」「保留」のいずれかを入力してください。 |
| コードが”T”で始まる | Like “T*” | 商品コードは「T」で始まる英数字を入力してください。 |
| 金額は1円以上100万円以下 | >=1 And <=1000000 | 金額は1円以上1,000,000円以下で入力してください。 |
| 終了日が開始日より後(テーブル規則) | [終了日] > [開始日] | 終了日は開始日より後の日付を入力してください。 |
最後の「終了日が開始日より後」のように同一レコード内の複数フィールドをまたぐ検証は、フィールドレベルではなくテーブルレベルの入力規則で設定します(次節で解説)。
テーブルレベルの入力規則:複数フィールドをまたぐ検証
フィールドレベルの入力規則は単一フィールドの値だけを検証できますが、テーブルレベルの入力規則ならば「このフィールドとあのフィールドの関係」を検証できます。
テーブルレベルの入力規則を設定する手順
- テーブルをデザインビューで開く
- リボンの「デザイン」タブにある「プロパティシート」をクリックする(または右クリック→「プロパティ」)
- テーブルのプロパティパネルが開くので「入力規則」欄に式を入力する
- 「エラーメッセージ」欄にエラー発生時のメッセージを入力する
- テーブルを保存する
テーブルレベルの入力規則では、フィールド名を角括弧で囲んで直接参照します。
| 検証内容 | テーブルレベル入力規則の式 |
|---|---|
| 終了日が開始日より後 | [終了日] > [開始日] |
| 終了日が開始日以降(同日も許可) | [終了日] >= [開始日] |
| 売上金額が見積金額以下 | [売上金額] <= [見積金額] |
| 単価と数量の積が上限以内 | [単価] * [数量] <= 10000000 |
| 入金日が受注日以降 | IsNull([入金日]) Or [入金日] >= [受注日] |
テーブルレベルの入力規則は、レコード全体が保存されるタイミングで検証されます。フィールドレベルの入力規則がフィールドを移動した瞬間に検証されるのと違い、保存ボタンを押すかレコードを移動するまで検証が実行されません。この違いを理解しておくと、ユーザーへのフィードバックタイミングが設計できます。
入力規則のエラーとよくある問題への対処
フィールドプロパティや入力規則を設定した後に発生しやすい問題と対処法をまとめます。
| 問題 | 主な原因 | 対処法 |
|---|---|---|
| 既存データに入力規則を設定したら保存できない | 既存レコードが新しい入力規則に違反している | 「データ整合性チェック」ダイアログで既存データの例外処理を選択する、または先にデータをクリーニングしてから入力規則を設定する |
| 入力マスクを設定したが入力できる文字が少ない | マスク文字列の桁数が実際の入力より短い | マスク文字列の桁数を確認して修正する |
| 入力規則のエラーメッセージが表示されない | エラーメッセージプロパティが空欄のためAccessの汎用メッセージが表示されている | 「エラーメッセージ」プロパティに具体的なメッセージを入力する |
| 日付の入力規則 >= Date() が昨日の日付も許容してしまう | 日時フィールドで時刻部分が00:00:00のため日付比較と時刻比較が混在している | DateValue([フィールド名]) >= Date() のように日付部分だけ比較する |
| テーブルレベルの入力規則が効かない | プロパティシートを「テーブル選択」状態で開かず、フィールド選択状態で開いている | ルーラーの交差点やフィールド外の余白をクリックしてテーブル全体を選択してからプロパティシートを開く |
| フォームでは入力できるが直接テーブルを開くと入力規則に引っかかる | フォームの入力規則とテーブルの入力規則が矛盾している | テーブルの入力規則を正として、フォームの入力規則を合わせるか削除する |
入力規則をテーブルに設定する際の重要な原則は、「フォームの入力規則よりテーブルの入力規則が優先される」ことです。両方に矛盾する設定をするとユーザーが混乱します。テーブルで設定したバリデーションはフォームと重複して設定せず、テーブルに任せる設計が保守しやすくなります。
MOS Access試験でのフィールドプロパティ出題パターンと攻略法
MOS Access試験では、テーブルのフィールドプロパティに関する問題が複数のカテゴリにまたがって出題されます。具体的な出題範囲と頻出パターンを確認しておきましょう。
MOS Access試験でのフィールドプロパティ出題範囲
MOS Access 365・2019・2021のいずれも「テーブルの管理・修正」カテゴリでフィールドプロパティが出題されます。主な出題要素は以下のとおりです。
- フィールドのデータ型を適切な型に変更する
- フィールドサイズ・書式・タイトルを設定する
- 入力マスクウィザードを使用してフォーマットを設定する
- 既定値を設定する(Date()等の関数を含む)
- 入力必須プロパティを「はい」に設定する
- フィールドレベルの入力規則とエラーメッセージを設定する
- インデックスを設定する(重複あり・なし)
試験頻出パターンと攻略ポイント
| 頻出問題パターン | 操作手順のポイント | 注意点 |
|---|---|---|
| 電話番号フィールドに入力マスクを設定する | 入力マスクウィザード起動→「電話番号」テンプレート選択→プレースホルダ確認→完了 | ウィザードの「完了」まで進まないと設定が反映されない |
| 日付フィールドに既定値 Date() を設定する | 「既定値」欄に半角で =Date() または Date() と入力する | 「=」は省略可だが問題文の指示に従う。文字列と混同して “”で囲まない |
| フィールドに入力規則「>=0」とエラーメッセージを設定する | 「入力規則」欄に式を入力→「エラーメッセージ」欄にメッセージを入力→テーブルを保存 | 両方セットで設定する。エラーメッセージを忘れると減点対象 |
| フィールドサイズを変更する | テキスト型:フィールドサイズ欄の数値を変更する。数値型:ドロップダウンから適切なサイズを選択する | サイズを縮小する際に既存データが切り詰められる旨の警告が出ることがある。試験では「はい」で続行する |
| インデックスを「はい(重複なし)」に設定する | 対象フィールドを選択→「インデックス」プロパティのドロップダウンで「はい(重複なし)」を選択する | 「重複あり」と「重複なし」を問題文で区別する |
試験対策の練習法
MOS Access試験のフィールドプロパティ問題は、デザインビューの操作を確実にできれば確実に得点できます。以下の練習ステップで準備してください。
- サンプルテーブルを自分で作成してデザインビューを開く習慣をつける:上半分と下半分の役割を体で覚える
- 入力マスクウィザードを電話番号・郵便番号・日付の3種類で操作する:ウィザードの4ステップを迷わず進める
- 既定値に Date()・Now()・固定文字列の3パターンを手入力する:関数名とダブルクォーテーションの使い方を体で覚える
- 入力規則を3つのパターン(比較・Between・In)で設定する:式の記述ルールと式ビルダーの使い方を練習する
- テーブルを保存する際に出る「既存データのチェック」ダイアログに慣れる:試験中にダイアログが出ても慌てない
フィールドプロパティ問題は手順さえ覚えれば確実に得点できる領域です。他の受験者が迷いやすい「入力マスクウィザードの完了まで確実に進める」「入力規則と同時にエラーメッセージも設定する」の2点を意識して練習してください。
まとめ:フィールドプロパティと入力規則でデータ品質を作り込む
本記事で解説したAccessのフィールドプロパティと入力規則のポイントをまとめます。
- データ型の選択:郵便番号・電話番号・コード番号は数値型でなく短いテキスト型を選ぶ。計算対象の数値は数値型・通貨型を選ぶ
- フィールドサイズ:実際の入力最大文字数に合わせて縮小する。入力制限・設計の自己文書化に役立つ
- 書式と入力マスク:書式は表示形式を制御、入力マスクは入力形式を制御する。ウィザードを活用して電話番号・郵便番号を統一する
- 既定値:Date()で今日の日付を自動入力。文字列はダブルクォーテーションで囲む
- 入力必須:必須フィールドは「入力必須:はい」に設定して入力漏れを防ぐ
- フィールドレベルの入力規則:数値範囲(Between)・特定値制限(In)・パターン(Like)・日付制約を設定しエラーメッセージも必ずセットで入力する
- テーブルレベルの入力規則:複数フィールドの関係を検証する場合はテーブルのプロパティシートから設定する
- MOS試験対策:入力マスクウィザードの4ステップと入力規則+エラーメッセージのセット設定を繰り返し練習する
フィールドプロパティと入力規則は一度正しく設定すれば、そのテーブルを使うすべてのフォーム・クエリ・レポートに自動的に反映されます。「データが汚い」「集計結果がおかしい」という問題の多くはテーブル設計の段階で防げます。本記事のパターンを参考に、まず1つのテーブルで入力規則を設定し、業務データの品質を高めることから始めてみてください。
MOS Access試験を受験する方は、本記事で紹介したフィールドプロパティ設定の手順を実機で繰り返し練習して、確実な得点源にしてください。
