- ベストアンサー
access2007でのサブフォームへの入力
- access2007でのサブフォームへの入力について質問です。
- メインフォームで仕入先を選択すると、サブフォームの商品コンボボックスに選択できる商品が表示されるようにしたいです。
- 具体的なイメージはメインフォームで仕入先Aを選択すると、サブフォームの商品コンボボックスには商品1と商品2が表示されるというようなものです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
仕入先フィールドのあるテーブル名と 商品フィールドのあるテーブル名 & デザインはどうなっていますか? 仮に仕入先マスタ ID、仕入先名、電話・・・ 商品マスタ ID、仕入先ID、商品名、・・・ みたいな感じだと メインフォームのコンボボックスは非連結コントロールにして プロパティのデータタブの コントロールソース→空白 値集合タイプ→テーブル/クエリ 値集合タイプ→select ID,仕入先名 from 仕入先マスタ 連結列→1 書式タブ 列数→2 列幅→0.5;2 (適当に) あとは イベントタブ 更新後処理をクリックすると下向き▼・・・ が出ますので三点リーダみたいなほうをクリック VBEのウィンドウが出ますので、そこに Private Sub 実際のコンボボックス名_AfterUpdate() Me.Recalc '←この一行を入れます End Sub つぎにサブフォームのほうのコンボボックスには プロパティのデータタブの コントロールソース→空白 値集合タイプ→テーブル/クエリ 値集合タイプ→select 商品名 from 商品マスタ where 仕入先ID = forms!メインフォーム名!先のコンボボックス名 連結列→1 で出来るかな? まずはここまで。 PS. 仕入先と商品のテーブルの構造を提示してもらう必要があるような。
その他の回答 (2)
- nicotinism
- ベストアンサー率70% (1019/1452)
追伸 Me.Recalc '←この一行を入れます 忘れてました。
お礼
nicotinism 様 今朝、me.サブフォーム名ですると 思った通りの処理ができました。 本当にありがとうございます^^
- nicotinism
- ベストアンサー率70% (1019/1452)
続きです。 メインフォームのコンボボックス名を仕入先コンボ サブフォームのを商品コンボとします。 仕入先コンボ 値集合ソースを、select 仕入先ID,仕入先名 from 仕入先マスタ に変更 商品コンボは select 商品ID,商品名,仕入先ID from 商品マスタ where 仕入先ID = forms!メインフォーム名!仕入先コンボ 仕入先コンボの更新後イベントは Private Sub 仕入先コンボ_AfterUpdate() Me!仕入先ID = Me!仕入先コンボ.Column(0) Me!仕入先コンボ = Null End Sub 商品コンボは Private Sub 仕入先コンボ_AfterUpdate() Me!商品ID = Me!商品コンボ.Column(0) Me!商品コンボ = Null End Sub でどうでしょうか? サブフォームは帳票タイプ 商品コンボは詳細セクションに配置してください。
補足
nicotinism 様 回答ありがとうございます。 どうやってコードを組んでも 思ったようにいかなかった原因が わかりました。 初歩的なミスで本当にすみません。 セキュリティーの警告で このコンテンツを有効にする にしないとダメなんですね。 Access2007をつい最近初めて使うもので 無知で申し訳ないです。 最初に回答してくださったANo.1の 更新後処理の Me.Recalcで商品IDコンボボックスの値は 変わるのですが 最初に何も入力していない状態から 何かを選んで 一度更新しなければ 商品IDコンボボックスの値が変わらないという 結果になってしまいました。 ここまで来ればやっと実現したいこと 質問するべきことが明確になってきました。 メインフォームで 仕入先ID(コンボボックス)を選んで更新したタイミング 仕入先ID(コンボボックス)の更新後処理で サブフォームの商品ID(コンボボックス)を Recalcできれば理想です。 メインフォームの処理のところのコードで サブフォームの処理をするようになるのですが どう記述すればよろしいでしょうか? Me.Recalcと記述したのでは、 Me.はメインフォームのものを示すことになるのでダメです。 サブフォームの商品IDコンボボックスをメインフォームの 仕入先IDコンボボックスで選んだ、商品の内容が選べるように 反映させる処理をするのにはどうすればよろしいでしょうか? ご迷惑かけております。 何卒よろしくお願いします。
補足
nicotinism 様 回答ありがとうございます。 やはり、うまくいきません。 仕入先マスタ 仕入先ID 数値型 仕入先名 テキスト型 電話・・・ 商品マスタ 商品ID 数値型 商品名 テキスト型 仕入先ID 数値型 ・・・ メインフォーム(仕入伝票テーブル) 仕入伝票番号 オートナンバー型 仕入伝票日付 日付型 仕入先ID 数値型 ※1 仕入合計金額 通貨型 サブフォーム(仕入伝票明細テーブル) 仕入伝票番号 (オートナンバー型のため フォームには出していない) 仕入伝票番号明細 数値型 商品ID 数値型 ※2 単価 通貨型 数量 数値型 金額 通貨型 という構成です。 仕入入力画面なので 仕入伝票テーブルと仕入伝票明細テーブルを同時に 入力できるようにしたいです。 教えていただいた 非連結のコンボボックスにするのでは 仕入伝票テーブルおよび仕入伝票明細テーブル への入力ができなくなってしまいます。 連結したコンボボックスで メインフォーム、サブフォームともに 入力処理ができるようにはできないでしょうか? よろしくお願いします。 ※1 select ID,仕入先名 from 仕入先マスタ 連結列→1 書式タブ 列数→2 列幅→0,2で仕入先名だけ表示するようにしています。 ※2 select 商品ID,商品名 from 商品マスタ 連結列→1 書式タブ 列数→2 列幅→0,2で商品名だけ表示するようにしています。