Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Elektroschrott am Januar 04, 2018, 22:11:08

Titel: VBA-Filter: Datumsvergleich als Kriterium (für Wiedervorlage)
Beitrag von: Elektroschrott am Januar 04, 2018, 22:11:08
Ich möchte über VBA einen Filter erweitern, der mir alle Datensätze anzeigt, deren Feld "VorlageDatum" nicht in der Zukunft liegt. Also quasi als Wiedervorlage.
Markiert werden diese bereits farbig und mit Rahmen über diese Kernfunktion:

strHeute = Format(Now, "\#yyyy\-mm\-dd\#")
strDatum = Format(VorlageDatum, "\#yyyy\-mm\-dd\#")
    If strDatum <= strHeute Then
        Me.txtVorlage.BackColor = RGB(255, 194, 14)
        Me.VorlageDatum.BackColor = RGB(255, 194, 14)
    Else
        Me.txtVorlage.BackColor = RGB(255, 255, 255)
        Me.VorlageDatum.BackColor = RGB(255, 255, 255)
        Me.rechteckMarker.Visible = True
    End If

Nun suche in einen Filter, um über Criteria diese zu definieren. Stark vereinfacht lautet dieser derzeit:

Criteria = BuildCriteria("Ehemalig = False")
Me.Filter = Criteria

Mein Versuch ging in diese Richtung:

strHeute = Format(Now, "\#yyyy\-mm\-dd\#")
strDatum = Format(VorlageDatum, "\#yyyy\-mm\-dd\#")
Criteria = BuildCriteria("Ehemalig = False" & " AND " & "strDatum <= strHeute")
Me.Filter = Criteria

Aber irgendwie will das nicht, vermutlich lässt sich mit dieser Bedingung gar kein Filter definieren, oder?
Vielen Dank für alle Hinweise !!
Titel: Re: VBA-Filter: Datumsvergleich als Kriterium (für Wiedervorlage)
Beitrag von: Lachtaube am Januar 04, 2018, 23:39:52
BuildCriteria (https://msdn.microsoft.com/de-de/vba/access-vba/articles/application-buildcriteria-method-access) erwartet 3 Argumente in vorgegebener Reihenfolge, muss aber für konstante Ausdrücke, wie sie hier vorliegen, erst gar nicht eingesetzt werden.

   Const WiedervorlageColor As Long = &HEC2FF 'RGB(255,194,14)

   If Me.VorlageDatum <= VBA.Date() Then
      Me.txtVorlage.BackColor = WiedervorlageColor
      Me.VorlageDatum.BackColor = WiedervorlageColor
   Else
      Me.txtVorlage.BackColor = vbWhite
      Me.VorlageDatum.BackColor = vbWhite
      '... und wo wird das Rechteck unsichtbar geschaltet?
      Me.rechteckMarker.Visible = True
   End If

   '....

   Me.Filter = "Ehemalig = False AND VorlageDatum <= Date()"
   Me.FilterOn = True
Titel: Re: VBA-Filter: Datumsvergleich als Kriterium (für Wiedervorlage)
Beitrag von: Elektroschrott am Januar 05, 2018, 16:42:51
Klasse, hat geklappt, auch wenn ich auf Criteria = BuildCriteria nicht verzichten kann (Optionsgruppe).