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

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

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

DLookup関数を使ってサブフォームにデータを参照させたい いつも大変お世話になっております。 ACCESS2003使用中の初心者です。 現在アンケートフォームを作成中なのですが、 コンボボックス(?でしょうか?)に社員IDを入力すると、 サブフォームに社員情報(所属、性別など)を表示できるようにしたいと思っております。 現在、質問表テーブル    社員情報テーブル(各テーブルはリレーションされてます)        質問入力フォーム    社員情報サブフォーム があります。 質問入力フォームの社員IDの欄にIDを入力するとサブフォームに表示されるようにしたいのですが、 DLookup関数を使うことはわかったのですが、どのように式を組み立てて良いのかがわかりません。 順番や""の使い方に悩みます。 補足情報として、社員IDは数値型、他はテキスト型の設定になっています。 申し訳ありませんが、ご教授ください。    

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

  • ベストアンサー
  • 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

  • Access2000 DLookup関数の使い方

    色々試してみたのですがわからないので質問させていただきます。 フォーム/サブフォームを作っています。 サブフォームにある商品コード(コンボボックス)を入力すると、同じサブフォームにある単位、単価に商品台帳テーブルの値(単位、単価)を持ってくるようにしたつもりなのですが・・・。 商品コードの更新処理後に以下のコードを記述したのですが、うまく動きません(エラーは出ない)。 Me![単価] = DLookup("[単価]","商品台帳","[商品コード] = [Forms]![フォーム]![サブフォーム]![商品コード]") どこが悪いか教えていただけないでしょうか?

  • Dlookup関数の使い方 (Access2007)

    まったくのAccess初心者です。Dlookup関数の使い方がどうやってもわからないので教えてください。 車種というテーブルには[車番]と[全長]というフィールドがあります。 データというテーブルに[車番]やその他([定員]や[車高]など)のフィールドがあり、フォーム入力で車番を入れると車種テーブルから全長を引っ張ってくるようにしたいのですが、どうすればいいでしょうか。 ネットや参考書で調べていますが、=dlookup(  )の中をどう書けばいいかさっぱりわかりません。 質問の書き方もおかしいかもしれませんが、よろしくお願いします。

  • Access97:サブフォームを切り替え表示したい

    アクセスで仕事で用いられる専門用語の和英辞書データベースを作っております。 その辞書は用語の持つ意味や使われ方などから分類をしています。 分類一覧テーブルは分類ID,分類からなり、用語一覧テーブルは用語IDと用語からなります。 これらをつなぐのが和英辞書テーブルで、辞書ID,分類ID,用語IDからなり、 分類ID,用語IDはそれぞれ分類一覧テーブル,用語一覧テーブルのそれとリレーションシップを 組んでいます。 メインフォーム(既定のビュー=単票フォーム)には分類フィールドを作り、コンボボックスにします。 分類を選択したときまたはその横に「表示」ボタンを設置しておいてそのボタンをクリックしたときに 選択された分類に属する用語一覧がサブフォーム(既定のビュー=帳票フォーム)にリロードされてるように切り替えて表示させたいと考えています。 メインフォーム元:分類一覧テーブル,サブフォーム元:用語一覧テーブルにしたフォームは作成できました。 メインフォームのレコードを切りかえるとサブフォームも切り替わりますが、 コンボボックスの選択でサブフォームを切りかえ(たように見せ)る上記のようなフォームに このフォームから編集することはできるでしょうか? 無理なら新規にフォームを作りなおすとしてできるでしょうか? 自分の発想で2通りやってみましたが、いずれも失敗でした。 (詳しく書いたら文字数が800を超えたので省略します) テーブルの構成やリレーションを多少変えてもいいしフォームのレコードソースにクエリービルダを使ったりVBを組んでもいいので、メインフォームのコンボボックスの選択値によってサブフォームの表示を切り替える方法について教えて下さい。

  • AccessのDLookupについて

    AccessのDLookupについての質問です。 いろいろ調べたのですがわからなかったので教えてください。 テーブル「社員」…ID、社員コード、氏名、所属、回数 フォーム…テーブルと同項目 フォームで社員コードを入力すると、自動的に氏名、所属が表示されるようにしました。 しかし、所属が変更になった社員氏名がうまく表示できません。 ~例~ ID_社員コード_氏名 _所属_回数 1_1234   _山田 _東京_1 2_1234   _山田 _東京_2 3_1234   _山田 _大阪_3 とあったときに、表示したいのはID_3のデータなのですが、ID_1のデータが表示になってしまうのです。(回数が最大の氏名、所属を表示したい) x = Nz(DMax("回数", "社員", "社員コード=" & [社員コード]), 0) Me!氏名 = DLookup("氏名", "社員", "社員コード=" & [社員コード]) _ & " and 回数=" & x) としています。エラーは出ません。 どこが変なのでしょう? よろしくおねがいします。

  • access 2000フォーム検索 サブフォームじゃだめ?

    access 2000でフォームにリレーションされたサブフォームを設置したのですが、使う段になってから気づいたのですが、サブフォームの検索できないんですね。 できないというか、リレーションされた結果が表示されるので、その中での検索となってしまう。 フォーム内容が1体多となっている。 テーブルA id name 1 aoki 2 sasaki テーブルAのidとテーブルBのuidはリレーションされている。 テーブルB uid book 1 辞典 2 漫画 1 ノート テーブルAのid1 aokiを表示しているフォームで、テーブルBの「漫画」で検索した際に検索できるようにするにはどうすればいいでしょうか。

  • Access DLookUp関数について

    DLookup関数を使用して、フォーム上にテーブルの値を返したいと思い、 試行錯誤をしたのですが、思うように値が返されません。。。 どうかお力添え下さいますようお願い致します。 「得意先&出荷先」テーブルに「得意先コード」「名称」項目を設け、 「詳細入力」フォームの「得意先コード」に値を入力をすると、 「得意先名称」項目に、テーブルの「名称」項目の値を返す動作を設定したいのです。 私は、下記のように書きましたが、「#Type!」と表示され、思うような動作をしません。 =DLookUp("[名称]","[得意先&出荷先]","[得意先コード] = '" & [Forms]![不具合詳細入力フォーム]![得意先名称] & "'") どこがおかしいのでしょうか?? またDLookUp以外でも、もし上記のような動作を実現させる方法がありましたら、ぜひご教授ください! 宜しくお願いいたします。

  • accessのDLookup関数について

    ほとんど理解できていないAccess2000使用者です 数値型のDLookup関数では以下のようにしたら上手くいきいました Me![氏名] = DLookup("[氏名]", "[テーブル]", "[ID]= " & [ID]) 出来上がってから、[ID]をテキスト型にしなければいけなくなりました 後ろの"[ID]= " & [ID]の部分をどのように変えればいいか分からず・・ よろしくお願いします

  • ACCESS フォームからサブフォームのデータを更新・入力したい

    ACCESS フォームからサブフォームのデータを更新・入力したい tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。 フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェクトに所属するプロジェクトコードをサブフォームのtbl_テーマのプロジェクトコードにも反映したいのですがどのようにしたらよいでしょうか? そういったことは可能でしょうか?分かりにくい説明で申し訳ないですが教えていただけると助かります。よろしくお願いします! DBの構成 【テーブル】 tbl_プロジェクト (1件1件のIDとプロジェクトコードを持つ) (フィールド:P_ID、プロジェクトコード、件名、契約日など) tbl_テーマ(プロジェクト毎に関連のあるキーワードを持つ) (フィールド:P_ID、プロジェクトコード、テーマ)←これのプロジェクトコードにtbl_プロジェクトのデータが入るようにしたい。 tbl_顧客(プロジェクトを依頼した顧客情報を持つ) 【クエリ】 q_テーマ(プロジェクト、テーマ、顧客を抽出するクエリ) 【フォーム】 f_プロジェクト (プロジェクトを1件ずつ表示・参照・新規作成するフォーム) f_テーマサブフォーム (f_プロジェクトフォームのプロジェクトコードにづきテーマを          表示・入力するサブフォーム) リレーションはP_IDをキーに一対多で作成しています。

  • ACCESS2003 サブフォームのデータ

    こんにちは。宜しくお願い致します。 ACCESS2003でDBを作成しています。 メインフォームの中にサブフォームを作っています。 それぞれのID(オートナンバー)をリレーションシップとして設定し、連動しています。 メインフォームにデータを追加する際、サブフォームにデータを入力せずに、 次のメインフォームにデータを入れた場合、 サブフォームのオートナンバーが働かず、のちのちデータを入れた際にIDが違うため情報がずれてしまいます。 例えば、 メインフォームのID1~9のサブフォームには何も書き込まずメインフォームにだけデータを入力します。 その後、メインフォームのID10にあるサブフォームにデータを書き込むと、立ち上げなおしたときに、そのサブフォームへの入力したデータがID1のデータとして出てきてしまいます。 恐らく簡単なことだとは思うのですが、なにぶん初心者なものでさっぱり分かりません。 お分かりになる方、是非ともご教授お願いいたします。

  • 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

専門家に質問してみよう