
【A地区】に関する知恵袋
【質問】
地区の知恵袋から考えると、スキルのパソコンの教室について考えると、アクセスについて質問です。地区の知恵袋を理解したいのであれば、下記の動作を行いたいのですが、スキルのパソコンの教室とは、どうすれば簡単に出来るか教えて下さい。テーブル データ地区 | ホテル名 A | ×××× B | △△△△ A | ※※※※ C | ????フォームのコンボボックスで 「A」地区を選び別のコンボボックスでA地区のみのホテル名を選べるようにしたいのですがどのようにすれば良いのでしょうか?
【解答】
そのテーブルの名前をテーブル17とします。フォームの名前をフォーム10とします。フォーム上に、ウィザードを使用せずに2つのコンボボックスを作ります。コントロールの一覧からコンボボックスをフォーム上にドラッグして、ウィザードが起動したら、[キャンセル]をクリックして中断します。コンボボックスの名前を、それぞれ、コンボ1、コンボ2とします。プロパティシートを表示させます。コンボ1をクリックして、コンボ1のプロパティを表示させたら[データ]タグをクリックし、[値集合タイプ]が「テーブル/クエリ」になっているのを確認します。もし、「テーブル/クエリ」になっていなければ、このプロパティをクリックし、▼ボタンをクリックして一覧の中から「テーブル/クエリ」を選びます。スキルのパソコンの教室であれば、[値集合ソース]をクリックして、右側に表示される[…]ボタンをクリックします。クエリの作成画面が表示され、クエリの元になるテーブルを選択するダイアログが表示されるので、テーブル17を選んで[追加]をクリックし、クエリビルダーにテーブル17が表示されたら[閉じる]をクリックしてダイアログを閉じます。ビルダのグリッドのフィールドに地区を表示させます(フィールドの右にある▼ボタンをクリックして一覧から選ぶなどします)。もし、プロパティシートが表示されていなければ、ビルダの上半分の何もないところを右クリックし、メニューの「プロパティ」を選んでプロパティシートを表示させます。ビルダの上半分の何もないところを左クリックし、プロパティシートの[固有の値]の値を「はい」に変更します。スキルのパソコンの教室の概要に触れると、×ボタンをクリックしてビルダを閉じます。「SQLステートメントの変更を保存し、プロパティの設定を変更しますか?」というメッセージが出たら[はい]をクリックします。もし、コンボ1で選んだ値をテーブルに保存するのであれば、[コントロールソース]に保存先のフィールドを入力します。コンボ2をクリックしてコンボ2のプロパティを表示させ、上と同じようにしてクエリビルダを表示させます。最初のダイアログではテーブル17を表示させます。地区の知恵袋なら、グリッドのフィールドに地区とホテル名を、順に表示させます。地区を表示させたフィールドの表示欄のチェックを外し、抽出条件欄に[forms]![フォーム10]![コンボ1]と記述します。×ボタンをクリックしてビルダを閉じます。確認メッセージが表示されたら[はい]をクリックします。地区の知恵袋というと、もし、コンボ2で選んだ値をテーブルに保存するのであれば、[コントロールソース]に保存先のフィールドを入力します。[イベント]タグをクリックして、[フォーカス取得時]というのを探してクリックします。右側の[…]ボタンをクリックすると[ビルダーの選択]ダイアログが表示されるので、「マクロビルダー」を選んで[OK]をクリックします。マクロのデザインビューが表示されたら、次のようなマクロを記述します。アクション:再クエリコントロール名:コンボ2×をクリックしてビルダを閉じます。確認メッセージが表示されたら[はい]をクリックします。これでどうでしょうか。*追記*> コンボ2を選んだ時に パラメータの入力 forms!フォーム10!コンボ2「forms!フォーム10!コンボ2」ではなく「forms!フォーム10!コンボ1」ではありませんか?もし本当に「forms!フォーム10!コンボ2」と表示されているのであれば、コンボ2の値集合ソースを設定する際にビルダで入力した、地区フィールドの抽出条件が間違っています。この抽出条件には「forms!フォーム10!コンボ1」と記述してください。地区フィールドの値が、コンボ1に入力した値と同じものを抽出する、という条件だからです。パラメータの入力が表示されるのは、クエリの実行時に「forms!フォーム10!コンボ2」が見つからないからです。原因として考えられるのは①コンボボックスが作成されているフォームの名前がフォーム10ではない②コンボボックスの名前がコンボ1及びコンボ2ではないもし、フォームの名前がフォーム10でなければ、コンボ2の[値集合ソース]を設定するビルダを再度開いて、地区フィールドの抽出条件欄のforms!フォーム10!コンボ1の「フォーム10」の部分を、実際のフォーム名に書き換えてみてください。あるいは、別の方法ですが、こういうのもあります。コンボ2の値集合ソースを削除し、コンボ2の[フォーカス取得時]に設定されているマクロも削除します。その上で、[フォーカス取得時]の右側の[…]ボタンをクリックして[ビルダーの選択]ダイアログで、「コードビルダー」を選んで[OK]をクリックします。VBエディタが起動してPrivate Sub コンボ2_Enter()End Subと表示されたら、この2行の間にコードを記述してPrivate Sub コンボ2_Enter()Me.コンボ2.RowSource = "SELECT ホテル名 FROM テーブル17 WHERE 地区='" & Me.コンボ1 & "'"End Subのようにします。