BindingSource nach Texten und Datum filtern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    BindingSource nach Texten und Datum filtern

    Hi,

    ich benutze die grandiose FilterX-Erweiterung aus den Helferleins von @ErfinderDesRades. Nun habe ich in meiner BindingSource Textspalten und ein Datum. Ich habe ein Textfeld tbSuche, welches an den Filter übergeben wird (.TextChanged).
    Ich möchte in zwei Textspalten, aber auch nach einem Datum (stell dir vor, es ist ein String) filtern. Wenn man also 1968 eingibt, sollen alle in dem Jahr geborenen erscheinen, bei Eingabe von Oliver, alle Olivers.

    So einfach geht es leider nicht:
    ICaBS.FilterX("Name like %?% or Bemerkung like %?% or Geburtsdatum.totext like %?% ", tbSuche.Text, tbSuche.Text, tbSuche.Text)

    So schon gar nicht, da Datum und like nicht zusammen funktionieren:
    ICaBS.FilterX("Name like %?% or Bemerkung like %?% or Geburtsdatum like %?% ", tbSuche.Text, tbSuche.Text, tbSuche.Text)

    Wie könnte es gehen?
    Danke für Tipps.
    oha! Da musste dich über die Syntax berechneter Spalten sachkundig machen - da gibts glaub auch Typumwandlung und begrenzte String-Operationen.

    Aber ich bin jetzt irritiert

    OliverSte schrieb:

    Ne,...
    bedeutet das etwa: Ne, der Datentyp der DataColumn ist nicht Date?
    Das wäre ja Designfehler.

    Und ansonsten benutzt man mit Datumse, um Zeit-Bereiche abzustecken - ach guck - folgendes fund ich im FileHeader der FilterX-Extension:

    VB.NET-Quellcode

    1. bs.FilterX(True, "Datum >= ? And ? >= Datum", dtpVon.Value, dtpBis.Value) erzeugt den Filter:
    2. bs.Filter = "Datum >= #11/9/1938# And #11/9/1989# >= Datum"
    also müsstest du 2 Datumwerte bereitstellen - wie du das zuverlässig extrahierst aus einer Textbox ist deine Sache
    @ErfinderDesRades
    Column Expressions, ja klar 8o
    So habe ich nebenbei gleich noch ein ganz anderes Problem gelöst ^^ (count(Child.feldname)) .

    Danke für den Schubser :thumbsup:

    Der Geburtstag ist natürlich vom Typ Datum, das hättest du aus der Fragestellung leicht ableiten können ("da Datum und like nicht zusammen funktionieren").
    Der Tipp mit dem Datumbereich ist sehr schön, doch wenn man nun nur eine Dekade benötigt, möchte man ja nur Jahre wählen, der Datumpicker ist dafür n büschen überkandidelt. Gibt es auch einen JahrPicker?

    Die Expression in der neuen Spalte "GeburtsdatumText" lautet: Convert(Geburtsdatum, 'System.String')
    Darauf kann der Filter mit like %?% arbeiten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „OliverSte“ ()