テーブルやフォームでコンボボックスのリストから値を選択して入力するようにしていても、プロパティの[入力チェック]を[いいえ]に設定していると、値を直接入力できてしまいます。
プロパティの[入力チェック]を[はい]に設定すると、リスト以外の値は入力できなくなります。
ただ、テーブルのフィールドプロパティと、フォームのプロパティで異なる設定をしていると、この設定が無効になることがあります。
コンボボックスのリストが値リストの場合とテーブルの場合に分けて解説します。
参考ここでは、ウィンドウの表示は既定の[タブ付きドキュメント]の設定にしています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
コンボボックスのリストが[値リスト]の場合
テーブルでコンボボックスを使って入力する方法は、以下の記事で解説しています。ルックアップウィザードを使っての設定です。
-
ルックアップウィザードを使用してドロップダウンリストを設定(値を直接入力)
テーブルのデータ型には、[ルックアップウィザード]というのがあります。 ルックアップウィザードを選択して、ウィザードに従って設定していくと、 ...
以下は、テーブルのデザインビューです。
[担当者]フィールドを選択して、フィールドプロパティの[ルックアップ]タブを選択しています。
[担当者]フィールドは、[表示コントロール]で[コンボボックス]を選択して、[値集合ソース]に値を入力して作成しています。
[入力チェック]は[いいえ]に設定しています。既定は[いいえ]です。
データシートビューに切り替えると、[担当者]フィールドは、コンボボックスから選択できるようになります。
[入力チェック]が[いいえ]の場合は、リストに表示されていない値もコンボ ボックスに入力できます。
[入力チェック]が[はい]の場合のテーブル
[担当者]フィールドのフィールドプロパティの[入力チェック]で[はい]に設定します。
ここでは、[値リストの編集の許可]は[はい]に設定しています。
テーブルのデータシートビューでリスト以外の値を入力しようとすると、以下のメッセージが表示されます。
入力したテキストはリスト内の項目ではありません。
メッセージウィンドウの[いいえ]を選択すると、以下のようになります。
[はい]を選択すると、[リスト項目の編集]ウィンドウが表示されます。
このまま[OK]ボタンをクリックすると、コンボボックスのリストに項目が追加されます。
参考プロパティで[値リストの編集の許可]が[はい]に設定されている場合のみ、[リスト項目の編集]ウィンドウが表示されます。
[値リストの編集の許可]が[いいえ]になっている場合は、以下のメッセージウィンドウが表示されます。
指定した項目はリストにありません。
リストから項目を選択するか、リスト項目と同じテキストを入力してください。
フォームのプロパティで[入力チェック]を設定
[入力チェック]はフォームのコンボボックスのプロパティでも設定できます。
この時、テーブルでの[入力チェック]が[はい]になっているか、[いいえ]になっているかで異なります。
テーブルのフィールドプロパティで[入力チェック]が[いいえ]の場合
フォームのデザインビューです。
[担当者]コンボボックスのプロパティで[入力チェック]を[はい]に設定します。
コンボボックスの[入力チェック]を[はい]に設定しても、テーブルのフィールドプロパティで[いいえ]を選択していれば、リスト以外の値を入力できてしまいます。
テーブルのフィールドプロパティで[入力チェック]が[はい]の場合
[担当者]コンボボックスのプロパティで[入力チェック]を[いいえ]に設定します。
フォームのコンボボックスで[いいえ]に設定しても、テーブルのフィールドプロパティで[はい]を選択していれば、メッセージウィンドウが表示されます。
入力したテキストはリスト内の項目ではありません。
上記メッセージウィンドウが表示されるのは、プロパティで[値リストの編集の許可]が[はい]に設定されているためです。
上記メッセージウィンドウで[はい]を選択すると、[リスト項目の編集]ウィンドウが表示されます。
プロパティで[値リストの編集の許可]が[いいえ]に設定している場合は、以下のメッセージウィンドウが表示されます。
指定した項目はリストにありません。
リストから項目を選択するか、リスト項目と同じテキストを入力してください。
参考コンボボックスのリストを[値リスト]で設定していて、フォームの[入力チェック]の設定どおりにいかない場合は、テーブルでのプロパティの設定を確認してみてください。
データベースを共有で使用している場合は、リストを勝手に追加したり削除されることは避けたいですね。[値リストの編集の許可]の設定も合わせてチェックされることをおすすめします。
テーブルでコンボボックスの設定をしていない[テキストボックス]の場合は、フォームの設定どおりになります。
フォームで[入力チェック]を[はい]にすると、[入力したテキストはリスト内の項目ではありません。]のメッセージウィンドウが表示されて、[はい]を選択すると、[リスト項目の編集]ウィンドウが表示されます。
これもプロパティで[値リストの編集の許可]が[はい]に設定されている場合です。
[値リストの編集の許可]が[いいえ]の場合は、[指定した項目はリストにありません。]のメッセージウィンドウが表示されます。
コンボボックスのリストが[テーブル/クエリ]の場合
テーブルでコンボボックスを使って入力する方法は、以下の記事で解説しています。ルックアップウィザードを使っての設定です。
-
ルックアップウィザードでコンボボックスの設定(別のテーブルから値取得)
Accessのテーブルで、フィールドに入力する値をコンボボックスから選択する方法です。 コンボボックスとは、フィールドの値を入力する代わりに ...
以下は、テーブルのデザインビューです。
[得意先ID]フィールドは、[表示コントロール]で[コンボボックス]を選択して、[値集合タイプ]で[テーブル/クエリ]、[値集合ソース]に[T_得意先]を指定しています。
[入力チェック]は[いいえ]にしています。既定は[いいえ]です。
参考ここでは、リレーションシップで参照整合性の設定をしていない場合です。参照整合性の設定をしている場合は、異なります。
テーブルをデータシートビューに切り替えると、以下のように[得意先ID]フィールドは、コンボボックスのリストから選択できるようになります。
リスト以外の値も入力できます。
参考テーブル[T_得意先]のデータシートビューは以下のようになっています。
[入力チェック]が[はい]の場合のテーブル
[得意先ID]フィールドのフィールドプロパティの[入力チェック]を[はい]に設定します。
データシートビューに切り替えて、リスト以外の値を入力して確定しようとすると、以下のメッセージウィンドウが表示されます。
指定した項目はリストにありません。
リストから項目を選択するか、リスト項目と同じテキストを入力してください。
フォームのプロパティで[入力チェック]を設定
[入力チェック]はフォームのプロパティでも設定できます。
この時、テーブルでの[入力チェック]が[はい]になっているか、[いいえ]になっているかで異なります。
テーブルのフィールドプロパティで[入力チェック]が[いいえ]の場合
フォームのデザインビューです。
[得意先ID]コンボボックスのプロパティで[入力チェック]を[はい]に設定します。
リスト以外の値を入力すると、メッセージウィンドウが表示されます。
指定した項目はリストにありません。
リストから項目を選択するか、リスト項目と同じテキストを入力してください。
テーブルのフィールドプロパティで[入力チェック]が[はい]の場合
[得意先ID]コンボボックスのプロパティで[入力チェック]を[いいえ]に設定します。
コンボボックスのリスト以外の値が入力できます。
参考コンボボックスの値リストにテーブルを設定した場合、テーブルプロパティで[入力チェック]を[いいえ]にしていても、フォームで[はい]に設定すると、リスト以外の値は入力できなくなります。
コンボボックスの値をテーブル/クエリで設定している場合は、テーブルプロパティの[入力チェック]が[はい][いいえ]のどちらであっても、フォームの[入力チェック]での設定が有効になります。
参照整合性を設定したテーブルをコンボボックスのリストにした場合
データベースで以下のようにリレーションシップを設定しているとします。
テーブル[T_得意先]とテーブル[T_売上管理]でリレーションシップの設定をしています。
リレーションシップと参照整合性については、以下の記事で解説しています。
-
リレーションシップの作成と参照整合性の設定
Accessでは、複数のテーブルがあって、そのテーブル間の共通フィールドを関連付けることができます。この関連付けのことを[リレーションシップ ...
[入力チェック]が[いいえ]の場合のテーブル
[得意先ID]のフィールドプロパティの[入力チェック]を[いいえ]にしています。
データシートビューに切り替えてリスト以外の値を入力してみます。入力はできますが、
レコードを保存しようとすると、以下のメッセージウィンドウが表示されて保存はできません。
テーブル'T_得意先'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことはできません。
上記メッセージで[OK]ボタンをクリックして、保存しようとすると、今度は以下のメッセージウィンドウが表示されます。
このレコードを保存できません。
参考参照整合性の設定をしていると、[入力チェック]を[いいえ]の設定にしていても、リスト以外の値は保存できません。設定や入力のミスがあったとしてもデータの整合性は保たれるわけです。
[リレーションシップ]ダイアログボックスで[フィールドの連鎖更新]、または[レコードの連鎖削除]をオンにすると、関連テーブル側のレコードを更新したり、削除できるようになります。
-
リレーションシップの[フィールドの連鎖更新]と[レコードの連鎖削除]
Accessでは、参照整合性を設定することで、データの入力や更新、削除が制限されてデータの整合性を保つことができます。 リレーションシップの ...
[入力チェック]が[はい]の場合のテーブル
[得意先ID]のフィールドプロパティの[入力チェック]を[はい]にしています。
以下のメッセージウィンドウが表示され、入力を確定できません。
指定した項目はリストにありません。
リストから項目を選択するか、リスト項目と同じテキストを入力してください。
フォームの[入力チェック]で設定した場合
テーブルプロパティで[入力チェック]を[いいえ]にしていても[はい]にしても、フォームでの動作は同じです。
フォームのコンボボックスで[入力チェック]を[いいえ]に設定をしている場合は、以下のメッセージウィンドウが表示されます。
入力はできても、レコードの保存時に以下のメッセージウィンドウが表示されて保存はできません。
テーブル'T_得意先'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことはできません。
フォームのコンボボックスで[入力チェック]を[はい]に設定している場合は、確定時に以下のメッセージウィンドウが表示されます。
指定した項目はリストにありません。
リストから項目を選択するか、リスト項目と同じテキストを入力してください。
参考リレーションシップで参照整合性の設定をしていても、[入力チェック]の設定は[はい]にしておくほうが、ユーザーには分かりやすいと思います。
フォームのプロパティは、キーボードから[F4]キーを押すと、表示/非表示の設定ができます。
デザインビューをフォームビューに切り替えるには、[F5]キーを使用すると効率的です。
また、プロパティの[はい][いいえ]の切り替えは、設定項目でダブルクリックして設定できます。プルダウンリストから選択するより効率的だと思います。
また、コンボボックス内にカーソルを置くとすぐにリストを表示するように設定することもできます。
-
コンボボックス内にカーソルが移動すると自動でリストを表示するには
Accessの入力フォームでコンボボックスを使うことは多いと思います。 コンボボックスって、▼ボタンを押してリストを表示しますが、コンボボッ ...