アプリ版:「スタンプのみでお礼する」機能のリリースについて

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つのフォームで事足りればありがたいのですが・・・

A 回答 (1件)

> 「社名」フィールドの「更新後処理」で


>
> Private Sub 社名_AfterUpdate()
>     Me!担当者.Requery
> End Sub
>
> を設定しました。

フォームの「レコード移動時」にも
同じ処理をしましょう。

Private Sub Form_Current()
    Me!担当者.Requery
End Sub
    • good
    • 0
この回答へのお礼

bonaronさん、回答有難うございます。
アドバイス頂いた通りに記述を加えたら出来ました!

AccessのVBAは「言われてみればその通り」の事が沢山あるのですが、実際にヒント無しで記述するとなるとなかなか出来ない事が多くて勉強になります。

昨日一日中悩んでいたことがすっきり解決できて感激です。有難うございました!

お礼日時:2011/01/14 09:08

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