2017-10-23 14 views
0

私は以下のコードを掘り下げて動作させることができません。変数に基づいたVBA DLookup複数のCritieraへのアクセス

Dim db As Database 
Dim RecRLs As Recordset 
Dim sTripCode, sVanNum As Integer 
Dim sDepDate, sArrivalDate As Date 
Dim sRoomRate As Currency 
Set RecRLs = db.OpenRecordset("qryRLRoomListRates", dbOpenSnapshot) 

sTripCode = DLookup("[TourCodeID]", "tblTripCodes", "[TourCode]=[Forms]![frmRMSBuildRLs]![tboxTourCode]") 
sDepDate = [Forms]![frmRMSBuildRLs]![tboxDepartureDate] 
sVanNum = [Forms]![frmRMSBuildRLs]![tboxVanNumber] 
sArrivalDate = RecRLs!ArrivalDate 


sRoomRate = DLookup("[RateTwinHosCab]", "tblRLRatesByTrip", "[TourCode] = " 
& sTripCode & " AND [DepartureDate] = " & sDepDate & " AND [VanNumber] = " & 
sVanNum & " AND [ArrivalDate] = " & sArrivalDate) 

問題は、sRoomRateがnullを返すことです。 私はMsgBoxでそれぞれの変数:sTripCode、sDepDate、sVanNum、およびsArrivalDateを持っています。彼らはそれぞれ正しい結果を返します。

なぜsRoomRateがnullを返すのでしょうか?どうもありがとうございます!

+0

は 'sDepDate'は、「#10/2017分の24#」'として文字列が含まれている 'んかそれは単なる文字列が含まれていません'' 10/24/2017 "'や '10/24/2017'のような日付を含んでいますか? – YowE3K

+0

sDepDateの形式は、10/24/2017です。クォートやハッシュタグなし。ありがとうございました! – arbitel

+0

すべての変数を一致させる必要があります。 I. [TourCode]は数値フィールドで、sTripCodeは数値などを返します。ありがとう! – arbitel

答えて

3

ソリューションは、以下の日付の周り#Sを追加しました:

sRoomRate = DLookup("[RateTwinHosCab]", "tblRLRatesByTrip", "[TourCode] = " & 
sTripCode & " AND [DepartureDate] = #" & sDepDate & "# AND [VanNumber] = " & 
sVanNum & " AND [ArrivalDate] = #" & sArrivalDate & "#") 
+0

おそらく '=#"&Format(sDepDate、 "mm/dd/yyyy")& "#AND ..."を使用して日付を明示的にフォーマットする必要があります。そうしないと、VBAはデフォルトの日付設定( '' dd/mm/yyyy ''フォーマットなど)を使用してフォーマットを行い、誰かが自分以外のコードを使用すると問題を引き起こす可能性があります。 – YowE3K

+0

それは解決策の半分に過ぎません。あなたは@ YowE3Kで記述されている形式を見逃しています。または、値を連結するために私の 'CSql'関数[here](https://stackoverflow.com/questions/43589800/syntax-error-in-insert-into-statement-whats-the-error/43591778#43591778)を使用してください。 – Gustav

関連する問題