DataBInding und filtern

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von toto.

    DataBInding und filtern

    Liebe Gemeinde,
    versuche ein DGV zu filtern ohne Erfolg.
    Hier mein Code:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim bs As New BindingSource
    3. Dim tbl As DataTable
    4. 'Dim cmd As OleDbCommand
    5. 'Dim datatable As DataTable
    6. Dim path As String
    7. path = "C:\Users\a.mazza\Desktop\Lampen Konfigurator\Kunden ECO.xlsx"
    8. Using connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";Extended Properties=Excel 12.0;")
    9. connection.Open()
    10. Using DataAdapter = New OleDbDataAdapter("Select * From [Tabelle1$]", connection)
    11. tbl = New DataTable("Tabelle1")
    12. bs.DataSource = tbl
    13. DataAdapter.Fill(tbl)
    14. DGV1.DataSource = bs
    15. End Using
    16. End Using
    17. End Sub
    18. Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
    19. bs.Filter = "PLZ Like '" & TextBox1.Text & "'"
    20. End Sub


    Konnte sein das hier der Fehler ist?

    VB.NET-Quellcode

    1. bs.Filter = "PLZ Like '" & TextBox1.Text & "'"


    Danke im Voraus
    toto
    lg toto
    Hallo VB1963
    filtert nicht.
    ich werde meine DB neu aufsetzen, ich glaube da liegt der Hund begraben.
    Da ich nicht so viel Erfahrung mit DB habe glaube ich Fehler gemacht zu haben bei den Tabellen.

    Danke
    lg toto

    toto schrieb:

    ich werde meine DB neu aufsetzen, ich glaube da liegt der Hund begraben.

    Stop! Deine DB kann nix dafür, dass deine BindingSource sich nicht filtern lässt. Mir ist noch eingefallen:

    Deine PLZ wird ja richtigerweise Integer sein. Integer kannst nicht mit Like durchwühlen, also vorher convertieren. Probierma:

    bs.Filter = $"Convert(PLZ, System.String) LIKE *{TextBox1.Text}*"
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    bei :

    VB.NET-Quellcode

    1. "PLZ Like '" & TextBox1.Text & "'"

    Fehler: siehe Bild

    BeimCode von @taigl:
    $"Convert(PLZ, System.String) LIKE *{TextBox1.Text}*'"
    Ungültiges Zeichen

    Im DataSet Tabelle habe ich PLZ auf int.32

    @Ich habe inszwischen den Fehler beim BindingSource1
    soll heißen: KundenBindingSource

    So wenn ich jetzt auf "Ort" den Filter umstelle, mit dem Code von tragl funzt, die Filterung und das DGV wieder füllen beim löschen, Dank "*"
    Mache ich den Dollar Zeichen weg und auf PLZ umstelle : Fehler: fehlender Operand vor *, hinzugefügt, fehlender Operand nach *.
    Bilder
    • 1.JPG

      32,82 kB, 454×254, 61 mal angesehen
    lg toto

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

    das Dollarzeichen muss bleiben für die String-Interpolation. Kannst das auch so machen wie in deinem Post:

    bs.Filter = "Convert(PLZ, System.String) Like *" & TextBox1.Text & "*" ich find die Strings mit Interpolation schöner, kürzer und leserlicher

    Edit: für Double gilt das Gleiche -> Convert(xy, System.String)
    erst dann lässt sich der Like-Operator verwenden
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Hallo tragl,
    wenn ich so mache dann: siehe Bild

    Ich stelle den Filter auf Ort um, schade

    LG
    und danke an alle
    Bilder
    • 1.JPG

      78 kB, 1.124×351, 60 mal angesehen
    lg toto

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

    tragl schrieb:

    ich find die Strings mit Interpolation schöner, kürzer und leserlicher
    Klappt aber leider erst mit Visual Basic Version >= 14. Mit nem alten Visual Studio dürfte das scheitern.
    @toto: Haste es statt mit den * auch mal wieder mit den ' probiert: bs.Filter = "Convert(PLZ, System.String) Like '" & TextBox1.Text & "'"
    Wieso ist ne PLZ vom Typ Double? Sollte String sein.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo Vaporized,
    [vbnetbs.Filter = "Convert(PLZ, System.String) Like '" & TextBox1.Text & "'"][/vbnet]
    Es funzt.
    Aber, mit den Sternen hat sich die DB beim löschen in der TextBox wieder gefüllt

    Habe nachgeschaut in die Eigenschaften : Tabelle > PLZ > System.String.
    Frag mich nicht warum aufeinmal Double.
    lg toto