• ベストアンサー

access Dlookup関数について

いつもこちらではお世話になっています。 型が一致しません。エラー13 といったエラーが出ています。スペースを消したり、入力しなおしたりいろいろやってみたのですが、 このようなエラーがずっと出ています。「"」「#」「&」の位置などが問題なのでしょうか? Me.前回検針値 = DLookup("検針値", "T_水道検針", "部屋CD =" & Me!部屋CD & "" _ And "検針日 =#" & Me!前回検針日 & "#") ヘルプを見てもいろいろ調べても、わからないのでよろしくお願いします

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.3

素人だから、よくわかんないけど、 "部屋CD =" & Me!部屋CD & ”” And "検針日 =#" & Me!前回検針日 & "#" が文字列として、成り立っていないということだよね。 VBでは、andは条件式としても解釈できるので、 部屋CD =5 And 検針日 =#2012/8/31# というような式となり、 false and false で false という判断をされてしまっているんじゃないかな。 間違えないようにするためには、 Dim strCriteria as string strCriteria = "部屋CD =" & Me!部屋CD & " And 検針日 =#" & Me!前回検針日 & "#" debug.print strCriteria Me.前回検針値 = DLookup("検針値", "T_水道検針", strCriteria) のように、強制的に文字列に入れて、イミディエィトウインドウなどで確認するなり、 ブレークポイントで値を確認するなり、メッセージボックスに出力して確認するなり、、、 ということだと思うよ。

komerice
質問者

お礼

なるほど・・・ 詳しく説明ありがとうございます。 じっくり考えながらものにしていこうと思います。 とっても助かりました!

その他の回答 (2)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

すみません、andの前にスペースが必要かもしれません。 " and 検針日=・・・”

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

"部屋CD =" & Me!部屋CD & "" _ And "検針日 =#" & Me!前回検針日 & "#") ⇒ "部屋CD =" & Me!部屋CD & _ "And 検針日 =#" & Me!前回検針日 & "#") でどうでしょう。

komerice
質問者

お礼

お早い返事ありがとうございました。 ばっちり欲しい値を得ることが出来ました! 最初は、 "部屋CD =" & Me!部屋CD And 検針日 =#" & Me!前回検針日 & "#") このように書いていたのですが、同じエラーが出たので「"」を増やしたりしました。 考え方としてはどのようにすればいいのでしょう? 1つ1つ条件だと、"部屋CD =" & Me!部屋CD と "検針日 =#" & Me!前回検針日 & "#" このようになりますよね?2つをつなげる場合は、 ANDの前後にスペースを入れて、と思ってたのですがいかがでしょう?

関連するQ&A

  • アクセス DLookup

    myStr = DLookup("[感想]", "TEST", [感想] = "'A'") このコードがvbaでエラーになります。 実行時エラー13 型が一致しません になります。 TESTと言うテーブルは存在するし感想と言うフィールドは存在します。 エラーの原因を教えて下さい。

  • Access DLookup関数で複数条件の記述

    とても困っているので、どなたか教えて下さい! 今AccessでDLookup関数を使ってフィールドの値を取り出そうとしているのですが、 色んなエラーメッセージが出て先に進めません。 ★値を取り出そうとしているテーブル★ ■顧客台帳  ・顧客ID(オートナンバ)  ・顧客氏名(テキスト型)  ・生年月日(日付・時刻型)      以下略 ここから DLookup("顧客ID", "01顧客管理台帳", "顧客氏名 = " & Chr(34) & Me.Txt顧客氏名 & Chr(34) And "生年月日 = " & Me.Txt生年月日) 補足:Me.Txt顧客氏名(書式なし)    Me.Txt生年月日(日付(S)定型入力9999/99/99)    は、事前に入力されているものとします。 という式を使って、入力した顧客氏名と生年月日に一致する顧客IDを取り出したいのですが、 「型が違います」というエラーが出てしまいます。 条件式に[ ]等をつけてみても、「指定した式で参照されている'|'フィールドが見つかりません」 という様なエラーが出てしまいます。 条件の部分が間違っていると思うのですが、この式、またはやり方の問題点がお分かりになる方がおられましたら、ご指摘の方よろしくお願いいたします。

  • Dlookup関数テキスト型と数値型

    いつもお世話になります Accessで倉庫管理を作製しております。 ItemNameを選択されたら、ItemIDとItemGruopとUnitを一緒に表示させたいです。 以下のコードをつくりましたが型が違いとういエラーになります。 Me![ItemID] = DLookup("[ItemID]", "Inventory", "ItemName='" & ItemName & "'" And Unit" & [Unit] & And ItemGroup='" & Me![ItemGroup] & "'") ItemIDとUnit:数値型 ItemName と ItemGroup:テキスト型 正しいコードを教えていただきたいです。 よろしくお願いします。

  • 日付と文字列を条件としてDLookup関数で抽出さ

    日付と文字列を条件としてDLookup関数で抽出させたいです。アクセスです。 テーブル1のデザイン フィールド名 ID(数値型) フィールド1(テキスト型) 取得日時(日付/時刻型) テーブル1のデータ ID  フィールド1  取得日時 1       あ  2013/01/05 2       い  2013/01/05 この条件でvbaでIDの値を抽出したいのですが MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#") だと、1が返ってきちゃうのでフィールド1でもフィルタをかけたいのですが どうやればいいでしょうか? MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#" And "[フィールド1] = 'あ'") にすると、型が一致しません。(Error 13)になります。 ご教授よろしくお願いします。

  • 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 入力フォームにクエリを表示させたい

    ある物件を管理しています。 T_物件情報 物件ID(オートコレクト)/物件名 T_水道検針 検針No(オートコレクト)/物件ID/検針日 T_検針明細 明細No(オートコレクト)/検針No/部屋番号/検針値 このようなテーブルがあり、F_水道検針で入力できるフォームを作りました。 T_検針明細はサブフォームになっています。 入力の際の見た目として、前回の検針値、使用量(今回から前回を引いたもの)を表示させたいと思っています。 一応クエリで前回の検針値を出すものQ_前回検針値を作りました。 それぞれ対応するものにリレーションを設定しています。 抽出条件として 物件ID [forms]![F_水道検針]![cmb物件ID] 前回検針日 [forms]![F_水道検針]![前回検針日] ←フォーム上で非連結テキストボックスです 部屋番号 [forms]![F_水道検針]![部屋番号] を設定しています。 サブフォーム上に非連結テキストボックスを2つ設置し、先ほど書きました前回の検針値、使用量を表示できればと思っています。フォーム自体のコントロールソースがT_水道検針、T_検針明細ですのでクエリをソースには持ってこれないですよね。どうすれば表示できるのかご教授いただければと思います。 とりあえずこのフォームを入力する際には見た目だけわかればいいので、このような質問をさせていただきました。 VBAは始めたばかりで参考書をみながらひとつずつやっている状況です。 マクロについても同じです。 また、後々請求書で計算をすることを考えるとテーブルの構築などから見直したほうがいいのかもしれません。 もっとよりよい方法がありましたらそれでもいいので宜しくお願い致します

  • 複数条件のDLOOKUP文が上手く使用できない

    現在、ACCESSVBAを用いての作業を行っているのですが、 判定条件として複数条件をDLOOKUP文を使用すると実行時にエラーとなるなどして、 上手く動作しません。 おかしな点がありましたら指摘していただけますでしょうか。 対象テーブルのフィールドAAA~は全てテキスト型となっております。 Me!txtはフォーム上から取得した値、 aaaaはそこまでの処理に使用した変数、 rsはレコードセットとなっております。 レコードセットはExcelのセルを読み取ったデータが格納されており、 これらの変数はそのまえの処理で正常に取得を確認しています。 If DLookup("AAA", "TBL", _"BBB ='" & Me!txt & "'" And _"CCC = '" & aaaa & "'" And _"CCC = '" & Left(rs(1), 3) & "'") = Null Then よろしくお願いいたします。

  • DLookUp関数を使ったACCESSの令和表示2

    [やりたいこと] 同じテキストボックスで「西暦」と「曜日」をマウスのクリック動作で変更表示させ、、「和暦(令和02年)」は別テキストボックスで関数を使って表示させたい。 「=DLookUp("和暦","T_和暦マスタ","開始年月日<= #"&txt日付&"#and 終了年月日>=#"&txt日付&"#")」使って表示させたい。 [やってみたこと] ・既存テキストボックスの名前変更:名前「txt日付」 ・テキストボックスの追加:名前「txt和暦日付」 ・データタブ:コントロールソース  「=DLookUp("和暦","T_和暦マスタ","開始年月日<= #"&txt日付&"#and 終了年月日>=#"&txt日付&"#")」※参照先はテーブル「T_和暦マスタ」 「結果」追加のテキストボックスに令和表示「令和02年」はされますが、既存テキストボックスが「西暦」に固定されクリックしても曜日の表示もできません。 [現在の設定] ・テキストボックス:(名前:年月日曜日)コントロールソース「=Date()」 ・イベントのクリック時に「以下の記述」を設定 Private Sub テキスト11_Click() With Me.ActiveControl Select Case .Tag Case 1 .Tag = 2 .Format = "gggee\年mm\月dd\日" Case 2 .Tag = 3 .Format = "aaaa" Case Else .Tag = 1 .Format = "yyyy/mm/dd" End Select End With End Sub [補足情報] [令和対応紹介 ウェブサイト] 新元号は「令和」|マイクロソフトのパッチに頼らずにAccessで新元号を表示する方法 https://www.ait-labo.com/excel_access/2805/ 以上ですが、宜しくお願いします。

  • アクセスVBAのエラーメッセージ

    次のようなVBAを更新前のイベントとして書いたのですが、実行しようとすると「抽出条件のデータ型が一致してません」というエラーメッセージが出ます。 これは、どういう意味のエラーメッセージなのでしょうか? よろしくお願いいたします。 If IsNull(DLookup("作業日", "T交通費マスター", "作業日 ='" & Me!作業日 & "'")) Then Exit Sub End If

  • アクセス2003 エラー13

    超初心者です。 簡単な下記の式なのですが、実行時エラー13 型が一致しません とエラーメッセージが出ます。 Private Sub コマンド0_Click() Me!テキスト1.FontSize = Me!テキスト5 End Sub テキスト名は合っています。 ご教示よろしくお願いします。

専門家に質問してみよう