Suche in Datagridview

  • VB.NET
  • .NET 4.0

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Neu

    Shadow336 schrieb:

    IDMitarbeiterSchlüsselAbgeholtAbgegeben
    1Testperson 1Lager 1Ja
    2Testperson 2Lager 2ja
    3Testperson 1Lager 1
    Ja
    4




    Wie aus Tabelle zu erkennen ist, hatte Testperson 2 den Schlüssel für Lager 2 abgeholt, aber noch nicht abgegeben. So, Wenn ich Deinen Code ausführe, dann werden auch abgeholte Schlüssel angezeigt, die schon wieder zurückgegeben sind! Ich möchte mir aber lediglich die Schlüssel anzeigen lassen, die noch unterwegs sind!

    For Each row As DataRow in DataTable.Rows
    MessageBox.Show(row("Abgeholt").ToString)
    Next


    Lade nur die Datensätze ins Grid, die Abgeholt sind. Oder mache in der Schleife eine Prüfung "Wenn Abgeholt dann".
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Neu

    @VB1963 & @Shadow336: Existiert in dem Projekt denn ein DataSet, in das die Daten kommen und mit dem das DGV verbunden ist?
    Thema LINQ:
    Das Folgende setzt zwar voraus, dass ein typisiertes DataSet mit der genannten DataTable existiert, aber die Namen lassen sich ja anpassen. Und eben, dass es eine Tabellenspalte namens "Abgeholt" vom Typ System.Boolean gibt.
    Dim TestpersonenDieIhrenSchluesselNochNichtAbgegebenHaben = DeinDataSet.DeineDataTable.Where(Function(a) a.Abgeholt)
    man könnte auch schreiben: .Where(Function(a) a.Abgeholt = True); ist zwar redudant, aber ggf. besser zu lesen/verstehen.

    Das ergibt eine Auflistung von allen Tabellenzeilen (= allen "Datensätzen" bestehend aus ID, Mitarbeiter, Abgeholt und Abgegeben), in denen ausschließlich "Abgeholt" auf True gesetzt ist.
    • meine wichtigste Programmiererkenntnis: Mühsam erhängt sich das Eichhörnchen.
    • eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    • »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder, wenn es kein Besteck mehr gibt, zumindest Glasnudeln.«

    Neu

    Ein DataTable ist kein DataGrid. Hier mal ein kleines Demo Projekt, evtl. hilf dir das weiter.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim dt As DataTable
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. dtg_schluessel.DataSource = GetDataFromDataBase()
    6. For Each row As DataRow In dt.Rows
    7. If (Convert.ToBoolean(row("Abgegeben"))) Then
    8. MessageBox.Show("Schlüssel für " & row("Schlüssel").ToString & " wurde abgegeben von " & row("Mitarbeiter").ToString)
    9. End If
    10. Next
    11. End Sub
    12. Private Function GetDataFromDataBase() As DataTable
    13. 'Daten aus der Datenbank in ein DataTable laden
    14. 'Hier von Hand da keine DB zur Hand
    15. dt = New DataTable("Schlüssel")
    16. dt.Columns.Add(New DataColumn("ID", GetType(Integer)))
    17. dt.Columns.Add(New DataColumn("Mitarbeiter", GetType(String)))
    18. dt.Columns.Add(New DataColumn("Schlüssel", GetType(String)))
    19. dt.Columns.Add(New DataColumn("Abgeholt", GetType(Boolean)))
    20. dt.Columns.Add(New DataColumn("Abgegeben", GetType(Boolean)))
    21. dt.Rows.Add(1, "Max Mustermann", "Lager1", True, False)
    22. dt.Rows.Add(2, "Petra Müller", "Lager2", False, True)
    23. dt.Rows.Add(3, "Frank Becker", "Lager1", True, True)
    24. Return dt
    25. End Function
    26. End Class

    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen