dポイントプレゼントキャンペーン実施中!

DLookup関数を使ってサブフォームにデータを参照させたい

いつも大変お世話になっております。
ACCESS2003使用中の初心者です。

現在アンケートフォームを作成中なのですが、
コンボボックス(?でしょうか?)に社員IDを入力すると、
サブフォームに社員情報(所属、性別など)を表示できるようにしたいと思っております。

現在、質問表テーブル
   社員情報テーブル(各テーブルはリレーションされてます)
   
   質問入力フォーム
   社員情報サブフォーム
があります。

質問入力フォームの社員IDの欄にIDを入力するとサブフォームに表示されるようにしたいのですが、
DLookup関数を使うことはわかったのですが、どのように式を組み立てて良いのかがわかりません。
順番や""の使い方に悩みます。

補足情報として、社員IDは数値型、他はテキスト型の設定になっています。

申し訳ありませんが、ご教授ください。

   

A 回答 (1件)

サブフォームは単票形式のようですが。


とくにDLookup関数を使わなければ、
ということはないので以下のような
方法でどうですか。

サブフォームを表示するメインフォームの
コントロール名を「ctlサブフォーム」とします。
初期値は埋め込み0というような名前がつけられています。
サブフォームそのものの名前ではありません。
もし、サブフォームと同じ名前にしているならば
名前を変更してください。

メインフォームに張り付けたコンボボックスの
名前を「cmb選択」とします。

コンボボックスの値集合ソースに、

SELECT 質問表テーブル.ID
FROM 質問表テーブル;

を張り付けます。

そのコンボボックスの更新後処理のコードで
以下のようにします。

Private Sub cmb選択_AfterUpdate()
Me!ctlサブフォーム.Form.Filter = "ID=" & Me!cmb選択
Me!ctlサブフォーム.Form.FilterOn = True
End Sub

コントロール名を変えていなければ以下のような感じです。

Private Sub cmb選択_AfterUpdate()
Me!埋め込み0.Form.Filter = "ID=" & Me!cmb選択
Me!埋め込み0.Form.FilterOn = True
End Sub

このとき、「ctlサブフォーム」のプロパティで
リンク子フィールド、リンク親フィールドに
IDを設定しているとフィルターが効きません。

質問テーブルの他のフィールドがどのような
役目をするのか何も記述されていないので、
それらについては何もしていません。

この回答への補足

ありがとうございます。

DLookupでなくてもできるんですね・・・
前任はDLookupで作っていたようなので
コントロールソースに式を入れるのかと・・・ 勉強します

教えていたがいていることにチャレンジしてみます。

補足日時:2010/08/18 09:30
    • good
    • 0
この回答へのお礼

親切にご教授いただきましてありがとうございます。
DLookupにこだわらずに・・・やってみました。

お教えいただいた方法ではうまくいかなかった(何が良くなかったのかわかりません、入力で失敗かもしれません。)のですが、
あらかじめサブフォームになるものを作成し、
サブフォームの埋め込みウィザードで、
「既存のフォームを利用する」とし、
「社員IDでリンクする」
ようにしましたら、何とか成功しました。

たまたまいろいろ触っていての偶然の産物なのですが、この方法で問題なく動作するようなので、
まずは良しとしたいと思います。

DLookupやVB(?)、コードの入力方法についてなどまだまだ勉強しなければならないなぁと
つくづく感じました。

ありがとうございました。

お礼日時:2010/08/18 16:24

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

このQ&Aを見た人はこんなQ&Aも見ています