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

Accessで得意先一覧と商品一覧のテーブル・フォームを作成しており、それぞれのフォームに選択ボックスを設け、チェックを入れたものだけを抽出し、1つの得意先に対し、複数の商品の一覧を作成したい
と思っております。

現在あるテーブル・フォーム
■ 得意先コード 得意先名 担当者名

■ 商品コード 商品名 価格

依頼書(Excelにエクスポートし一覧化)となる為、得意先に対する商品は都度変わっていきます。


現在は、得意先をメインフォーム、商品をサブフォームとし、全てコンボボックスで得意先1つを選択後、複数の商品を選択することで、同じオートナンバーIDを取得、依頼用空テーブルをコントロールソースとし、得意先テーブル、商品テーブルを作成後、IDでクエリを作成し、一覧としています。
しかし、得意先は約1万件、商品も300商品ぐらいある為、コンボボックスで選択に時間がかかっております。
それを、元々ある各一覧フォームから、チェックで選択し、それを依頼用の一覧としたいのですがどのようにしたら良いでしょうか?
単票形式フォーム同士で、メイン・サブフォームとすることもできず、困っております。

フィールド 得意先  商品コード  商品名  価格
       得意先1  商品1     ・・・    ・・・
       得意先1  商品2     ・・・    ・・・
       得意先1  商品3     ・・・    ・・・

別システムに取り込む為、依頼用の形式は上記のように決まっております

各一覧から、チェックで選択後、チェック分のみを抽出し、同じIDを取得後、一覧化することは可能なのでしょうか?

お手数ですが、どなたかご教授願えませんでしょうか?

A 回答 (1件)

得意先件数が1万件、コンボボックスの対象としては多すぎますね。


事前に絞り込む必要があります。
得意先テーブルにフリガナ項目を追加して、これで絞り込んでは如何でしょうか
フリガナの桁数を2桁に限定すると 10000/(48×48)で 5件(平均)が
コンボボックスの対象になります。
コンボボックスのクエリーは添付のようになります。
※表示順の設定もお忘れなく

ただし絞り込み条件は依頼フォームを開く前に確定していなければならないので
メニューフォームを作成しこのフォーム上に振り仮名のテキストボックス配置し
依頼フォームにも振り仮名のテキストボックス配置しここに入力があると
入力内容をメニューフォームのそれにコピーし一旦閉じ、メニューフォームから開きます。
フォーム上でのコンボボックスの抽出条件は
「振り仮名」から「[forms]![メニュー]![振り仮名]」と変わります。

ややこしいですね、分って頂けるでしょうか

このような処理をするにはVBAが必要になります。

・メニューフォーム
Private Sub Form_Activate()
DoCmd.OpenForm "依頼"
End Sub

・依頼フォーム
Private Sub 振り仮名_AfterUpdate()
Forms!メニュー!振り仮名 = 振り仮名
DoCmd.Close
End Sub

以上我流です、もっと良い方法があると思いますが
「Accessでオートナンバーを別テーブル」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとうございます。組み合わせて表示させるやり方もあるんですね!
早速試してみます!

お礼日時:2012/08/27 19:30

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