User Tools

Site Tools


vba:tutorials:filterstrings

[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"
vba/tutorials/filterstrings.txt · Last modified: 29.09.2020 13:19:17 by yaslaw