- ベストアンサー
【Access97】コンボボックスの限定リストアップについて
フォームから入力して伝票(レポート)を発行するという単純なAccessを作成しました。 コンボボックス用として[営業所]と[内容]というテーブルを別々に作成し、フォームでそれぞれのテーブルをコンボボックスとして設定しました。 <Accessテーブル> [営業所] 東京/大阪/名古屋 [内容] ガス料金(東京)/水道料金(名古屋)/電気料金(大阪) ・・・等 15件程 [一覧] 入力用のフォームからここにデータを追加 ※[営業所][内容]の他に日付などのフィールドが多数あり <Access入力用フォーム> ※他フィールドあり [発行日]・・・テーブル[一覧]で既定値「=Date()」設定済 [営業所]・・・コンボボックス [内容]・・・コンボボックス [金額]・・・直接入力 現状は当然ながら両方とも全件表示されますが、理想としては[営業所]を選択したら[内容]はその営業所の分のみが表示されるという形にしたいのです。 例えば、Excelでしたら以下のように設定するかと思います。 ・A1=[営業所] ・B1=[内容] ・C1:C3=東京/大阪/名古屋 ・D列=ガス料金(東京)/水道料金(東京)/電気料金(東京)/電話料金(東京) ・・・等 5件以内 ・E列=ガス料金(東京)/電気料金(大阪)/電話料金(大阪) ・・・等 5件以内 ・F列=水道料金(名古屋)/電気料金(名古屋)/保険料(名古屋) ・・・等 5件以内 (1)D列に"東京"、E列に"大阪"、E列に"名古屋"と名前定義 (2)A1に入力規制でC1:C3のリスト設定 (3)B1に入力規制で「=INDIRECT($A1)」設定 <結果> A1で"東京"を選択したらB1にはD列のみ表示 このB1のようなリスト表示をAccessのフォーム上で再現するには、どのように設定すればよろしいのでしょうか? とりあえずはコンボボックス用のテーブルを1つにまとめる必要があるとは思います。 過去にも同じような質問が多々あり、いくつか拝見しましたがさっぱり分かりませんでした。 例えばこれ→ http://personal.okwave.jp/qa1413361.html 当方はこれが理解できないくらいのド素人です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>[営業所]を選択したら[内容]はその営業所の分のみが表示されるという形にしたいのです。 営業所によって扱う内容が異なるのであれば その組み合わせを定義したテーブルが必要です [営業内容](営業所ID、内容ID) 内容コンボボックスのソースにはこのテーブルから作ったクエリを使用します クエリでは営業所IDの抽出条件欄に、フォームの営業所コンボボックスの値を指定し =Forms!フォーム名!営業所コンボ名 営業所コンボの更新後イベントで内容コンボを再クエリしてやります
その他の回答 (2)
- CHRONOS_0
- ベストアンサー率54% (457/838)
>"営業所"をコンボボックスではなくオプションボタンにして同様のことが出来ますでしょうか? オプショングループが返すのは数値だけです その点以外は同じですね オプショングループが返す数値を営業所IDになるようにしてやればいいだけです だけどオプショングループはスペースをとりますよ
お礼
再度のご回答ありがとうございました。 再改造してみました結果、きちんとできました。 営業所は今のところ3ヶ所しかありませんので、スペースは余裕です。お気遣いありがとうございます。 同じようなAccessが他にもたくさんありますので、暇を見つけて改造していきたいと思っております。 本当にありがとうございました。
営業所一覧: [ID]_[営業所名] __1___東京 __2___大阪 __3___名古屋 料金一覧: [ID]_[営業所一覧_ID]_[科目] __1_______________1___ガス料金 __2_______________2___水道料金 __3_______________3___電気料金 さて、これじゃー[営業所一覧_ID]が入力しにくいのでコンボボックスに。 そのためには、[料金一覧:テーブル]のデザインで[営業所一覧_ID]の[ルックアップ]を設定します。 値集合ソース=SELECT 営業所一覧.ID, 営業所一覧.営業所名, * FROM 営業所一覧 ORDER BY 営業所一覧.ID; 列数=2 列幅=0cm;3cm 料金一覧: [ID]_[営業所一覧_ID]_[科目] __1___東京____________ガス料金 __2___大阪____________水道料金 __3___名古屋_________電気料金 で、このように[営業所一覧_ID]は'東京;大阪;名古屋'をリスト項目とするコンボボックスになります。 伝票一覧: [ID]_[営業所一覧_ID]_[料金一覧_ID]_[一覧]_[金額] __1_______________1_____________1___AAA______\0 __2_______________2_____________2___BBB______\0 __3_______________3_____________3___CCC______\0 で、[伝票一覧]では[営業所名]等ではなく索引である[営業所一覧_ID]と[料金一覧_ID]とのみ記録。 エクセルのリスト入力を索引方式にしたような考え方です。 伝票一覧: [ID]_[営業所一覧_ID]_[料金一覧_ID]_[一覧]_[金額] __1___東京______________________1___AAA______\0 __2___大阪______________________2___BBB______\0 __3___名古屋___________________3___CCC______\0 さて、[伝票一覧]の[[営業所一覧_ID]もこのように[営業所一覧]を参照するようにします。 ここまで来れば、フォームをウィザードで生成し、[料金一覧_ID]のコンボボックスを最適化するだけです。 **** ここまで **** さて、ここまでが一致していないと<[料金一覧_ID]のコンボボックスの最適化手法>を示しても無駄でしょう。 で、こんなアプローチで宜しいのでしょうか? 返事を!
お礼
ご回答ありがとうございました。 とてもご丁寧に回答していただきましたが、当方の脳みそでは理解することができませんでした。 大変申し訳ありませんでした。
お礼
ご回答ありがとうございました。 http://personal.okwave.jp/qa1413361.htmlを再度熟読し、CHRONOS_0様に教えていただいたことを参考に入力用フォームを改造してみました。 <結果>"営業所"を選ぶと"内容"はその営業所の分のみ表示。"営業所"を選び直してもちゃんと"内容"もその営業所の分が表示されました!! 大変助かりました。これで選択を間違えることは無くなりました。
補足
実は、今まで使用していたAccessは"営業所"をオプション値、"内容"はコンボボックスにしておりました。しかし、たまたまhttp://personal.okwave.jp/qa1413361.htmlを発見して、とりあえずコンボボックス同士でのやり方をお聞きしたくて今回のような質問をしてみました。 これの応用として"営業所"をコンボボックスではなくオプションボタンにして同様のことが出来ますでしょうか?これ以上にややこしいのであれば当方が理解できるのはこれで精一杯でしたのであきらめます。