Die Eingabezeichenfolge hat das falsche Format.

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von TiTo.

    Die Eingabezeichenfolge hat das falsche Format.

    Hallo liebe Community,

    ich habe ein Problem mit meiner Anwendung.
    Und zwar wirft er mir aus, dass die Eingabezeichenfolge das falsche Format hätte.

    Und zwar meint er, hier wäre ein Fehler:
    Dim GesamtA As TimeSpan = TimeSpan.Parse(SQLreader2(7).ToString)

    Vorher hat das Programm funktioniert, und jetzt aufeinmal taucht dieser Fehler auf...

    VB.NET-Quellcode

    1. command.Connection = connect
    2. command.CommandText = "SELECT zeiten.user_id, user.name, zeiten.tag, zeiten.datum, zeiten.beginn, zeiten.ende, zeiten.pause, zeiten.dauer, zeiten.sonstiges FROM zeiten, user WHERE zeiten.user_id = user.id AND strftime('%m', zeiten.datum) = '" & (monat_combo.SelectedIndex + 1) & "' AND zeiten.user_id = '" + user_id.Text + "'"
    3. Dim SQLreader2 As SQLiteDataReader = command.ExecuteReader()
    4. While SQLreader2.Read()
    5. Dim Datum As String = SQLreader2(3).ToString
    6. Dim Split() = Datum.Split("-")
    7. Dim Tag As String = Split(2)
    8. Dim Monat As String = Split(1)
    9. Dim Jahr As String = Split(0)
    10. Dim GesamtA As TimeSpan = TimeSpan.Parse(SQLreader2(7).ToString)
    11. Dim GesamtS As DateTime
    12. GesamtS = GesamtS.Add(GesamtA)
    13. Main.lvwAddItem(monat_lv, SQLreader2(1).ToString, SQLreader2(2).ToString, Tag & "." & Monat & "." & Jahr, SQLreader2(4).ToString, SQLreader2(5).ToString, SQLreader2(6).ToString, SQLreader2(7).ToString, "aa", SQLreader2(8).ToString)
    14. End While


    Edit by nikeee13: Die Farbe Rot ist der Moderation vorbehalten. Colorierung angepasst.

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

    Was sagt

    VB.NET-Quellcode

    1. MessageBox.Show(SQLreader2(7).ToString)
    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!
    Habe den Fehler gefunden, da wurde irgendwo eine Zeit eingetragen wie "00:40:" eingetragen...
    Da muss ich den Fehler suchen.

    Ich danke euch hiefür :)

    Ich habe aber ein weiteres Problem.
    Ich habe gemerkt dass er die Gesamt Stunden nicht korrekt zusammen rechnet.
    Wenn man über 24h kommt, dann beginnt er mit einem Datum und zählt dann weiter.

    Hab die Frage falsch verstanden und sehe was du meinst.

    Ich hatte das immer in Industrieminuten umgerechnet(also 100 Min Ind = 60min Real) da kannst dann super summen bilden.

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

    TiTo schrieb:

    Ich habe gemerkt dass er die Gesamt Stunden nicht korrekt zusammen rechnet.
    Welchen Datentyp verwendest Du zum Summieren?
    Es gibt da TimeSpan.TotalHours:

    VB.NET-Quellcode

    1. Dim ts As New TimeSpan(40, 20, 20, 20)
    2. ts = ts.Add(New TimeSpan(20, 30, 40, 50))
    3. Dim t1 = ts.TotalHours.ToString
    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!
    @tulla: Wie meinst du das, jetzt verstehe ich dich nicht :D

    @RodFromGermany:

    Ich rechne das so zusammen:

    VB.NET-Quellcode

    1. Dim GesamtA As TimeSpan = TimeSpan.Parse(SQLreader2(7).ToString)
    2. Dim GesamtS As DateTime
    3. GesamtS = GesamtS.Add(GesamtA)


    Also laut deinem kurzen Script, soll ich mein Ausgabewert Splitten, in Stunden und Minuten.
    Dann nehme ich die Zeiten und addiere diese zusammen.

    VB.NET-Quellcode

    1. Dim Uhrzeit As String = SQLreader2(7).ToString
    2. Dim Split() = Uhrzeit.Split(":")
    3. Dim Stunden As String = Split(0)
    4. Dim Minuten As String = Split(1)
    5. Dim ts As New TimeSpan(Stunden, Minuten, 0, 0)
    6. ts = ts.Add(New TimeSpan(Stunden, Minuten, 0, 0))
    7. Dim t1 = ts.TotalHours.ToString


    Wäre das so richtig?

    TiTo schrieb:

    VB.NET-Quellcode

    1. Dim GesamtS As DateTime
    ist falsch, Du musst auf einem TimeSpan zusammenrechnen.
    DateTime plus / minus TimeSpan ist wieder ein Datum (Zeitpunkt), nicht aber eine Dauer.
    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!

    TiTo schrieb:

    Mit TotalHours gibt er hässlige Kommazahlen aus.
    TotalHours ist ein Double, dass Du entsprechend formatieren musst, z.B. so:

    VB.NET-Quellcode

    1. Dim txt = String.Format("{0:00}:{1:00}:{2:00},{3}", CInt(ts.TotalHours), ts.Minutes, ts.Seconds, ts.Milliseconds)
    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!