- 締切済み
Access2003 リレーションされたサブフォームの抽出
Access顧客情報のデータベースを正規化(VBA)している初心者です。リレーションされているテーブルを元にクエリ(3つのテーブルをつなげただけ)を作成しメインフォームにサブフォームを作りました。3つのテーブルは、1対多でリレーションされています。テーブルAのGR_IDやグループ名で検索しそれに紐づいているCOmpanyは抽出できるのですが、サブフォームのテーブルBのCOmpany nameから抽出することができません。メインフォームからオプションボタンを使用してメインとサブの両方のテーブルを検索したいので、子・親リンクの設定をはずせませんよね?以前の類似質問で「サブフォームのフィルターに入力し、フィルター実行でうまくいきました」とありましたが、具体的にどのように設定(マクロやVBA、再クエリ?)すればいいのかわからず悩んでいます。どうぞ初心者向きのアドバイスをよろしくお願いいたします。 テーブルA GR_ID グループ名 ※テーブルA(1):テーブルB(多) テーブルB GR_ID Company_ID Company name ※テーブルB(1):テーブルC(多) テーブルC Company_ID salesman
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- CHRONOS_0
- ベストアンサー率54% (457/838)
要するにメインとサブはリンクしていないのですね そうすると単に4つのフォームをVBAで連動させるだけのことでは >サブF1はメインFで選んだグループ内の1:多の多側のデータですが、 メインとサブはリンクしていないし、 抽出条件は非連結のテキストボックスに入れるんですよね レイアウトはメイン・サブでもリンクしていないのですから何の関係もありません >メインFの1側(:多)の違うグループも混ざっての抽出となりますので、 >そのようなことができるのでしょうか。 一覧からひとつ選んだもののグループを表示させればいいのでしょ もちろん可能です 抽出条件入力 ↓ F1-1表示 ↓ F1-1で1レコード選択 ↓ F1-2、F2、メイン表示
- CHRONOS_0
- ベストアンサー率54% (457/838)
メイン・サブにするのにテーブルを3つつなげたクエリは要らないと思うのですが メインのソース、サブのソースはどのようなものでしょう?
補足
説明不足ですみませんでした。 ■メインF:テーブルAは単票で表示 ■サブF1:テーブルBは表形式と単票(表形はテーブルBのCompany neme程度で、単票で詳細情報が見られるようにしています) ■サブF2:テーブルC&D(クエリ)はデータシート ※クエリは3つのテーブルをつなげただけと書きましたが、事実を忘れていました・・。[訂正]テーブルCのsalesman→salesman_IDで、テーブルDにsalesmanの名前があるので、ここでsalesman_IDをクエリでつなげ表示させてました。 今できていることは、メインFでtxt_検索(opt_検索キー有)からGR_IDかグループ名で検索をするとサブF1に紐付いているテーブルBのCompanynameの一覧が表示され、その一覧から目的のレコードをクリックすると同じサブF1上の単票に詳細が表示され、サブF2にCompanyについているテーブルC(&D)のsalesmanが表示されます(解決)。問題は同じメインF上のtxt_検索(opt_検索キー)を使ってテーブルBのCompanynameからあいまい検索しサブF2に一覧を抽出し、同じようにCompanynameをクリックすると、単票に詳細が表示され、そのGR情報がメインFに、salesman情報がサブF2でがみられるようにしたいのです。解決済みの方では、サブF1はメインFで選んだグループ内の1:多の多側のデータですが、問題の方は、メインFの1側(:多)の違うグループも混ざっての抽出となりますので、そのようなことができるのでしょうか。他のやり方をしたほうがいいのでしょうか。どうか良きアドバイスをよろしくお願いいたします。
お礼
連動の意味がわかりました! その方法でもう少しがんばってみます。 また、よろしくお願いいたします。
補足
子リンク/親リンクのことでしょうか? メインとサブはリンクしています。メインFのGR_IDとサブF1、サブF1のCompany_IDとサブF2です。リンクしているので、無理でしょうか?リンクさせないで、4つのフォームをVBAで連動させる方法だとできるようですが、LINK以外の「連動」?とはどのようにすればよいのでしょうか?何回もすみませんが、よろしくお願いいたします。