• 締切済み

コンボボックスの連動

ACCESS2000を使用しています。フォーム上のconboボックスに関する操作でわからないことがあるので宜しくお願いします。 http://www.accessclub.jp/samplefile/samplefile_192.htm 上記リンクを見て、コンボボックスの連動をやろうとしています。 ある程度できたのですが、問題があるので教えてください。 学年テーブル ID 学年 0  小学 1  中学 2  高校 料金テーブル ID 受講料 0  1000 1 2000 2 3000 というテーブルを作りました。 コンボボックスも2つあります。 conbo1←値集合ソースに学年テーブル conbo2←   〃   料金テーブル テーブル間でIDがイコールなものをセットする方法を知りたいです。 コードでは Me!conbo2.RowSource = "SELECT 料金テーブル.受講料 FROM 料金テーブル WHERE (((料金テーブル.ID)=[Forms]![受講料フォーム]![学年]));" DoCmd.Requery "conbo2" DoCmd.GoToControl "conbo2" End Sub と記述しました。 結果、conbo2には、 値がセットされることはされるのですが、それをわざわざ選択しないとセットされません。 これをconbo1を選んだら自動的にIDが一致するものをセットするにはどうしたらよいのでしょうか?

みんなの回答

  • palmmy
  • ベストアンサー率38% (841/2170)
回答No.2

>こういうことをやっても意味ない? テーブルが1対1だとあまり意味が無いかもです。 1回で選ぶと値が多すぎるときに使うと効果的だと思います。 #1さんのように住所とか。 車のメーカーを1で選んで、連動した2で車種を選ぶとか。

ma_trix
質問者

お礼

回答ありがとうございます。 一応、1対多なんですけど、そうだとすれば意味あるんですかね?やっぱりひとつのテーブルにまとめてしまったほうがよいんでしょうか? 料金テーブルは可変のため料金テーブルを作りました。 ちなみに料金といっても基本料金で、総額ではありませんです。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

正面からの回答でなくて済みません。 コンボの2つを連動させるケースとは、コンボ1で都道府県を指定し、その府県の市区町村をコンボ2で選択させると言う使い方が、普通ではないのでしょうか。 ・翻って本件では、小中高を選ぶと授業料が決まって仕舞うケースで、コンボ2を作って選ばせる意味がないような気がする。 敢えて例をつくるなら、 小中高 コード 内容 金額 1 1 普通科受講料 20000 1 2 特別科受講料 30000 2 1 普通科受講料 30000 2 2 特別科受講料 40000 3 1 国大科受講料 50000 3 2 私大科受講料 55000 のようなケースではないですか。   

ma_trix
質問者

お礼

え!そうなんですか。テーブル設計とかめちゃくちゃなのでそうかも知れません。こういうことをやっても意味ない?回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • コンボボックスの抽出条件のLikeについて

    フォーム内のコンボボックス処理について 現在ACCESS2002でDBを構築しております。 初心者です。 フォーム内でテキストボックスから値【a】をもらい、その【a】を抽出条件として抽出結果を コンボボックスに表示したいと考えております。 ※like関数を使用 Private Sub テキスト1_AfterUpdate() DoCmd.Requery "コンボ1" Me!テキスト1.Requery End Sub コンボボックスの値集合ソースの抽出条件で ((テーブル.カラム) like "'*" & Forms!フォーム!テキスト1 & "*'") 上記で指定したのですが、何も抽出されません。 イコールで下記を実行すると値は抽出されます。 ((テーブル.カラム) = Forms!フォーム!テキスト1 ) LIKE関数の使い方が悪いのでしょうか。 お手数ですが、ご教授願います。

  • コンボボックスの更新

    アクセス2000を使用しています. 業務名というコンボボックスがあるサブフォームをいくつかのフォームで表示しています。 コンボボックスの内容を編集したり追加、削除も出来るように業務名一覧というフォームを作成して、閉じるボタンをクリックした時のイベントで更新をする作業をしたいのですが、 Private Sub cmd閉じる_Click() DoCmd.Close Forms!F業務名一覧.Requery で更新するという所までは分かるのですが、 Forms!フォーム名.サブフォーム名.コンボボックス名.Requery とすると、開いていないフォームがあるためにエラーになってしまいます。 なにか良い方法があれば教えて下さい.

  • 【Access】サブフォームのコンボボックス連携

    ACCESSで社員の資格情報を入力するシステムを作成したのですが 以下の問題を解決できず困っています。 どうすればいいか お力を貸して頂けないでしょうか? ■問題:メインフォームで別レコードに移動した際 サブフォーム内の連携コンボボックスを更新されない □コンボボックス2の表示項目 1.分類別No 2.資格名ID 3.資格名 3のみを表示していますが、 1つ目のコンボボックス1の数値で 全コンボボックス2の資格名が出てしまいます。 ■フォーム構成 メインフォーム内に以下を設置 1.移動ボタン 2.帳簿サブフォーム □サブフォーム構成 レコード1 コンボボックス1 コンボボックス2 レコード2 コンボボックス1 コンボボックス2 ~~ 最終レコード コンボボックス1 コンボボックス2 ■コントロールソース コンボボックス1:大分類ID コンボボックス2:資格名ID ■テーブル構成 資格名  資格名ID(主キー)  大分類ID  分類別ナンバー(大分類ごとの登録順ナンバー)  資格名   資格大分類  大分類ID(主キー  大分類名 (IT系・運転系など) ■コンボボックス2の値集合ソース(表示項目:資格名) SELECT 資格名.資格名, 資格名.分類別No, 資格名.資格名ID FROM 資格大分類 INNER JOIN 資格名 ON 資格大分類.資格大分類ID = 資格名.資格大分類ID WHERE (((資格名.資格大分類ID)=[Forms]![メインフォーム]![サブフォーム]![コンボボックス1])) ORDER BY 資格名.分類別No; ------------------------------------ サブフォームに記載し効果のなかったVBAコード ’再クエリ Private Sub Form_Current() Dim cntrl As Control If Not IsNull(Me![コンボボックス1]) Then For Each cntrl In Form.Controls If cntrl.ControlType = acComboBox Then cntrl.Requery End If Next cntrl End If End Sub ’ソース更新 Private Sub Form_Current() With Forms!メインフォーム名!サブフォーム名!コンボボックス2 .RowSource = .RowSource End With End Sub ■参考サイト 'サブフォーム内での2つのコンボボックスの連動について 'http://goo.gl/nfvxW '~ '>   コンボボックスAの更新後処理イベントに '> Me!コンボボックスB.Requery '> 'Me.コンボボックスB.RowSource = Me.コンボボックスB.RowSource '数値でコンボボックス選択 'http://goo.gl/ovZ3C 'リストボックスの行を選択するときは、「Selected(n)」を使います 'http://goo.gl/RbsWX 'サブフォームの指定 ' =Forms!フォーム名!サブフォームコントロール名.Form.テキストボックス名 'http://goo.gl/vKxtj

  • フォームのコンボボックスのチェンジイベントがエラー

    フォームのコンボボックスのチェンジイベントがエラーになってしまいます フォームのコンボボックスで値が変更するたびに コンボックスのリストを絞り込むようにしたいので フィールド1 1111 1112 1113 1211 1212 フォーム1を作成しコンボボックスを設置し 値集合ソースを SELECT テーブル1.フィールド1 FROM テーブル1 WHERE (((テーブル1.フィールド1) Like "*" & [テーブル1]![フィールド1] & "*")); として コンボボックスの変更時イベントに Private Sub コンボ0_Change() Form_フォーム1.コンボ0.Requery End Sub としました。 そしてこのコンボボックスに 「2」というように値を入力すると 「実行時エラー '2118' "Requery/再クエリ"アクションを実行する前に、カレンとフィールドを保存する必要があります。」 となってしまいます。 やりたいことは コンボボックスに「2」を入力すれば テーブル1の「2」が含まれるものが抽出され 1112 1211 1212 がコンボボックスの ▼マークをクリックした後のリストに表示されるようにしたいのですが どうすればいいでしょうか? よろしくお願いします。

  • サブフォームでのテキストとコンボ連動について

    ACCESS2002でDBを構築している初心者です。 メインフォームに2つのサブフォーム(サブ1、サブ2)埋め込みを サブフォーム同士を連動させたフォームを作成中です。 2つのサブフォームのうちのサブ1にテキストボックスを基に コンボボックスでSQLを実行して抽出結果を コンボボックスに表示させています。 下記でaの値が変更されるとbにその値を送っています。 Private Sub a_AfterUpdate() DoCmd.Requery "b" Me!a.Requery End Sub その後bの値集合ソースでSQLを実行しております。 SQLの抽出条件「forms!サブ1!a」として、上記で取得した テキストボックスaを使用しております。 サブ1をメインフォームで開き上記を実行すると値を抽出します。 しかしサブフォームで実行した際に、「パラメータの入力」が 出てきて手動で入力しなくてはいけません。 サブフォーム上で実行する際に、イベントプロシージャや SQLの抽出条件を更新しなくてはならないのでしょうか。 お手数おかけいたしますが、ご教授よろしくお願いいたします。

  • コンボボックスについて

    Access初心者です。 コンボボックスの一行目にハイフン、もしくは 何も値の入っていない行を表示させたいと思っています。 今は下のようなかたちで値をセットしているのですが、 どうやればできるのか良い方法が思いつきません。 Me!コンボボックス名.RowSource = "SQL文" こういう形式を使うのは無理なのでしょうか? すみませんがよろしくお願いします。 (Windows2000 & Access2000です。)

  • Access コンボボックスの絞り込み後の表示

    Access2002を使用しております。 コンボボックスAに連動したデータを絞り込みさせるコンボボックスBがありますが、一旦入力後は、コンボボックスAの値にかかわらずコンボボックスBに入力したデータを表示させるにはどうしたらよいでしょうか? 例として、次の3つのテーブルを基にデータベースを作成しております: メインテーブル フィールド名: ID 社名 担当者 社名テーブル ID   社名   住所 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    A社 2    B社  担当者テーブル ID   社名ID   担当者名  電話番号 etc... ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1    1      木村 2    2      佐藤 3    1      田中 4    2      斎藤 メインテーブルを基にしてフォームを作成し、 「メイン」というフォーム名にして 「社名」「担当者」をフィールドのコントロールをコンボボックスに変更しました。 「社名」フィールドの値集合ソースを「社名テーブル」から引き出し SELECT [社名テーブル].ID, [社名テーブル].社名 FROM 社名テーブル; 列数2  で設定し、社名をコンボボックスで選択できるようにしました。 そして 「担当者」フィールドの値集合ソースを「担当者テーブル」から引き出し SELECT 担当者テーブル.ID, 担当者テーブル.担当者名, 担当者テーブル.社名 FROM 担当者テーブル WHERE (((担当者テーブル.社名)=forms!メイン.社名)); で設定しました。 「社名」フィールドの「更新後処理」で Private Sub 社名_AfterUpdate()     Me!担当者.Requery End Sub を設定しました。 「メイン」フォームをフォームビューで開き、「社名」コンボボックスで「A社」を選択すると 「担当者」コンボボックスで「木村」と「田中」が表示されるので、「木村」を選択します。 次のレコードに移り、「社名」コンボボックスで「B社」を選択すると 「担当者」コンボボックスで「佐藤」「斎藤」が表示されるので、「佐藤」を選択します。 さて、「佐藤」を入力した時点で、前のレコード(「A社」「木村」を選択)に戻ると 「担当者」欄が空欄で表示されます。 メインテーブルには全てデータは入力されています。 データ入力時は「担当者」コンボボックスは「社名」コンボボックスで選択した値に連動させたいのですが、 このようにデータ入力済みの場合は 最初のコンボボックスの値にかかわらず(この場合は直近に選択した社名がA社・B社のいずれかであろうとも) 入力済みのデータ(「木村」「佐藤」)がフォームに表示されるようにしたいのですが 何か良い方法はないでしょうか? 出来れば入力専用と読み取り専用のフォームを2つ使用するのではなく、1つのフォームで事足りればありがたいのですが・・・

  • コンボボックスの値が消えてしまいます。

    コンボボックスの値が消えてしまいます。 フォーム(1)にコンボボックスA(値集合ソースはテーブル1)があります、この リスト外入力時で別フォーム(2)(レコード追加用)を開きテーブル1にレコードを追加、 フォーム(2)を閉じる時にコンボボックスAをリクエリかけてフォーム(1)に戻るとコンボボックスAが空になっているのでリストを開き選択し直さなければいけません! フォーム(1)に戻った時コンボボックスAに入力した値を選択させておくにはどの様にすれば良いか アドバイスよろしくお願いいたします。 WIN XP ACCESS 2003で作成しています。

  • コンボボックスで違うフィールドを表示

    アクセス2000を使用しています。 コンボボックスの値集合ソースにテーブル/クエリを指定し、料金テーブルを指定しています。 <料金テーブル>にはフィールドが2つあります。 ID 料金 1 1000 2 2000 3 3000 という具合ですが、便利上つけていますが、IDはコンボボックスに表示したくありません。 1000、2000、3000というのだけ選択できるようにするにはどうしたらよいのでしょうか? 連結列でできたような気がしたのですが、どう試してもできませんでした。

  • VBでコンボボックスとテキストボックスの連係

    VBでフォームにデータコンボボックスとテキストボックスを一つづつ作り、データコンボボックスで値を選択し、その値に対する値をテキストボックスに表示させたいんですがどうすればいいでしょうか? データコンボボックスで選択する元になるテーブルは ID | 商品 1 | みかん 2 | ばなな 3 | りんご と、上記のような形のテーブルをもちいています。 例えばデータコンボボックスで「1」を選択した場合テキストボックスに「みかん」と表示させたいです。

専門家に質問してみよう