Accessのフォームを作成するとき、「なぜデータが表示されないのか」「入力した値がテーブルに保存されない」と戸惑うことがあります。その原因の多くは、フォームのRecordSource(レコードソース)とコントロールのControlSource(コントロールソース)の設定にあります。
この2つのプロパティは、フォームとデータベースを結びつける「橋渡し役」です。正しく理解すれば、データ入力フォーム・検索ダイアログ・集計表示パネルなど、さまざまな用途に応じたフォーム設計ができるようになります。本記事では、RecordSourceとControlSourceの設定手順から、連結・非連結・演算コントロールの使い分け、実務での活用パターンまでをまとめて解説します。

連結フォームと非連結フォームの違い
Accessのフォームは、RecordSourceが設定されているかどうかで大きく2種類に分かれます。
連結フォーム(Bound Form)
RecordSourceにテーブルまたはクエリが指定されているフォームです。フォームを開くと、指定したテーブル・クエリのレコードが読み込まれ、テキストボックスなどのコントロールに値が表示されます。レコードを編集して保存ボタンを押すか、レコードを移動すると、変更がテーブルに書き込まれます。
- 用途:データ入力・編集・参照
- 代表例:顧客マスタ入力フォーム、受注登録フォーム、在庫管理フォーム
非連結フォーム(Unbound Form)
RecordSourceが空(未設定)のフォームです。データベースのレコードとは直接結びついていないため、フォームを開いてもテーブルのデータは自動表示されません。その代わり、自由なコントロール配置や、VBAやマクロを使った独自ロジックの実装に向いています。
- 用途:検索条件入力ダイアログ、メニュー画面、確認ポップアップ、ログインフォーム
- 代表例:「検索キーワードを入力してください」ダイアログ、起動メニュー
RecordSourceの設定手順
RecordSourceはフォームのプロパティです。デザインビューで設定します。
手順1:フォームをデザインビューで開く
- ナビゲーションウィンドウでフォームを右クリックし、「デザインビュー」を選択します。
- フォーム本体(コントロールがない余白部分)をクリックし、フォーム全体を選択します。
- リボンの「デザイン」タブ →「プロパティシート」をクリックして、プロパティシートを表示します(ショートカット:F4)。
手順2:RecordSourceを設定する
- プロパティシートの「データ」タブをクリックします。
- 「レコードソース」(RecordSource)プロパティを探します。
- ドロップダウンリストをクリックすると、現在のデータベースにあるテーブルとクエリの一覧が表示されます。
- 紐付けたいテーブルまたはクエリを選択します。
なお、「レコードソース」プロパティの右端にある「…」(ビルドボタン)をクリックすると、クエリビルダーが開き、SELECT文をその場で作成して直接埋め込むこともできます。シンプルな並べ替えや絞り込みが必要な場合は、クエリビルダーを使うと既存のクエリを増やさずに済みます。
ControlSourceの設定手順
ControlSourceは、フォーム上の個々のコントロール(テキストボックス・チェックボックスなど)に設定するプロパティです。コントロールをどのデータに結びつけるかを指定します。
連結コントロール(フィールドに結びついたコントロール)
ControlSourceにフィールド名を指定すると、そのコントロールはRecordSourceのフィールドと連結されます。フォームを開くと該当フィールドの値が表示され、入力を変更すると保存時にテーブルへ反映されます。
設定手順:
- テキストボックスなどのコントロールをクリックして選択します。
- プロパティシートの「データ」タブを開きます。
- 「コントロールソース」プロパティのドロップダウンから、結びつけたいフィールド名を選択します。
フィールドリスト(「デザイン」タブ →「既存のフィールドの追加」)からフィールドをフォームにドラッグすると、ControlSourceが自動的に設定されたテキストボックスが作成されます。多数のフィールドを配置するときに便利です。
非連結コントロール(ControlSourceが空のコントロール)
ControlSourceが未設定(空)のコントロールは非連結コントロールと呼ばれます。テーブルのフィールドとは結びついていないため、入力した値はテーブルへ自動保存されません。検索ボックス・パラメータ入力欄・表示専用ラベルなど、一時的な入力値を受け取る目的に使います。
演算コントロール(=で始まる式のコントロール)
ControlSourceに「=」で始まる式を入力すると、演算コントロールになります。フォーム上のリアルタイム計算値や集計値を表示する際に使います。
例:合計金額を表示するテキストボックスのControlSource
=[数量]*[単価]
演算コントロールは読み取り専用で、テーブルへの書き込みは行われません。
3種類のコントロールの比較まとめ
| 種類 | ControlSourceの設定値 | データの読み書き | 主な用途 |
|---|---|---|---|
| 連結コントロール | フィールド名(例:氏名) | 読み取り+書き込み | データ入力・編集フォーム |
| 非連結コントロール | 空(未設定) | なし(一時値のみ) | 検索条件入力、ダイアログ |
| 演算コントロール | =から始まる式 | 読み取りのみ(計算結果表示) | 合計・平均・日付計算の表示 |
実務活用パターン(想定例)
以下は実際の業務での活用場面を想定した例です。具体的な数値や効果は参考値であり、実測値ではありません。
想定例1:顧客マスタ入力フォーム
RecordSourceに「T_顧客マスタ」テーブルを設定し、「氏名」「住所」「電話番号」フィールドをControlSourceに持つテキストボックスを配置します。RecordNavigatorを使ってレコードを移動しながら、各顧客の情報を入力・修正できます。
フォームを開くとT_顧客マスタの先頭レコードが表示され、ナビゲーションボタンで次のレコードへ移動できます。新規レコードのボタンをクリックすると入力欄が空になり、新しい顧客を追加できます。
想定例2:検索条件入力ダイアログ
RecordSourceは空(非連結フォーム)にし、「氏名を入力してください」というラベルと、非連結テキストボックス(名前:txt_SearchName)を配置します。「検索」ボタンのクリックイベントで、入力値を使ってクエリを実行し、結果をデータシートフォームに表示するマクロやVBAコードを呼び出します。
このパターンでは、検索キーワード自体はテーブルに保存せず、一時的にメモリ上だけで保持します。
想定例3:受注フォームでの合計表示
RecordSourceに「Q_受注一覧」クエリを設定します。「数量」「単価」フィールドは連結コントロールとして配置し、データを入力できるようにします。「金額」欄には演算コントロール(ControlSource:=[数量]*[単価])を配置することで、入力と同時に自動計算された金額を表示できます。金額フィールド自体はテーブルには存在せず、毎回その場で計算されます。
よくあるつまずきと対処法
「テキストボックスに値が表示されない」
フォームのRecordSourceが設定されていても、テキストボックスのControlSourceが空になっていると値は表示されません。プロパティシートの「データ」タブで「コントロールソース」に正しいフィールド名が入っているか確認してください。
「値を入力してもテーブルに保存されない」
フォームのRecordSourceが空(非連結フォーム)の場合、連結コントロールを配置してもデータは保存されません。また、フォームの「編集ロック」プロパティや「データ入力のみ」プロパティが「はい」になっていると保存できない場合があります。プロパティシートで確認してください。
「ControlSourceにフィールド名を入れたのにエラーになる」
フォームのRecordSourceに設定されていないフィールド名をControlSourceに指定すると、エラーが発生します。ControlSourceで指定できるフィールドは、RecordSourceのテーブル・クエリに含まれるものに限られます。
「演算コントロールに値を入力しようとしてもカーソルが入らない」
演算コントロール(ControlSourceが「=」で始まる)は読み取り専用です。直接入力はできません。仕様どおりの動作です。
MOS Access試験対策のポイント
MOS Access 365試験では、フォームのデザインビューでの操作が出題範囲に含まれます。RecordSourceとControlSourceの設定は、フォームとレポートを扱う問題で問われる基本操作です。
試験で確認しておくべき操作は次の通りです。
- フォームのデザインビューとレイアウトビューの違い(詳細はプロパティシートの操作可能範囲が異なる)
- プロパティシートの「データ」タブでRecordSourceを設定する手順
- フィールドリストからコントロールをドラッグして連結コントロールを作成する手順
- ControlSourceに式を入力して演算コントロールを作成する手順
- フォームのビュー(デザイン・レイアウト・フォームビュー)を切り替える操作
試験時間は50分です。分野別の出題数・配点は公表されていません。操作手順を実際に手を動かして確認しておくことが合格への近道です。
PR
Microsoft Copilot for Microsoft 365活用大全
AccessをはじめWord・Excel・PowerPointまで、Microsoft 365のアプリを横断して活用するための実践的な解説書。各アプリの機能を効率よく組み合わせて業務効率を上げたい方に役立ちます。

まとめ
AccessフォームのRecordSourceとControlSourceは、フォームとデータを結びつける要の設定です。
- RecordSource:フォームがどのテーブル・クエリのデータを扱うかを決めるプロパティ。空なら非連結フォーム、テーブル・クエリを指定すれば連結フォームになる
- ControlSource:個々のコントロールがどのフィールドや式に紐付くかを決めるプロパティ。フィールド名なら連結コントロール、空なら非連結コントロール、「=」で始まる式なら演算コントロールになる
それぞれの役割を理解しておけば、フォームが「データを表示しない」「保存できない」といったトラブルを素早く解決できます。デザインビューとプロパティシートを使い慣れることが、Access活用の第一歩です。
