• 締切済み

アクセスのフォーム作成について

例えば、商品区分A、B、Cがあり、商品区分Aは商品a,b,c Bはd,e,f Cはh,i,jがあるとします。フォームを作成するときに商品区分Aを入力したら商品名のリストボックスにはa,b,cしか表示されないようにするためには、商品テーブルを商品区分A,B,C分と3つ作っておく以外方法はありませんか? うまく質問できませんが、お願い致します。

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

受注フォームのテキストボックスをText商品区分、コンボボックスをCmb商品名とします。 Cmb商品名の値集合ソースにSQLスタートメントで SELECT 商品テーブル.商品名 FROM 商品テーブル WHERE (((商品テーブル.商品区分)=[Forms]![受注フォーム]![商品区分])); と記述します。 Text商品区分の更新後処理に Private Sub Text商品区分_AfterUpdate() Me!Cmb商品名.Requery End Sub と記述します。 これで受注フォームのText商品区分に入力された区分によりCmb商品名の表示が商品区分により変わります。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

文章で説明すると長く、難しいですね。 丁寧に書いたつもりですのでよろしく。 1.テーブルの作成 商品テーブル ID 商品 商品区分 1 a A 2 b A 3 c A 4 d B 5 e B 6 f B 7 g C とします。 商品区分がAAA、BBBと集まっている必要はありません。 2.クエリの作成 クエリ 新規作成 選択クエリウイザード OK テーブル/クエリに「商品」テーブルを選択 商品・商品区分のフィールドを選択 次へ クエリ名を「商品クエリ1」とする 「クエリのデザインを編集する」をチェックON 完了 表示 「SQLビュー」で下記が出る。 SELECT 商品.商品, 商品.商品区分 FROM 商品; それを SELECT DISTINCT 商品.商品区分 FROM 商品; に改める。DISTINCTがポイント。 実行(!)するとクエリの結果はA,B、Cが出るはず。 3.フォームの作成 (1)フォームにコンボボックスを2つ貼り付ける。 コンボ0とコンボ4となったとする。 (2)1つ目のコンボの「プロパティ」の「値集合ソース」に「商品クエリ1」を指定する。 これでコンボの▼をクリックするとA,B,Cが出るはず。 また1つめのコンボの「プロパティ」ウインドウの「更新後処理」(イベント) にマクロ(「マクロ1」という名になったとする)を設定し「再クエリ」を選び、対象コントロールを 「コンボ4」(2つめのコンボ)を設定する。 1つめのコンボの選択が変わると2つめのコンボのクエリをやり直すようにするもの。 (3)2つめのコンボの「値集合ソース」に SELECT 商品.商品 FROM 商品 WHERE 商品.商品区分=[コンボ0]; を設定する。 クエリにして、名前をつけて指定することもできる。 (下記3の名前) 3.クエリの作成 同じく商品テーブルから選択クエリを作成し 商品区分の抽出条件に[コンボ0]を指定し、商品区分は表示しないにする。 ’----- これで1つ目のコンボを、Aを選ぶとa,b,c 2つめを選ぶとd,e,fが出るはず。 質問は2つめはリストボックスのようですが適当に修正してください

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>商品テーブルを商品区分A,B,C分と3つ作っておく・・ 分かりずらいのですが・・商品テーブルのフィールドとして商品区分A・商品区分B・商品区分Cを作るということなのでしょうか? 通常では商品テーブルの商品区分は1つで商品を登録する際にその商品区分にAかBかCを入力するようにするのですが。 フォームで表示するときに商品区分がAならその商品区分にAで登録されている商品a・b・cを抽出し表示するようにします。 質問の内容と違ったらゴメンなさい。

noname#112806
noname#112806
回答No.1

テーブル名「商品テーブル」 フィールド名「商品区分」、「商品名」 フォーム名「商品フォーム」 とします。 まずフォームにテキストボックス(商品区分)とリストボックス(商品名)を配置します。 リストボックスの値集合ソースに SELECT [商品名] FROM 商品テーブル WHERE 商品区分=[forms]!商品フォーム!商品区分; を入力します。 テキストボックスの更新後処理のイベントプロシージャに Me!商品名.Requery と入力すればできます。 説明が下手ですみません。

bw5275
質問者

補足

実際には商品フォームではなく、受注フォームです。受注内容を入力するときに、商品区分を入力すればその商品区分に属する商品名だけをコンボボックスに表示したいのです。tamackyさんの回答をもとに、 SELECT [商品名] FROM 商品テーブル WHERE 商品区分=[forms]!受注フォーム!商品区分; と内容を少し変えてしてみましたが、うまくいきません。原因が分かりますでしょうか?

関連するQ&A

  • ACCESSでの結合プロパティについて

    ACCESSでの結合プロパティは、3つあって、1つ目は2つのテーブルに共通するものだけを引っ張ってくる。 2つ目は片方の全部と、もう1方では、共通するものだけ。3つ目は、2つ目の逆。 両方のレコードを持ってくるということは出来ないのでしょうか? 例:「data」で結合して、表示は、今回厳密には定義しません。 テーブル1 ID data 1 a 2 b 3 c 4 d 5 e 6 f テーブルB ID data 4 d 5 e 6 f 7 g 8 h 9 I 10 j 結合プロパティ(1)では、 ID data 4 d 5 e 6 f 結合プロパティ(2)では、 ID data 1 a 2 b 3 c 4 d 5 e 6 f 結合プロパティ(3)では、 ID data 4 d 5 e 6 f 7 g 8 h 9 I 10 j となると思います。 今やりたいことは、全部持ってくることです。 ID data 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h 9 I 10 j よろしくお願い致します。

  • excel 関数作成の簡素化 ?

    A B C D E F G H I J 1784 1784 1781 1782 1809 1813 1821 1813 1784 1784 (1)A-B B-C C-D D-E E-F F-G G-H H-I I-J (1)0 3 -1 -27 -4 -8 8 29 0 (2)=SUMIF(A:I,">0",A:I) で 40になる 上記の(1)を使用せず (2)のように一気に出来ないか? もしも 表示が悪ければ 書き直し する為 回答不要

  • ACCESSのフォームとサブフォームについて

    いつもみなさんにはお世話になっております。 ACCESS2000を使用しています。 テーブルA,B,Cを用意しフォームにサブフォーム、リストボックス、ボタンを配置し、リストボックスの表示内容(A,B,C)に合わせてボタンクリックでサブフォームの表示テーブル(A,B,C)を変更したいのですがどうしたら良いのか解りません。 みなさんどうかよろしくお願いします。

  • diskpartのRAID10の作成について

    現在windows server 2008 standardでソフトウェアRAIDをdiskpartで組もうと思っているのですが 10個のハードディスクでRAID10を組めるのか知りたいです。 10個のHDDを順にA,B,C,D,E,F,G,H,I,Jとし A,B,C,D,EとF,G,H,I,Jをストライプボリュームで作成し その後、(A,B,C,D,E)と(F,G,H,I,J)でミラーボリュームを作成することは可能なのでしょうか。

  • アクセス フォームの設定

    テーブル【T-1】 フィールドA,主キー,数値型 フィールドB,テキスト型 フィールドC,テキスト型 フィールドD,テキスト型 フィールドE,テキスト型 フォーム【F-1】 テーブル【T-1】に入力用のフォーム,単票型 があります。 F-1でそれぞれのフィールドに対して入力スペースがあり(もちろんですが) A,B,C,D,Eと順番に入力していきます。 ここでエンターキーを押すと、次のレコードへ移るわけですが、 カーソルがEの位置にあるため、わざわざマウスでAの位置へ移動させないといけません。 同様に、入力項目がなく、A,B,Cと入力して次のレコードへ行くと、Cの位置にカーソルがあります。 これを、Aをホームポジションとして、次のレコードへ移ったときに 自動的にカーソルをAの位置にもってくるようにしたいのですが、 一体どうすればよろしいでしょうか?

  • Accessのフォーム その2

    すいません、以前にも同じ質問をしたのですが、私の質問の仕方が悪くてうまくいきませんでした。 回答してくださった方、ありがとうございました! もう一度、詳しく質問しなおします。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 しかし、選んだデータの[A]しかテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、[B]のコンボボックスから選択しようとしても空っぽです。 テーブルを見ると、[A]で選んだ[1010]だけが表示されています。 非連結のときはうまく出てたんですが・・。 もしかして連結列が間違ってるのでしょうか?? 元になるテーブルは Aコード A  Bコード B Aコード Cコード C Bコード Dコード D Cコード この2列目を表示したいのです。(2列目が[1010]など表示したいデータ) 列数はそれぞれ「2」で連結列は「2」です。 更新後処理は以下の通りです。 Private Sub コンボ0_AfterUpdate() Me!コンボ2.Requery End Sub Private Sub コンボ2_AfterUpdate() Me!コンボ4.Requery End Sub Private Sub コンボ4_AfterUpdate() Me!コンボ6.Requery End Sub ぜひよろしくお願いします。

  • ACCESS フォーム上での条件設定

    どなたかお知恵をお貸しください。 Access2000 検索用のフォームを作成しました。 A・B・C・D・E・Fというフィールドがあり、それらのフィールドを 含むデータ形式のフォームが作成されています。 やりたいことは、フォームにテキストボックスを5つ配置し それぞれ(A・B・C・D・E・Fというフィールドに対する)の条件 を入力して、実行(コマンドボタン)をクリックすると 条件に一致したフォームが表示されてくるようにしたいのです。 ただし、条件が入力されない場合もあります。 (5つのうち1つだけ条件が入る場合など) 初心者などでどのように設定すればいいのか分かりません。 どなたかお力をお貸しください。 よろしくお願いします。

  • 困ってます!Accessフォームのコンボボックス

    初心者です。とーっても困っています・・・。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 が、しかし、選んだデータがテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、テーブルを見ると、他のテキストボックスに入力した情報は保存されているけど、コンボで選んだデータは空白です。 誰か助けてください!!よろしくお願いします。

  • マクロ作成について

    今、時刻表と合致するセルに色を付けてソートするマクロを作っています。 次のようになっています。(停留所が3つの場合)   A  B  C   D   E   F   G   H   I   J   K   L  1 2 a  0  1059 1145 1858 3 b  1  1030 1100 1130 1146 1510 1859 4 c  2  1000 1031 1101 1131 1147 1412 1511 1900 5  A列のa、b、cはそれぞれバス停名です。C2~J4に書いてある数字はそれぞれのバス停の発車時刻になります。 また、B列の数字はバス停名aを起点としてb、cのバス停までの所要時間です。B列に関してはユーザーの方で入力。以上を踏まえまして、今回実装したいことは、 (1)C2から範囲選択をして色を付け、選択した範囲とB列に入力した数字を足して、それと合致したセルに色を付ける。   A  B  C   D   E   F   G   H   I   J   K   L  1 2 a  0  1059 1145 1858 3 b  1  1030 1100 1130 1146 1510 1859 4 c  2  1000 1031 1101 1131 1147 1412 1511 1900 5 これを行うとセルC2~E2とD3、F3、H3、E4、G4、J4には色が付くことになります。 (2)(1)で色の付いたセルのみをソート(色の付いていない部分は後ろのセルへ移動)   A  B  C   D   E   F   G   H   I   J   K   L  1 2 a  0  1059 1145 1858 3 b  1  1100 1146 1859 1030 1130 1859 4 c  2  1101 1147 1900 1000 1031 1131 1412 1511 5  以上になります。これを実装するためのコードを教えては頂けないでしょうか?よろしくお願いいたします。

  • Access vba 教えてください。 初心者です

    以下のような テーブルT_ソフトリスト、テーブルT_ソフト フォームF_入力 があったときに、フォームの使用者のコンボボックスに入力をしたときに、 T_ソフトから使用者を探して、ソフトリストIDを取得し、そのソフトリストIDを元にT_ソフトソフトのソフト名をフォームのコンボボックスに表示させるようにしたいのですが、 どの様なソースコードを書けばよいでしょうか? 「T_ソフトリスト」←テーブル ================================== ID  | ソフト名 | ────────────── 1   | A |  2  | B |  3  | C |  4  | D |  5  | E |  ================================== 「T_ソフト」←テーブル ================================== ID |ソフトリストID | 使用者 | ─────────────────── 1 |  4     | 佐藤  | 2 |  2     | 鈴木  | 3 |  5     | 斉藤  | 4 |  1     | 佐藤  | 5 |  3     | 田中  | ================================== 「F_入力」←フォーム ================================== 使用者  [コンボボックス]←Combo_UserType ソフト名 [コンボボックス]←Combo_User ==================================

専門家に質問してみよう