Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Filter für Unterformular

Begonnen von Sebastian5, Oktober 23, 2024, 18:36:53

⏪ vorheriges - nächstes ⏩

Sebastian5

Hallo zusammen,

ich habe zu dem Thema Filter noch einen Nachtrag:

zusätzlich zu den "normalen" Filterkriterien, die mit dem Code von Knobbi38 super funktionieren, würde ich jetzt gerne noch ein Filterkriterium einbauen, bei dem innerhalb des Datensatzes "Vertragsdatum" nach einem Datumsbereich gefiltert werden kann. Dazu habe ich zwei Textfelder erstellt "txtVon" und "txtBis". Ich bekomme aber folgende Fehlermeldung:
"Laufzeitfehler '3709': Der Suchschlüssel wurde in keinem Datensatz gefunden."

So sieht mein Code bisher aus:
Option Compare Database



Private Sub FilterAuftragsbestand_aktualisieren_Click()

  theFilter = ""
 
  If Me!ctlProjekt <> "" Then
      theFilter = " AND [ID_Projekte] = " & Me!ctlProjekt
  End If
 
  If Me!ctlProjektstatus <> "" Then
      theFilter = theFilter & " AND [ID_Projektstatus] = " & Me!ctlProjektstatus & ""
  End If
 
 
  theFilter = theFilter & " And [Vertragsdatum] between " & Format(Nz(Me!txtVon, Date), "\#dd.mm.yyyy\#") & " and " & Format(Nz(Me!txtBis, Date), "\#dd.mm.yyyy\#")


 
  theFilter = Mid$(theFilter, 6)
 
'    MsgBox thefilter
  Me.Filter = theFilter
  Me.FilterOn = (theFilter <> "")

End Sub

Bis zu der Zeile Vertragsdatum gibt es keine Probleme. Weiß jemand Rat was meine Fehlermeldung zu bedeuten hat bzw. was ich ändern sollte?

Viele Grüße
Sebastian



Knobbi38

#16
Möglicherweise sind nicht alle Felder des Filters in der Datenherkunft verfügbar. Überprüfe den zusammengesetzten Filterausdruck mal in der QBE.

Wenn du eine Datumsangabe mit von/bis filtern möchtest, empfiehlt es sich, als Filter nicht den between Operator zu verwenden, sondern den Datumsfilter so zu generieren:
  Const FLT_EXP As String = "[Vertragsdatum]>={0} AND  [Vertragsdatum]<{1}"
  Const FMT_SQLDATE As String = "\#mm\/dd\/yyyy\#"

  ' Build Filterstring
  strStart = Format(datevalue(txtVon), FMT_SQLDATE)
  strEnd = Format(DateAdd("d",1,txtBis), FMT_SQLDATE)
  strFilter = Replace(FLT_EXP, "{0}", strStart)
  strFilter = Replace(strFilter, "{1}", strEnd)

Gruß
Knobbi38