Probleme mit Datagridview und Datumsangaben

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Nookie.

    Probleme mit Datagridview und Datumsangaben

    Hallo zusammen,

    ich bin neu hier und absoluter vb Neuling.
    Ich versuche mich derzeit an einer Windows Forms Applikation in vb.net. Hier verwende ich u.a. ein Datagridview mit Daten aus einer Access Datenbank.
    Die 3. Spalte beinhaltet hierbei Datumsangaben.
    Nun möchte ich folgende Aufgabe lösen: ich will diese 3. Spalte durchgehen und auslesen, in welcher Zelle hierbei ein Datum steht.

    Aktuell versuche ich das mit folgendem Code:

    VB.NET-Quellcode

    1. Dim Anzahl As Integer
    2. Anzahl = 0
    3. For i = 0 To DataGridView1.RowCount - 1
    4. If DataGridView1.Item(3, i).Value <> "" Then
    5. Anzahl = Anzahl + 1
    6. End If
    7. Next
    8. MsgBox(Anzahl)


    Leider erhalte ich auf diesem Weg die Fehlermeldung "Ungültige Konvertierung von der Zeichenfolge in Typ Date".
    Habe auch schon einiges recherchiert und ausprobiert, aber leider bekomme ich es nicht hin.

    Problem ist auch, dass definitiv nicht in jedem Feld ein Datum stehen muss, da dies oftmals schlicht nicht vorhanden ist.

    Hat jemand Ideen bzw. kann mir helfen?

    Danke im Voraus!

    Verschoben. ~Thunderbolt

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

    Versuchs mal mit

    DataGridView1.Item(3, i).Value IsNot Nothing
    "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
    Willkommen im Forum.
    Fang bitte mal mit Option Strict On an. Dann wird klar, dass If DataGridView1.Item(3, i).Value <> "" Then nicht passt, da Value vom Typ Object ist. Und da Du in Deinem DGV in jener Spalte Datumsangaben, also Werte vom Typ Date drin hast, ist klar, dass ein Vergleich zwischen einem Leerstring und einem Datum standardmäßig nicht existiert. Daher: Wie mrMo schrieb.
    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.
    Danke euch beiden! Das hat mir schon mal weitergeholfen, da der Fehler nun nicht mehr angezeigt wird.
    Es wird nun auch gezählt, leider nicht ganz korrekt.

    Aktuell habe ich 9 Zeilen und er wirft mir nach diesem Code (wie von mrMo geschrieben) die Zahl "9" am Ende aus.
    Es sind jedoch lediglich 2 Zellen mit einer Datumsangabe versehen, der Rest ist leer.
    Also eigentlich sollte er eine "2" auswerfen.

    Könnt ihr mir hierzu vielleicht nochmal helfen? :)
    Und was steht dann in den anderen 7 Zeilen? Welchen Datentyp hat diese Spalte denn? Das wird doch hoffenlich nicht auf Text/String/varchar stehen sondern auf Datum/Date...

    Ich würde, da der Wert der Spalte wohl nicht immer 100% passt, einfach versuchen den Inhalt der Zelle in ein Datum zu konvertieren. Wenns klappt kannst deinen Zähler erhöhen. Damit:

    docs.microsoft.com/en-us/dotne…_String_System_DateTime__
    "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
    @Nookie Ebenfalls: Willkommen im Forum. :thumbup:
    Wenn die Daten aus einer Access-DB kommen, lies sie doch einfach in eine DataTable ein und weise diese dem DGV als DataSource zu.
    Da musst Du Dich bestenfalls um die Konvertierung von Access-Datum/Zeit nach .NET-DateTime kümmern, damit bist Du im Prinzip fertig.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke euch auf jeden Fall für die Hilfe, das mit tryparse hatte sogar halbwegs funktioniert.
    Habe es jetzt aber auf Basis des ursprünglichen Weges wie folgt gelöst:

    if datagridview1.item(3,i).value isNot dbNull.Value (anstatt isNot nothing)

    Nun zählt er einwandfrei :)

    Danke nochmal!!!