• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DLookup関数を使ってサブフォームにデータを参照させたい)

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

このQ&Aのポイント
  • ACCESS2003でのアンケートフォーム作成中に、DLookup関数を使ってサブフォームにデータを表示させたい方法を教えてください。
  • 質問入力フォームの社員IDに入力した値を使って、サブフォームに該当する社員情報(所属、性別など)を表示したいです。
  • 社員IDは数値型で、他の情報はテキスト型です。DLookup関数を使った式を組み立てる方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.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を設定しているとフィルターが効きません。 質問テーブルの他のフィールドがどのような 役目をするのか何も記述されていないので、 それらについては何もしていません。

mercury110
質問者

お礼

親切にご教授いただきましてありがとうございます。 DLookupにこだわらずに・・・やってみました。 お教えいただいた方法ではうまくいかなかった(何が良くなかったのかわかりません、入力で失敗かもしれません。)のですが、 あらかじめサブフォームになるものを作成し、 サブフォームの埋め込みウィザードで、 「既存のフォームを利用する」とし、 「社員IDでリンクする」 ようにしましたら、何とか成功しました。 たまたまいろいろ触っていての偶然の産物なのですが、この方法で問題なく動作するようなので、 まずは良しとしたいと思います。 DLookupやVB(?)、コードの入力方法についてなどまだまだ勉強しなければならないなぁと つくづく感じました。 ありがとうございました。

mercury110
質問者

補足

ありがとうございます。 DLookupでなくてもできるんですね・・・ 前任はDLookupで作っていたようなので コントロールソースに式を入れるのかと・・・ 勉強します 教えていたがいていることにチャレンジしてみます。

関連するQ&A