Konverierung Sring in Double für DB

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Konverierung Sring in Double für DB

    Hallo zusammen,
    ich verzweifel an mir gerade selbst.

    Das Datenbank Feld in der accdb ist Doube bei den spez_gew.
    Hier möchte ich ein Updae machen. Volle Zahlen gehen.

    bei Konveriterung von Single auf text gab es keine Problem nur bei Double.

    Ich will einfach von einen Text Feld wo der Wert in Koma einegebn wird z.B.
    0,78 in die DB Schaufeln wo das DB feld Double ist. Hat jemand eine kleine Idee?


    Was habe ich schon alles gemacht?
    diese drei Varianten habe ich getetstet

    Dim spez_gew As Double = CType(txt_spez_gew.Text, Double)
    Dim spez_gew As Double = Val(txt_spez_gew.Text.Replace(",", "."))
    Dim spez_gew as Double = Cdbl(txt_spez_gew.Text)

    VB.NET-Quellcode

    1. Private Sub cmd_speichern_Click(sender As Object, e As EventArgs) Handles cmd_speichern.Click
    2. Dim DB As String
    3. 'Var fuer Datenbank
    4. Dim con As New OleDbConnection
    5. Dim cmd As New OleDbCommand
    6. 'Variable bei Formular deklarieren
    7. 'Datenbank Test
    8. DB = "C:\DB\"
    9. Dim datum_von As Date
    10. Dim tag_von As String
    11. Dim mon_von As String
    12. Dim jahr_von As String
    13. Dim datum_bis As Date
    14. Dim tag_bis As String
    15. Dim mon_bis As String
    16. Dim jahr_bis As String
    17. Dim Ergebnis As Integer
    18. Dim Ergebnis2 As Integer
    19. datum_von = DateTP_von.Value
    20. tag_von = datum_von.ToString("dd")
    21. mon_von = datum_von.ToString("MM")
    22. jahr_von = datum_von.ToString("yyyy")
    23. datum_bis = DateTP_bis.Value
    24. tag_bis = datum_bis.ToString("dd")
    25. mon_bis = datum_bis.ToString("MM")
    26. jahr_bis = datum_bis.ToString("yyyy")
    27. Dim produkt As Integer
    28. ' Dim spez_gew As Double = CType(txt_spez_gew.Text, Double)
    29. Dim spez_gew As Double = Val(txt_spez_gew.Text.Replace(",", "."))
    30. produkt = 103
    31. Select Case MsgBox("Wollen sie Daten die dbminas ==> tabepreis ", MsgBoxStyle.YesNo, "caption")
    32. Case MsgBoxResult.Yes
    33. con.ConnectionString =
    34. "Provider=Microsoft.ACE.OLEDB.12.0;" &
    35. "Data Source=" & DB & "dbminas.accdb"
    36. cmd.Connection = con
    37. cmd.CommandText = "Update tabepreis Set spez_gew = " & spez_gew &
    38. " where (monat between " & CInt(mon_von) & " and " & CInt(mon_bis) & ") and (tag between " & CInt(tag_von) & " And " & CInt(tag_bis) &
    39. ") And (jahr between " & CInt(jahr_von) & " and " & CInt(jahr_bis) & ") And (produkt = " & CInt(produkt) & ")"
    40. Try
    41. con.Open()
    42. Ergebnis = cmd.ExecuteNonQuery()
    43. MsgBox("Es wurde " & Ergebnis & " x Preise geändert.")
    44. Catch ex As Exception
    45. MessageBox.Show(ex.Message)
    46. End Try
    47. con.Close()
    48. Case MsgBoxResult.No
    49. Exit Sub
    50. End Select
    Hi,
    ​Double.Parse() konvertiert dir nen String zu nem Double. Falls das Format falsch ist gibt's ne Exception. Double.TryParse() gibt dir einen Boolean zurück obs geklappt hat. Jetzt kannst du wahrscheinlich auch noch eine CultureInfo angeben. Ist dein System deutsch benutzt du by Default ein Komma, ist es englisch benutzt du den Punkt. Bei deiner Aufgabenstellung müsste Nichts ersetzt werden.

    jnpanzer schrieb:

    VB.NET-Quellcode

    1. tag_von = datum_von.ToString("dd")
    datum_von ist ein DateTime, behandle es auch so.
    Da kannst Du Dir diesen Zinnober sparen:

    jnpanzer schrieb:

    VB.NET-Quellcode

    1. CInt(mon_von)
    Sieh Dir mal String.Format(...) an:
    msdn.microsoft.com/de-de/libra…ing.format(v=vs.110).aspx
    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!