Datagridview gibt daten nach filterung nicht aus

  • VB.NET

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

    Datagridview gibt daten nach filterung nicht aus

    Hallo zusammen,

    ich habe Folgendes Problem derzeit:

    in einer Datenbank sind diverse Einträge die ich nach einem bestimmten Kriterium filtern möchte. Folgenden Filter habe ich erstellt dazu:

    VB.NET-Quellcode

    1. ​ DGV-Perso.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    2. AkteTableAdapter.Fill(Akten_inpolDataSet.akte)
    3. emid = Label9.Text
    4. Dim x As New DataView(Akten_inpolDataSet.akte) With {
    5. .RowFilter = String.Format("emaid = '{0}'", emid)
    6. }
    7. DGV-Perso.DataSource = x


    Leider werden mit aber keine Ergebnisse angezeigt, obwohl für die ID die abgefragt wird daten vorhanden sind.

    Weis einer viell. eine Lösung für das Problem
    Der DataView ist ohne Filter nicht leer. Dataview Count: 3

    Ohne Filterung werden alle Datensätze angezeigt egal welche suchanfrage gemacht wurde:


    Mit Filter in der Abfrage werden keine Datensätze ausgegeben, obwohl die ID für den Datensatz der Angezeigt werden soll mitgegeben wird:

    Bilder
    • 2021-01-12 15_05_47-INPOL System - EMA Abfrageergebnis.png

      21,92 kB, 1.118×532, 67 mal angesehen
    • 2021-01-12 15_04_02-INPOL System - EMA Abfrageergebnis.png

      12,56 kB, 1.117×555, 65 mal angesehen

    Drachie schrieb:

    Der DataView ist ohne Filter nicht leer. Dataview Count: 3
    Und mit Filter ist x.Count 0?
    (Wir reden ja nicht von irgendeinem Dataview, sondern von genau dem Dataview, was du x genannt hast)
    Wenn dem so wäre, dass x.Count == 0, aufgrund des Filters, dann liegts wohl am Filter.

    Du kannst folgendes probieren:

    VB.NET-Quellcode

    1. Dim x As New DataView(Akten_inpolDataSet.akte) With {
    2. .RowFilter = String.Format("emaid = {0}", emid)
    3. }
    Wenns hilft bin ich halt der Wunderdoktor. Wenn du dann auch noch programmieren lernen willst, musste nachfragen, warum es half (wenn es überhaupt hilft - ist ja nur mehr oder weniger ins Blaue - weil ich kenne ja nicht dein Dataset)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Wenn ich den Filter rausnehme wird das DGV mit allen Datensätzen gefüllt.

    aber sobald ich den Filter wieder einbaue: keine Datensätze mehr.... und der Count geht auf 0, wie ich gerade sehe.


    ErfinderDesRades schrieb:


    Du kannst folgendes probieren:

    VB.NET-Quellcode

    1. Dim x As New DataView(Akten_inpolDataSet.akte) With {
    2. .RowFilter = String.Format("emaid = {0}", emid)
    3. }
    Wenns hilft bin ich halt der Wunderdoktor. Wenn du dann auch noch programmieren lernen willst, musste nachfragen, warum es half (wenn es überhaupt hilft - ist ja nur mehr oder weniger ins Blaue - weil ich kenne ja nicht dein Dataset)


    Läuft in einen System.Data.SyntaxErrorException: "Syntaxfehler: Fehlender Operand nach dem Operator '='." fehler

    ErfinderDesRades schrieb:

    dann steht in emid wohl nicht, was du denkst was darinnen steht.

    in emid steht der Wert für den anzuzeigenden Datensatz drinnen.

    Habe es jetzt gelöst bekommen. statt gleich beim Load der Form die Daten zu verarbeiten, wird das Dataview 2 sek. verzögert gefüllt und schon sind auch die datenstäze wieder da die angezeigt werden sollen.

    Drachie schrieb:

    in emid steht der Wert für den anzuzeigenden Datensatz drinnen.
    Da steht er nicht drin - das hättest du prüfen könnnen - mit Haltepunkt und Lokal-Fenster, aber scheinbar bist du nicht so dran interessiert, dir die Fertigkeiten anzueignen, die du brauchst, um dein Projekt zum Abschluss zu bringen.
    Achje - ich hab meine posts immer herum-editiert, und da habich auch den Link weggemacht zum Tut, wo du das mit Haltepunkt und Lokal-Fenster lernen könntest (wenn du wolltest).
    Also hier <- folge dem Link

    .

    Drachie schrieb:

    Habe es jetzt gelöst bekommen. statt gleich beim Load der Form die Daten zu verarbeiten, wird das Dataview 2 sek. verzögert gefüllt und schon sind auch die datenstäze wieder da die angezeigt werden sollen.
    ja, das ist plausibel. Dass in emid dann das drinne steht was du erwartest - wenn du die Daten verzögert lädtst.
    Noch eine Frage interessehalber: Welchen Filter verwendest du: .RowFilter = String.Format("emaid = {0}", emid) oder .RowFilter = String.Format("emaid = '{0}'", emid)?
    Oder ist das egal?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ErfinderDesRades schrieb:

    Da steht er nicht drin - das hättest du prüfen können - mit Haltepunkt und Lokal-Fenster, aber scheinbar bist du nicht so dran interessiert, dir die Fertigkeiten anzueignen, die du brauchst, um dein Projekt zum Abschluss zu bringen.


    Ich Arbeite immer mit Haltepunkten, da ich schon diverse male in Fehler reingelaufen bin. also ==> mittlerweile dazugelernt

    ErfinderDesRades schrieb:

    ja, das ist plausibel. Dass in emid dann das drinne steht was du erwartest - wenn du die Daten verzögert lädtst.
    Noch eine Frage interessehalber: Welchen Filter verwendest du: .RowFilter = String.Format("emaid = {0}", emid) oder .RowFilter = String.Format("emaid = '{0}'", emid)?
    Oder ist das egal?


    ich nutze .RowFilter = String.Format("emaid = '{0}", emid), da bei mir unter Strict On .RowFilter = String.Format("emaid = {0}", emid) in eine System.Data.SyntaxErrorException aufgrund eines fehlenden Operator läuft.

    Drachie schrieb:

    ich nutze .RowFilter = String.Format("emaid = '{0}", emid), da bei mir unter Strict On .RowFilter = String.Format("emaid = {0}", emid) in eine System.Data.SyntaxErrorException aufgrund eines fehlenden Operator läuft.
    Hast du das nochmal ausprobiert, jetzt, wo du die Daten verzögert lädtst?

    Weil mir ergibt die SyntaxErrorException aufgrund eines fehlenden Operator nur Sinn, wenn in emid "" steht - und das wird wohl im Form_Load so sein - so wär mir das jdfs. plausibel.