2013-05-21 6 views
0

Этот код создает ошибку времени выполнения 3464 для dlookup с matchstr_t. Я не могу понять, почему matchstr_v, похоже, работает нормально. Любые предложения? На данный момент все, что я пытаюсь сделать, это использовать dlookup, чтобы отмечать повторяющиеся времена начала встреч.ошибка с несколькими критериями dlookup

Dim i, j, clientid, therid As Integer 
Dim origin_date, apptdate As Date 
Dim slotday, apptype, venue, matchstr_v, matchstr_t As String 
Dim slottime As Date 
Dim appt(25) As Date 
Dim db As Database 
Dim rst As Recordset 
Dim test As Variant 

origin_date = Date 
slotday = Me.slot_day.Value 
slottime = Me.slot_time.Value 
clientid = Me.Client_ID.Value 
therid = Me.Therapist_ID.Value 
venue = Me.venue.Value 
apptype = "continuation" 

slottime = Format(slottime, "Short Time") 
For i = 1 To 7 
    apptdate = Date + i 
    If Weekday(apptdate, 2) = slotday Then 
    'set up stuff 
    For j = 0 To 25 
     appt(j) = apptdate + (j * 7) 

     Set db = CurrentDb() 
     Set rst = db.OpenRecordset("Dummy") 

     Debug.Print "[therapist ID] = " & therid 
     matchstr_v = "[appt date]= #" & appt(j) & "# AND [appt time] = #" & slottime & "# AND [venue] = '" & venue & "'" 
     matchstr_t = "[appt date]= #" & appt(j) & "# AND [appt time] = #" & slottime & "# AND [therapist ID] = " & therid 
     Debug.Print matchstr_t 
     If Not IsNull(DLookup("[dummy ID]", "Dummy", matchstr_v)) Then 
      ' do more stuff 
     ElseIf Not IsNull(DLookup("[dummy ID]", "Dummy", matchstr_t)) Then 
      ' do more stuff 
     Else 
      rst.AddNew 
      rst.Fields("appt date") = appt(j) 
      rst.Fields("appt time") = slottime 
      rst.Fields("Client ID") = clientid 
      rst.Fields("Therapist ID") = therid 
      rst.Fields("appt type") = "continuation" 
      rst.Fields("attendance") = "scheduled" 
      rst.Fields("venue") = venue 
      'Debug.Print rst.Fields("appt date") 
      rst.Update 
      test = (DLookup("[dummy ID]", "Dummy", matchstr_v)) 
      Debug.Print test 
     End If 
     rst.Close 
     db.Close 
    Next j 
    Else 
    End If 
Next i 
+0

Пожалуйста, покажите нам, что' Debug.Print matchstr_t' дает вам, когда возникает ошибка с 'DLookup'. – HansUp

+0

[appt date] = # 27/05/2013 # AND [appt time] = # 16: 00 # AND [Therapist ID] = 2 – user2405097

+0

Что происходит при создании и тестировании этого нового запроса Access? ... 'SELECT * FROM Dummy WHERE [appt date] = # 27/05/2013 # AND [appt time] = # 16: 00 # AND [Therapist ID] = 2' ... вы можете получить ошибку # 3464, * «Несоответствие типа данных в выражении критериев» *, если тип данных «[Идентификатор терапевта]» является текстовым, а не числовым. – HansUp

ответ

0

Каков тип данных [идентификатор терапевта]?

Возможно, существует несоответствие типа данных со значением therid.

+0

[therapist ID] - это поле в таблице, в которой я работаю, - связанное значение является целым числом. – user2405097

0

В этом случае, может быть, вы просто отсутствует #

matchstr_t = "[дата АЧТВ] = #" & АЧТВ (к) & "# AND [АЧТВ время] = #" & slottime & «# И [идентификатор терапевта] = # «& therid

+0

debug.print matchstr_t дает – user2405097

Смежные вопросы