====== [VBA][SQL] Filterstrings ======
//Immer wieder sehe ich Fragen in Forum zu SQL-Statements oder Filterstrings die daran scheitern, das die Werte falsch übergeben werden//
===== Filterstring =====
Der Filterstring wird in Formularen und Reports verwendet. Er entspricht aber auch dem WHERE-Abschnitt eines SQL-Statements oder der Bedinung eines DCOUNT(), DLOOPUKP() etc.
-- Datum muss entweder im US Format oder im ISO-Format sein
-- US: #MM/DD/YYYY#
[mein_datum_feld] = #06/12/2017#
-- ISO: #YYYY-MM-DD#
[mein_datum_feld] = #2017-06-12#
-- Zeit: #NN:HH:SS#
[mein_zeit_feld] = #12:45:00#
-- Zeitstempel: #MM/DD/YYYY 12:45:00#
[mein_timestpam_feld] = #06/12/2017 12:45:00#
-- Zahlen: 0.0
[mein_long_feld] = 12345
[mein_double_feld] = 12345.67
-- Text 'Text', "text"
[mein_text_feld] = 'abc'
[mein_text_feld] = "abc"
===== Beispiele =====
Angewandt in VBA mit einer Variablen als wert.
Hier eine kleine methode, welche die Umsetzungen zeigt
Public Sub showroomFilterStrings()
Dim strFilter As String
Dim varValue As Variant
'Datum: #MM/DD/YYYY#
varValue = Now
strFilter = "[mein_datum_feld] = #" & format(varValue, "MM\/DD\/YYYY") & "#"
Debug.Print strFilter
'Zeit: #NN:HH:SS#
varValue = Now
strFilter = "[mein_zeit_feld] = #" & format(varValue, "HH:NN:SS") & "#"
Debug.Print strFilter
'Zeitstempel: #MM/DD/YYYY 12:45:00#
varValue = Now
strFilter = "[mein_timestpam_feld] = #" & format(varValue, "MM\/DD\/YYYY HH:NN:SS") & "#"
Debug.Print strFilter
'Zahlen: 0.0
varValue = 12345
strFilter = "[mein_long_feld] = " & varValue
Debug.Print strFilter
varValue = 12345.34
strFilter = "[mein_double_feld] = " & varValue
Debug.Print strFilter
'Text 'Text', "text"
varValue = "abc"
strFilter = "[mein_text_feld] = '" & varValue & "'"
Debug.Print strFilter
strFilter = "[mein_text_feld] = """ & varValue & """"
Debug.Print strFilter
End Sub
-- Ausgabe im Direktfenster
[mein_datum_feld] = #06/26/2017#
[mein_zeit_feld] = #10:36:50#
[mein_timestpam_feld] = #06/26/2017 10:36:50#
[mein_long_feld] = 12345
[mein_double_feld] = 12345.34
[mein_text_feld] = 'abc'
[mein_text_feld] = "abc"