Access DLookupについて

このQ&Aのポイント
  • ローカルクエリの抽出結果をVBAで取得する方法について調査しています。
  • DLookup関数を使用して端末数を取得するための指定方法が分からずに困っています。
  • フォーム上の拠点名が参照できていないのか、DLookupの指定方法が間違っているのか、原因を特定できません。
回答を見る
  • ベストアンサー

Access DLookupについて

お世話になります。 ローカルクエリがあり、その抽出された内容を取得したいの ですがどのようにすればよいでしょうか。 クエリのフィールドは「拠点名」「端末数」の2つのみで、当該クエリは フォーム上のテキストボックス内の拠点名を条件としてます。  クエリの「拠点名」の条件として、 Forms![テスト]![拠点名] 直接クエリを開くと、ちゃんとその拠点名で抽出され、端末数も 表示されてます(必ず1レコードのみ抽出されます)。 で、この抽出結果をVBAで取得したいのですが。。 調べてみたところDLookup関数を使えば取得できるようなのですが、 指定の仕方がいまいち分からずにいます。 たとえば、フォーム上に「端末数」というテキストボックスを作成し、 そのレコードソースの箇所に「= DLookup("端末数","ローカルクエリ","[拠点名] = '" & Forms![テスト]![拠点名] & "'")」と指定するものなのでしょうか。 それとも、VBAで Forms![テスト]![端末数] = DLookup("端末数","ローカルクエリ","[拠点名] = '" & Forms![テスト]![拠点名] & "'")と指定するのでしょうか。 両ケースともに Forms![テスト]![端末数]にはNullが入ってしまい、端末数を 取得できません。 ちゃんとフォーム上の拠点名が参照できてないのか、それともDLookupの指定の 仕方が悪いのか分からずにいます。 勉強不足で大変恐縮ですが、ご教授の程よろしくお願い致します。

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

  • ベストアンサー
回答No.1

イミディエイト・ウインドウでテストするのも一つの手です。 テスト要領は、添付図を参照されて下さい。

naoto0216
質問者

お礼

f_a_007さま ご回答ありがとうございます。 イミディエイトウィンドウで確認した結果がNullだったんです。 DLookupもフォームも両方Nullでした。 添付頂いた図からすると、私が記述したDLookupの書き方には 問題なさそうですね。 ちなみに、ローカルクエリでフォーム上のテキストボックスを参照する ようにしているのですが、DLookupでも条件をしているので、 クエリの方は必要ないのでしょうか。 両方で条件を指定しているからNGとか。 DLookupでただクエリを指定しても取得できなかった為、条件を 付け加えた次第です。 もう少し色々試してみたいと思います。 ありがとうございました。

naoto0216
質問者

補足

結局うまくいかなかった為、VBA内にSQLを書いて取得するように 致しました。 というか、本来ならDLookupについてちゃんと調べてやりたかった ところではあるのですが時間が無く諦めた次第です。。 ありがとうございました。

関連するQ&A

  • アクセスadpでのDLookUp関数

    アクセス2003 adpのレポートのあるコントロールのコントロールソースにDLookUp関数を使おうとしています。 =DLookUp("列名","ストアドプロシージャー名") *ストアドプロシージャーの抽出条件にパラメータを設定してあります レポートの「入力パラメータ」にも記入してあります *ストアドプロシージャーを実行した結果のレコードは1つのみです mdbでは =DLookUp("列名","クエリー名") でうまくいっていたのですが adpの場合#エラーになってしまいます 一時ファイルにレコードを追加してそれを引数にすればうまくいくのですが、 できればストアドプロシージャーを引数にしたいと思っています。 どなたかご教授をお願いいたします

  • ACCESS Dlookup関数

    Dlookup関数を使えば、クエリの抽出条件に他のテーブルや、クエリの結果を使うことがわかりました。 しかし抽出条件が抽出するデータの種類(品種)により複数有る場合、その種類ごとにDlookup関数で指定しなければなりません。 そこで関数のDLookup(expr, domain [, criteria] ) 引数 criteriaを工夫する事で複数の条件をひとつの関数で出来ないものでしょうか。 例 品種tbl 品種 | 範囲(以下) A | 100 B | 150 <抽出条件欄> Dlookup("範囲","品種tbl",[品種tbl]="A") Dlookup("範囲","品種tbl",[品種tbl]="B") 個の二つをひとつで出来ないものでしょうか。 またよく以下のような表記を見ますが、「& Me.車番入力欄 &」はどう解釈したらいいのでしょうか。 DLookup("[全長]","車種","[車番] = '" & Me.車番入力欄 & "'")

  • アクセス DLookup関数 なぜエラーになるのか

    アクセス DLookup関数 なぜエラーになるのかわからないです。 testと言うテーブルがあり、a・bと言うフィールドがあります。 aフィールドにあああと入ってる場合のbフィールドの値を取得したいのですが Debug.Print DLookup("[b]", "test", "[a] = あああ") だと、 実行時エラー2471「クエリ パラメータとして指定した式でエラー'[あああ]'が発生しました。」 になります。 どこがおかしいのか教えていただけますか?

  • 【Access97】DLookupについて

     Access97を使って今、データベースを作成していますが、行き詰まってしまいました。  まず大まかな構成を書くと… <テーブル> 【○○班データ】テーブル ・「データナンバー」フィールド ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド 【部材マスター】テーブル ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド <クエリー> 【○○班データクエリー】 「○○班データ」テーブルを元に選択クエリーを作成(全てのフィールド) <フォーム> 上記のクエリーを元に作成。 ここからが質問内容になるのですが、「部材名」をコンボボックスで入力したら、Dlookup関数をテキストボックスのコントロールソースに記述して「部材ナンバー」と「部材コード」が表示されるようにはできました。 ですが、フォームで表示された「部材ナンバー」や「部材コード」がクエリーやテーブルには反映(入力)されておらず、どうしたらいいか手詰まりになっています。 もし、対処法を御存知の方がいらっしゃったら、是非とも御教示をお願いします。 念の為にテキストボックスのコントロールソースで記述したDLookup関数を書いておきます。 「部材ナンバー」の呼び出し =DLookUp("[部材ナンバー]","[部材マスター]","[部材名]='" & [部材名] & "'") 「部材コード」の呼び出し =DLookUp("[部材コード]","[部材マスター]","[部材名]='" & [部材名] & "'")

  • Access2000のDLOOKUPについて

    Access2000にて収支管理のDBを作成中です。 フォームのDLOOKUPの設定についてお聞きしたいのですが、 テーブル 「00_Account code」に 「Account code」と「Account code テキスト」があります。 これを 「01_収支テーブル入力_フォーム」にて「Account code」入力時に「00_Account code」テーブルから「Account code テキスト」抽出しようと思い下記のような式を入れています。 =DLookUp("[Account code テキスト]","[00_Account code]","[Account code] =[Forms]![01_収支テーブル入力_フォーム]![Account code] ") しかしフォームにて[Account code]を入力してエンターをしても表示されず、一度フォームを閉じてから再度開くと表示されるという現象におちいっています。 これを入力→エンター時に表示させる方法はありますでしょうか? 何かの設定かと思うのですが・・・ぶつかっています。 どなたかお教え願えると助かります。よろしくお願いいたします。

  • ACCESSでDLookupがうまく使えません。

    アクセス初心者です。 行き詰っているので、どうか教えてください。 医療事務をしていますがアクセスで管理できないものかと作り始めました。 tbl薬剤等製品のテーブルに 製品名:クスリA 製品番号:ABC123 販売元:あいう社 などがあります。 frm接種記録のフォーム作り、 フォーム上で製品番号から、tbl薬剤等製品の販売元を抽出してテキストボックスに代入したいのですが、 DLookup("[販売元]","tbl薬剤等製品","[製品番号] = Forms![frm接種記録]![製品番号]") としたのですが、うまくいきません。 どうしたら良いのでしょうか?

  • ACCESSのクエリでDlookup関数・戻り値の属性は

    ACCESSのクエリの中で、抽出したい項目を式で定義しているのですが、Dlookup関数を使っています。 そのとき、数値項目だと思っていたのですが、文字として値が返ってきているようです。(数字が左詰めになっているので) Dlookup関数の戻り値は、このような使い方をした場合、文字として返ってくるのでしょうか。 (Nullというのが返ってきている場合もありました) クエリ上で使っている式は、このようなものです。 前月戸建契約数: DLookUp("契約数","テーブル名", "担当者名='" & [担当者名] & "' And 月次='" & [前月] & "'") [担当者名]は元になるテーブルにあり、[前月]はクエリ上で、(テーブル上の)[月次]-1で式として定義しています。 よろしくお願いします。

  • アクセスのクエリとDlookupはどちらがより効果(効率)的か

    こんにちは。 Access2000を使用しています。 Aテーブルの内容を元にBテーブルの内容をフォームや レポートで表示する場合、クエリを作って表示するか Dlookup関数などを使用して表示する方法が代表かと 思います。 個人的にはその都度クエリを作ってしまうとクエリの 数が増えすぎてしまうので極力Dlookup関数を使用し ていますが、処理速度、処理効率、資源の節約から考 えてどちらがより効果的でしょうか?因みに、扱う レコード数はせいぜい1,000件程度です。 皆様の経験などからどのようにお考えか、ご教授願い ます。

  • アクセス97のVBAでパラメータを指定する方法

    いつもたいへんお世話になっております。 アクセス97で、フォームを複数作りました。フォーム1、フォーム2、フォーム3。 それぞれのフォームのコマンドボタンでフォーム4を呼び出します。 フォーム4のレコードソースにクエリを使用しますが(クエリ1)、 このクエリにの抽出条件に、最初のフォームのコントロールの値(部門)を設定したいのですが、抽出条件に、「FORMS!フォーム1!部門」とすると、同じクエリを他のフォームには使えませんよね?パラメータを作成して、それぞれのフォームのコマンドボタンのなかで指定できてしまえば、クエリ1と、フォーム4を共有できますよね。現在は、それぞれのフォームに対応するフォーム4とクエリ1を作成しています。なんとかなりませんか? 説明が難しくなってきちゃった・・・ ・・・パラメータの入力要求をVBAで処理したいのですが、いい方法を教えてください。

  • ACCESSでの抽出について

    単純なクエリの抽出なのですが・・・。 区フィールド、町フィールドをクエリで作成して そのクエリを元に抽出フォームを作成しました。 そして、クエリの抽出条件に以下の式を入力しました。 Like "*" & [Forms]![F_抽出]![区] & "*" Like "*" & [Forms]![F_抽出]![町] & "*" しかし、大本のデータに [区]フィールド→品川区 [町]フィールド→空白 ・・・と、どちらかが空白の場合、そのレコード を抽出してくれません。 このように、空白フィールドを持つレコードをも 抽出するにはどのようにしたらようですか? 初歩的な質問で申し訳ありませんがよろしくお願いいたします。