DataGridView nach bestimmter value abfragen

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Silvergreen.

    DataGridView nach bestimmter value abfragen

    Moin Moin zusammen,

    ich bin noch nicht lange am programmieren, aber ich habe spaß daran gefunden und möchte mich stehts verbessern. In meiner Anwendung, die auch soweit funktioniert, gibt es ein Datagridview mit 3 Spalten, 1. Code, 2. Status, 3. Lock. In dem DGV werden Codes angezeigt die vorher hinzugefügt wurden, von denen kann der Lock-Status auf true oder false geändert werden. Die spalte status wird erst dann verändert, wenn der code aktiv ist oder benutzt wurde. Neben dem DGV gibt es eine txtbox in der angezeigt werden wie viele code gespeichert wurden, bzw im dgv angezeigt werden. Daunter gibt es noch eine txtbox in der steht, wie viele codes noch unbenutzt sind. Also Status = neu. Jetzt müsste ich wissen wie ich das abfrage. Also ob in spalte 2 neu steht. Und es soll in der txt angezeigt werden wie viele gezählt wurden. Bei weiteren Fragen stehe ich euch natürlich gerne zur verfügung ;D

    Mfg Silvergreen
    ?(
    ich finde deine Beschreibung hat zuviele Komponenten, als dass man sich ein Bild davon machen könnte:
    Code, Status, Lock, und Code kann aktiv/inakiv, gespeichert oder benutzt sein. Und status kann neu sein, aber es gibt auch irgendetwas, was gezählt wird.

    Ich sehe 2 Möglichkeiten
    Entweder du zippst dein Projekt, und hängst es an - vlt. wird man aus dem Code selbst schlauer. Anleitung zum Anhängen:


    Oder du erzählst, wozu dein Proggi eiglich gut sein soll.
    Willst du iwas wie ein PIN/TAN - Verfahren, wie ichs aussm Online-Banking kenne, programmieren?



    Wie dem auch sei - ein Datagridview ist nicht dazu da, dass Abfragen daran gestellt werden.
    DGV ist auf Databinding hin designed, und wenn du es an ein typisiertes Dataset bindest, kannst du erstaunlich leistungsfähige Anwendungen erstellen.
    Aber die Abfragen gehen nicht ans DGV, sondern die gehen ans typisierte Dataset.
    Kleiner Einblick in die Technologie: vier Views-Videos
    Jo, das ist genau, wie man es nicht machen sollte. Und funktioniert nur unter Option strict Off, also für Leute, die nicht lernen werden, einen String von einem Integer zu unterscheiden.

    Ein Beispiel, wie man es machen sollte kann ich nicht geben - vmtl. würde ein Ausdruck in einer berechneten Spalte genügen, sodass die Werte sich selbst aktualisieren, ganz ohne iwelchen Code schreiben zu müssen.
    Er wollte nur wissen wie er einen wert auslesen kann, ich könnte hier jetzt auch einen irre langen code schreiben, jedoch wissen wir nicht ob er es jetzt schon versteht, deshalb so simple wie möglich und ohne Ihn mit "Option Strict On" zu nerven. Er hat sich heute erst neu angemeldet. Und nur jemanden zu tadeln was er falsch macht ist nicht der richtige weg! Jemanden darauf aufmerksam zu machen ja.
    Ich wüsste nicht, dassich ihn getadelt hätte. Dafür möchte ich mich also nicht von dir tadeln lassen.

    Dich täte ich vlt. "tadeln" - wie du es nennst - dass du ihm sone Strict Off - Grütze vorführst.
    Weil er sagt ja in seim 1. Satz, er möchte sich stets verbessern, und nicht verschlechtern.

    Aber ich bin jetzt raus ausse Diskussion, weil fahr in Urlaub :D

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

    Danke erstmal für die Antworten... Ja unter umständen habe ich es zu sehr versucht zu beschreiben, naja wie auch immer. Die Codes sind Fritz-Box Surf codes, die per buttonklick eingelöst werden. Das programm soll diese eigentlich nur ein wening verwalten. Ich wollte halt erstmal klein anfangen ;). Wie ich einen Wert aus einer Zeile auslese weiß ich bereits, meine Projekt/Programm ist ja auch schon so gut wie fertig. Nur dort zerbreche ich mir meinen Kopf.
    Das Programm mus eigentlich nur jede Zeile durchgehen und zählen wie viele zeilen es gibt wo ,,neu" steht. Mehr ist das nicht. Nur irgendwie komm ich da nicht drauf.

    Vollzitate entfernt. ~Thunderbolt
    ?(

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

    tja, ich jetz kein zeit, sonst hätte ich dir in 1/2h eine Lösung vorgelegt als saubere Ausgangsbasis.
    Also mach doch mittm Rattnfänger-Code weiter (was bleibt dir übrig) - nur bitte: Option Strict On
    Anleitung zu Strict On:
    Visual Studio - Empfohlene Einstellungen

    Wenn nächste Woche immer noch Interesse besteht, dich zu verbessern, kann ich meine Lösung dann ja nachreichen.



    Mal Nebenfrage: Besuchst du eiglich die Links, die ich dir gebe?
    Es sind inzwischen drei, und jeder könnte höchst wichtig für dich sein.
    Aber kommt ühaupt kein Feedback zu... :S
    ha, ich würde jetzt sagen nutz einen rowfilter, wenn du ein Dataset genutz hättest aber so, musst du es manuell machen.

    also eine For Each schleife.

    VB.NET-Quellcode

    1. dim i as integer
    2. for each row as Datarow in me.DGV.rows
    3. if row(Columnindex oder ColumnName) = "neu" then
    4. i = i+1 end if
    5. next
    6. messagebox.show("Neue zeilen" & i.tostring)


    Ich weiß jetzt leider nicht ob es eine "select" Anweisung im DGV gibt, hier währe @ErfinderDesRades wieder jemand der mehr weis als ich. Meine Version ist Quick&Dirty :-).

    ErfinderDesRades schrieb:

    Mal Nebenfrage: Besuchst du eiglich die Links, die ich dir gebe?
    Da ich heute früh zu einem Geburtstag musste hatte ich noch keine möglichkeit mir die Links anzuschauen, werde ich selbstverständlich nachholen. ;D

    @Rattenfänger
    Leider bekomme ich einen Fehler nach der 2ten Zeile

    Quellcode

    1. System.InvalidCastException: "Das Objekt des Typs "System.Windows.Forms.DataGridViewRow" kann nicht in Typ "System.Data.DataRow" umgewandelt werden."


    Vollzitate entfernt. ~Thunderbolt
    ?(

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Thunderbolt“ ()

    Ja - das Gewurstel im Datagridview, um dort irgendwie an die Daten ran zu kommen, wird jetzt immer schlimmer und umständlicher...
    Du solltest dir die Links vom @ErfinderDesRades jetzt wirklich zu Herzen nehmen, weil dort liegt der Weg zur Lösung...
    Trenne die GUI von den Daten, weil das DGV sollte nur zur Bedienung der Daten verwendet werden!
    @Silvergreen Bitte zitiere ab sofort sinnvoll. Komplette Zitate des Postings über deinem sind sehr sinnfrei und laut unseren Regeln auch nicht erlaubt.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Danke für den Hinweis, ich werde das nächste mal darauf achten



    Moin Moin,
    ich habe mein Problem eben gelöst, trotzalledem bin ich euch dankbar und die Links habe ich mir natürlich auch angesehen.
    Falls die Lösung benötigt wird:

    Quellcode

    1. Public Function codeszaehlen() As Integer
    2. If textbox_unbenutzecodes.Text <= "0" Then
    3. textbox_unbenutzecodes.Text = "0"
    4. End If
    5. For a As Integer = 0 To datagridview_codes.Rows.Count - 1
    6. If datagridview_codes.Rows(a).Cells(1).Value = "neu" Then
    7. textbox_unbenutzecodes.Text = a
    8. If datagridview_codes.CurrentRow.Cells(1).Value = "neu" Then
    9. textbox_unbenutzecodes.Text += 1
    10. End If
    11. End If
    12. Next
    13. End Function
    14. End If
    15. Next


    Vollzitat entfernt! Beiträge zusammengefügt. ~Thunderbolt
    ?(

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