• ベストアンサー

ACCESSでフォームの明細で他の値を参照させたい

ACCESS2010でフォームで明細行のコンボボックスを、他のテキストボックスの値を使って 行単位で動的に変更したいのですが、どのようにしたらよろしいのでしょうか 例えば、 1行目のAのコンボボックスで「果物」を選択したら、Bのコンボボックスは「リンゴ・みかん・イチゴ」を表示させたい 2行目のAのコンボボックスで「野菜」を選択したら、Bのコンボボックスは「きゅうり・きゃべつ」を表示したい もちろん、テーブルに下記のように保存されています 【分類】|【名称】 野菜|きゅうり 野菜|きゃべつ 果物|りんご 果物|みかん 果物|イチゴ

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

2007 でやってみたものになりますが 提示テーブル名を「★★」と仮定します。 連結された分類用のコンボボックス名を「cbx1」 名称用コンボボックス名を「cbx2」と仮定します。 「cbx1」の設定 値集合ソース:  SELECT DISTINCT 分類 FROM ★★; 値集合タイプ: テーブル/クエリ 連結列: 1 列数: 1 入力チェック: はい 「cbx2」の設定 値集合ソース:  SELECT 名称, 分類 FROM ★★ WHERE IIf([cbx1] Is Null,True,分類=[cbx1]); 値集合タイプ: テーブル/クエリ 連結列: 1 列数: 2 列幅: 2cm;0cm  (名称だけ表示する様に) 入力チェック: はい VBA で以下の処理を記述します Private Sub cbx1_AfterUpdate()   Me.cbx2 = Null   Me.cbx2.SetFocus End Sub Private Sub cbx2_Enter()   Me.cbx2.Requery End Sub Private Sub cbx2_AfterUpdate()   If (Not IsNull(Me.cbx2)) Then     If (IsNull(Me.cbx1)) Then       Me.cbx1 = Me.cbx2.Column(1)       Me.cbx2.Requery     End If   End If End Sub ※ 分類のコンボが更新されたら、名称用コンボにフォーカス移動 ※ 名称用コンボのフォーカス取得時に、自分を再クエリ ※ 名称用コンボの更新で、選ばれていたら   分類が設定されていなかったら、選ばれた名称の分類を設定   そして、分類に絞った表示にするために自分を再クエリ ※ 後は検証しながら細かいイベントでの動きを入れていきます 例えば、上記状態で 分類を選択し、名称を選択中に ESC キーとかで取消した けど、名称(cbx2)からフォーカスが外れていないので 名称の一覧は前回選択した分類でのものになっていたり・・・ ※ 全ケースに対応できるレベルで回答しているわけではないので・・・ この場合は、フォームの Undo で、cbx2 からフォーカスを外す事で対応できますが ※※ 「cbx2」の様に「cbx1」の条件で表示を切り替える場合、 コントロールを重ねたりしますが、今回の場合は上記で動くようですね。 ※ 帳票フォームでのお話だった?(帳票フォームで確認していたもので) もし上記で動かなかったり・・・ 以前に、コントロールを重ねる、このさわりの回答をしていたので そちらを参照してみてください accessの連結コンボについて http://okwave.jp/qa/q7345694.html #4の回答

rabu_chihaha
質問者

お礼

ありがとうございます。 思い通りに動きました。

その他の回答 (1)

回答No.1

テーブルの名前を「テーブル1」としてある場合。 フォームのデザインビューでコンボボックスを配置します。 プロパティのその他タブで名前を「コンボ1」にします。 データタブで値集合ソースに select 分類 from テーブル1 group by 分類; 連結列には 1 を。 コンボボックスをもう一個配置し名前をコンボ2とします。 こちらの値集合ソースには select 名称 from テーブル1 where 名称='[コンボ1]' ; フォームビューに切り替えて コンボ1で何かを選択後に、F9 キーを押します。 その後コンボ2でコンボ1で選択したものから選べます。 F9 キーを毎回押すのも面倒なので VBAではコンボ1の更新後処理に記述します。 Private Sub コンボ1_AfterUpdate() Me!コンボ2.Requery End Sub 単純な例ですが実際にはもっと複雑な場合があるでしょう。 Access コンボボックスの連動 などをキーワードでGoogleってみてください。

rabu_chihaha
質問者

お礼

早々の回答ありがとうございます。 やってみます。

関連するQ&A

  • エクセルで2段階コンボボックスを作成

    エクセルのシート上にコンボボックスを2つ作成して Aのコンボボックスの内容を選択するとBのコンボボックスの値が変わるというものを作成したいです。 エクセルのプルダウンで最初は考えていましたが、プルダウンだと三角の矢印が常に表示されない為あきらめました。 なのでコンボボックスの作成の仕方を教えて下さい。 例として野菜とくだものをあげます コンボボックスAで選択するもの→ 野菜、くだもの コンボボックスBで選択するもの→  【野菜の場合】キャベツ、にんじん、トマト 【くだものの場合」バナナ、りんご、みかん 以上です。よろしくお願いいたします。

  • ユーザーフォームのコンボボックスでINDIRECT関数を使うにはどのよ

    ユーザーフォームのコンボボックスでINDIRECT関数を使うにはどのようにすればいいでしょうか? Private Sub UserForm_Initialize() Me.ComboBox1.RowSource = "sheet1!B1:C1" ComboBox2 = "=INDIRECT(?)" End Sub ComboBox1で種類のリストが表示され、選んだ項目により ComboBox2のリストが表示されるようにしたいのですが うまくいきません。   1   2    3    4 A 種類 果物   野菜 B 果物 りんご  たまねぎ C 野菜 いちご  ピーマン D    みかん  レタス   (すべて名前を定義しています。) VBAでINDIRECT関数を使うにはどのようにすればよいでしょうか?

  • Excel:シート間参照し置換したい

    初心者です。異なるシート間における表を参照し、置換の ような事がしたいのですが、VLOOKUPが使えるのでしょうか? やりたいのは、下記の通りです。 Sheet1のような表があります。 Sheet2のA列を参照し、Sheet1のB列を変換し、 Sheet3のような結果を得たいのです。 近似値もできるみたいなのでVLOOKUPを使おうと 思ったのですが、「含む」は論理値でどう指定すればいいか 分からず困っています。 そもそもVLOOKUPでできるかも疑問ですし... 教えてください、よろしくお願いします。 Sheet1 A列     B列         12345    りんご、みかん、イチゴ 67891    いんげん 23456    チョコ、あめ 67890    みかん、りんご 56789    あめ Sheet2 A列     B列 りんご    くだもの みかん    くだもの いちご    くだもの いんげん   野菜 チョコ    おかし あめ     おかし Sheet3 A列     B列         12345    くだもの 67891    野菜 23456    おかし 67890    くだもの 56789    おかし

  • セルに埋め込まれた文字列を式として利用したい

    品名      |ランク ------------|----------- みかん     |A いちご     |B みかん     |A みかん     |B りんご     |A りんご     |B いちご     |B りんご     |B 品名選択: -------------------- |全て選択     |▼| ←A15セル -------------------- |いちご       | |みかん       | |りんご       | |いちご&みかん   | ---------------------- 上記のようなExcelの表があります。 表の下には品名選択のコンボボックスが用意されています。 品名選択で選択されたもので、ランクがAのものを数えたいと思っていますが、 品名選択の方法が複雑なため、SUMPRODUCTで表すと式がとても長くなってしまいます。 =SUMPRODUCT((B2:B9="A")*((A15<>"全て選択")*(A15<>"いちご&みかん")*(A2:A9=A15)+(A15="全て選択")+((A15="いちご&みかん")*((A2:A9="いちご")+(A2:A9="みかん"))))) 式をもう少し簡潔にしたいと思い、以下のように品名が選択された時に隣のセル(B15)に式を表示するようにし、 -------------------- |全て選択     |▼| (A15="全て選択") -------------------- |いちご       | (A2:A9=A15) |みかん       | (A2:A9=A15) |りんご       | (A2:A9=A15) |いちご&みかん   | ((A2:A9="いちご")+(A2:A9="みかん")) ---------------------- =SUMPRODUCT((B2:B9="A")*(B15))としてみたのですが「#VALUE」となってしまい計算されません。 (=SUMPRODUCT((B2:B9="A")*INDIRECT(B15))も試してみたのですが、出来ませんでした…うーん??) コンボの隣にセットした文字列を数式の一部として使用する事は出来るのでしょうか? 出来る場合、方法を教えて下さい。 よろしくお願いします。

  • チェックボックス(複数選択可)の値をPOST送信し、

    果物テーブルの中身を入力フォームにて、チェックボックスにより選択 得られた果物コードをSELECT文により、果物名に変換して表示 保存時は好きな果物1、好きな果物2、好きな果物3、、カラムにコードを保存。 例)あなたの好きな果物は? りんご  みかん  いちご  メロン (チェックボックスにより選択) 果物テーブル: 1 りんご 2 みかん 3 いちご 4 メロン 入力フォームよりPOSTにて選択された果物のコードを送信 入力確認画面にて得られたコードより果物名に変換 選択されたコードを保存 上記のようなイメージです。 例えば、りんご、みかん、いちごを選択された場合、(1,2,3)が得られ、これを分解してSELECTする方法が分かりません。 すなわち配列の操作になるかと思われます。 (1,2,3)コードは取得出来ています。 以上、ご教授頂けたら助かります。

    • ベストアンサー
    • PHP
  • アクセス コンボボックスのリストの条件を指定する

    コンボボックスで表示されるリストを条件に応じて色々に変更できますか? テーブル1 ID 種類   品名 1 やさい  白菜 2 やさい  にんじん 3 くだもの りんご 4 くだもの みかん フォーム1 種類 やさい 品名 ___ コンボボックスリスト        白菜        にんじん 現在は、コンボボックスのリスト(値集合ソース)を テーブル1に指定しておりますので、4個全部表示されてしまいますが、 これを、上で入力した「やさい」を参考にして 「やさい」に該当する「白菜」と「にんじん」しか表示されないようにしたいのです。 よろしくお願いいたします。

  • アクセス テーブル ルックアップ について

    アクセスです。[売り上げ] というテーブルで、フィールド [年月日] [果物] [個数] があって、[果物] の入力時に マスタテーブル [M果物] を ルックアップ 、 コンボボックス で選択するようにしています。すでにデータ入力してあります。ところが、[M果物] には、リンゴ、ミカン、メロン・・・・・などたくさんあるので、探して選択するのに不便になってきました。そこで、[果物]入力時に、よく売れる個数順に果物を並べ替えて、ルックアップ、コンボボックスに表示して入力を便利にしたいのですが、どのようにしたらよいのでしょうか?宜しくお願い致します。

  • Accessの入力フォームで

    Accessの入力フォームを作っています。 項目に大分類と小分類があります。 たとえば大分類が1から5まであり 1にはAからEまでの小分類があります。 2にはFからJ 3にはKからO というように 大分類のフォームはコンボボックスで 1から3までの選択項目があり 大分類の1をコンボボックスで選んだら AからEまでの選択項目が次のフォームに表示され 2を選んだら FからJが表示されるようにしたいのですが 条件付き書式などで できるのでしょうか? 説明不足ですみません。 初心者なので、わかりやすく説明してもらえると とても助かります。

  • エクセル オートフィルター

    オートフィルターについて教えて下さい。 同じシート内で、独立した複数のオートフィルターを用いることは出来ますか。下に示すような場合にAとB列に独立してオートフィルターを設定して、果物を抽出して、CとD列には野菜だけを抽出する。みたいなイメージです。オートフィルターやマクロを用いないやり方で他のやり方でもできる場合は教えて下さい。    A    B      C    D 1  りんご 果物   りんご  果物 2 キャベツ 野菜  キャベツ  野菜 3  イチゴ 果物   イチゴ  果物

  • ドロップダウンリストを二つ作る

         A     B 1  果物    りんご 2  野菜   トマト という表があったとします。 A に リストで果物か野菜を選択できるような式を入れ 果物を選択すると、Bはりんごかみかんを選択できるような式を入れたいです。 正し、上記の表は、シート1 選択するためのリストの一覧はシート2に表示させるものとします。 いろいろ調べましたがどうやってもできませんでした。 やり方教えてください。 エクセル2010使用です。

専門家に質問してみよう