ここから本文です

解決済みの質問

アクセスについて質問です。 下記の動作を行いたいのですが、 どうすれば簡単に出...

rahmens77さん

アクセスについて質問です。

下記の動作を行いたいのですが、
どうすれば簡単に出来るか教えて下さい。

テーブル データ

地区 | ホテル名
A | ××××
B | △△△△
A | ※※※※
C | ????


フォームのコンボボックスで 「A」地区を選び
別のコンボボックスでA地区のみのホテル名を選べるようにしたいのですが
どのようにすれば良いのでしょうか?

補足
コンボ2を選んだ時に パラメータの入力 forms!フォーム10!コンボ2
が表示するのはなぜでしょうか??

違反報告

ベストアンサーに選ばれた回答

mi_no_ho_do_si_ra_zuさん

そのテーブルの名前をテーブル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

のようにします。

  • 違反報告
  • 編集日時:2010/10/29 22:52:34
  • 回答日時:2010/10/29 21:08:36

質問した人からのコメント

  • mi_no_ho_do_si_ra_zuさん
    いつも回答ありがとうございます。

    パラメータの入力表示は「forms!フォーム10!コンボ1」でした
    追記していただいた方法をためしてみます

    ありがとうございます
  • コメント日時:2010/10/30 11:23:47

グレード

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 0点(5点満点中)0人が役に立つと評価しています。

あなたにおすすめの解決済みの質問

初心者ですが、VBAのコンボボックスのことについて教えてください。 元のデータに氏名1、氏名2、住所1、住所2があるとします。ユーザーフォームにてコンボボックス1とコンボボックス2を作成し、コンボボックス1に氏名...
クエリで抽出した結果を、リストボックスやコンボボックスに出力させることってできますか? アクセスで、クエリで抽出した結果を、ユーザーフォームのリストボックスやコンボボックスに出力させたいのですが、よい方法あったら...
マイクロソフトアクセスで質問です。 テーブルから検索フォームを作成しようと思い、コンボボックスを使いました。 ローマ字入力の項目の検索と漢字検索の項目の2種類を作成しようとおもいました。 ローマ字入力検索は上手く反応...
知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

ただいまの回答者

15時07分現在

2811
人が回答!!

1時間以内に5,196件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する