2016-08-02 16 views
1

Ich habe ein Formular, das einen Filter erstellt.Datum entfernen Mehrdeutigkeit

Ich habe zwei Textfelder, die als Start- und Enddatum für den Filter verwendet werden. Sie haben Format Short Date

den VBA-Code wird wie folgt:

Dim fdate4 As Date 
Dim fdate5 As Date 


fdate4 = Format(txtStart, "yyyy/mm/dd", vbMonday, vbFirstJan1) 
fdate5 = Format(txtFinish, "yyyy/mm/dd", vbMonday, vbFirstJan1) 

Wenn ich Filter versuchen, 1. OKTOBER - 31. Dezember und debug.print das Formular Filter sehe ich:

[DutyDate] BETWEEN #01/10/2015# AND #31/12/2015# 

jedoch Es enthält Daten von Januar. Hat dies mit der Formatierung des Formulars selbst oder der Filterzeichenfolge zu tun?

Ich habe versucht mit CDate zusammen mit anderen Formaten dd/\mm/\yyyy jedoch, dass alle das gleiche Ergebnis geben.

+2

Ich denke, Sie sollten 'Dim fdate4 As String', oder das' Format() 'wird keine Wirkung haben - Datum Variablen haben kein Format. – Andre

+0

Bitte poste mehr von deinem Code. Dieser Code kann nicht der vollständige Code sein. –

+1

@George: Fehlende Zeilen zur Antwort hinzugefügt. – Gustav

Antwort

3

Sie sollten in etwa so wie die letzten Parameter von Format sind für Wochen nur verwenden und „/“ allein ist kein Schrägstrich, aber die (lokale) Datumstrenn:

Dim fdate4 As String 
Dim fdate5 As String 

fdate4 = Format(txtStart, "yyyy\/mm\/dd") 
fdate5 = Format(txtFinish, "yyyy\/mm\/dd") 

Die fehlenden Zeilen für George:

Me.Filter = "[DutyDate] BETWEEN #" & fdate4 & "# AND #" & fdate5 & "#" 
Me.FilterOn = True