プロが教えるわが家の防犯対策術!

アクセス初心者です。よろしくお願いします。
【やりたいこと:次のような大項目→中項目への絞りこみ入力】
フォームの入力で、大項目をリストで選ぶと、次に小項目のリストが自動で出て入力できるようにしたい。

◆まず、テーブルで「大項目コード」表があります。
  1  A
  2  B
  3  …
◆別のテーブルで、
「Aの小項目」表
 11  ○ 
 12  × 
 13  △  
 
「Bの小項目」表
 21  ●
 23  ■
 24  ▲
というようなものがあります。

そこで、フォームで「大項目」フィールドに「1」(=A)を入力すると「小項目」フィールドに自動でコンボボックスのようなもので「○、×、△」がリストが出てコード番号(11,12,13)が入力できる、同様に「大項目」に「2」(=B)と入力するとリスト「●、■、▲」で選んで入力したいのです。

私が初心者であることから、上記のようなアクセス構築の考え方そのものも邪道なものかどうか、不安があります。
要は、【大項目→中項目への絞りこみ入力】ができればいいのです。できますなら、できるだけシンプルな方法を教えてくだされば幸いです。
よろしくお願いいたします。

A 回答 (5件)

コンボボックスのプロパティは大体このままで大丈夫であると思います。



me.コンボ2.requeryについては

2番目のコンボボックスのプロパティのイベントのタブの変更時のところに何か今入っていたらそれを選んで消してください。 そのあとフォーカスを変更時に充てると、▼と・・・という四角が出てきますので、・・・のほうを選択して「コードビルダ」を選んでください。
そうすると
Private Sub コンボ1_Change()

End Sub

と出てきますので、その間に
Private Sub コンボ1_Change()
me.コンボ2.requery
End Sub

と書いて画面を閉じていただければ大丈夫です。

最初のコンボボックスの名前= コンボ1
2番目のコンボボックスの名前= コンボ2

それで試してみてください。 
説明が下手で申し訳ありません。
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。ありがとうございます。
できました、できました^^/ 完璧です!
何度もご指導くださいまして、心よりありがとうございます。

お礼日時:2006/01/27 10:14

すみません、肝心なことを忘れていました。



フォームの最初のコンボボックスの変更時のイベントに

me.コンボ2.requery

と書いておいてください。 これは最初のコンボボックスの値が変更されたときに2番目のコンボボックスのリストを読み直すためにひつようでした。

申し訳ありませんでした。

この回答への補足

ありがとうございます。もう一息のような気がしてきました^^。尚、引き続きご指導ください。

>プロパティのデータのタブで
>(1)データの値集合ソースが作成したクエリになっていること。
⇒「SELECT 中項目クエリ.中項目id, 中項目クエリ.中項目 FROM 中項目クエリ; 」私には表示内容がよく理解できません^^;

>(2)列連結が中分類のIDが入っている列を指定していること。
⇒「1」となっています。これも私には理解できません。「列連結=1」とは?左から一番目という意味ならOKです。

★>フォームの最初のコンボボックスの変更時のイベントに me.コンボ2.requery・・・
⇒実行時にエラーが出てしまいます^^;助けてください。

【エラーメッセージ内容】
「’me’マクロを見つけることができません。
マクロ(またはマクログループ)が存在しないか、新規マクロが保存されていません。”マクログループ名.マクロ”という構文でマクロ名を指定するときは、既存のマクログループ名を指定する必要があります。」

以上、よろしくお願いいたします。

補足日時:2006/01/26 16:04
    • good
    • 0

今ちょっと作ってみましたが、私のアクセスではコントロールウイザードがちゃんと動きませんでした。

 それはともかくとして、

2番目に作ったコンボボックスで以下のことを確認してください。
プロパティのデータのタブで
(1)データの値集合ソースが作成したクエリになっていること。
(2)列連結が中分類のIDが入っている列を指定していること。
プロパティの書式のタブで
(1)列数がクエリで選んだ列数あること
(2)列幅が上記列数文確保されていること
(これは最初のコンボボックスを見ると分かりますが、1cm,2.5cm,3cm のように設定します。)

これをやってみてだめだったら、またご連絡ください。
    • good
    • 0

テーブルとして


マスタをいれる[大項目]
マスタをいれる[中項目]
データをいれる[データ] (仮に[データ]と名前を付けました。)
みたいなものがありますでしょうか?
このテーブル[データ]の項目の一つに中項目のIDを入れるフィールドを用意しておきます。

フォームを作る際は、レコードソースとしてこの[データ]テーブルを指定します。
フォーム上にまずコンボボックスを一つ配置し、大項目テーブルのレコードを表示させ、選択できるようにします。 選んだ値はあとで使用するにしておいても大丈夫ですし、[データ]テーブルに格納しても大丈夫です。

この段階で[中項目]テーブルのクエリをつくり、抽出条件にフォームの先ほどのコンボボックスの値を指定します。 フォームを実行させて、大項目を選択した後にこのクエリを実行させたときの動きを確認しておいてください。 

コンボボックスにテーブル/クエリの値を表示させるためには、コントロールウィザードを使うのが楽ですのでその方法を説明します。

「テーブル/クエリの値を表示する」を選択する。
該当するクエリを選ぶ。
フィールドを選択する。
「次のフィールドに保存する」を選び、保存するフィールドを選ぶ。

これでできると思いますが、分かりにくい分で申し訳ありません。 理解できない部分はまた補足していただけたらできる限り説明いたします。 

この回答への補足

お世話になります。何度も感謝申し上げます。
きっとお忙しい中のご回答を申し訳ありません。

以下、私の理解不足ならすみません。
ご指導にヒントをいただいて、「中項目」のテーブルをひとつのテーブルにまとめ、クエリにしました。

>この段階で[中項目]テーブルのクエリをつくり、
抽出条件にフォームの先ほどのコンボボックスの値を指定します。
◆これは、「中項目クエリ」の大項目の抽出条件のところに【[Forms]![データ]![大項目id]】と入力するといいよってことなのでしょうか?
◆とりあえずやってみて、ここまではうまくできました。フォームの選んだ大項目の中の中項目がクエリで表示できます。
◆そのあとの作業がうまくできません。フォーム「データ」の中で大項目を選んでも中項目のコンボボックスの設定がうまくできません。

ただただ私の不勉強と理解不足のためでしょうが、尚、ご指導いただけますでしょうか?よろしくお願い申し上げます。

補足日時:2006/01/26 13:42
    • good
    • 0

中(小)項目のテーブルにどこの大項目に所属するのかというデータを入れておくと処理が簡単になります。

 

中項目のテーブルのクエリを作成し、フォーム上の大項目をいれた場所をクエリの抽出条件にいれれば、対象の中項目だけを選び出すクエリができます。

このクエリをフォーム上の中項目を選ぶコンボボックスのレコードソースとすればよいと思います。

この回答への補足

私の質問の表現ミス
中項目と小項目を統一させず、混在させて失礼しました。
ご理解通り中(小)項目です。


ご指導内容、もう少し考えて理解を深めて御礼申し上げようと思っていたのですが、あと一歩です。もう少し突っ込んだご説明をいただけますでしょうか?クエリは大筋わかります。フォームへ持って生き方のイメージ?がわかりません。よろしくお願いいたします。

補足日時:2006/01/25 23:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!