SQL Update Decimalseparator Problem

08/02/2008 - 09:45 von Peter Haus | Report spam
Hallo zusammen

Ich kann mir nicht erklàren wo das Porblem ist.

Beim Update auf die DB kommt die Fehlermeldung:
SqlException: Fehler beim Konvertieren des varchar-Datentyps in float.

Das SQL Statement wird so erstellt.
Dim sql As String = "UPDATE Semester SET AnzKursstunden='" & AnzKursstunden
& "' WHERE Semester='" & SemesterAktuell & "'"

Die Variable "AnzKursstunden" ist vom Typ Double.
In der Variable (sql) steht
"UPDATE Semester SET AnzKursstunden='17772,5' WHERE Semester='WS07'"

Wenn ich das Komma der Zahl 17772,5 mit einem Punkt ersetze, gibt es keinen
Fehler.

Das Feld "AnzKursstunden" in der Tabelle ist vom Typ float.

Wo das Problem ist, kann mir das jemand sagen,?

Grüsse an Euch
Peter



Der gesammte Codeabschnitt:
Public Shared Function SetKursstunden(ByVal SemesterAktuell As String, ByVal
AnzKursstunden As Double) As Boolean
Dim sql As String = "UPDATE Semester SET AnzKursstunden='" &
AnzKursstunden & "' WHERE Semester='" & SemesterAktuell & "'"
Dim comSQL As New SqlClient.SqlCommand
Dim con As New SqlClient.SqlConnection
con.ConnectionString = DatabaseLogic.cn
comSQL.CommandText = sql
comSQL.Connection = con
con.Open()
comSQL.ExecuteNonQuery()
con.Close()
 

Lesen sie die antworten

#1 Melanie Kaufmann
08/02/2008 - 10:03 | Warnen spam
Beim Update auf die DB kommt die Fehlermeldung:
SqlException: Fehler beim Konvertieren des varchar-Datentyps in float.

Das SQL Statement wird so erstellt.
Dim sql As String = "UPDATE Semester SET AnzKursstunden='" &
AnzKursstunden
& "' WHERE Semester='" & SemesterAktuell & "'"

Die Variable "AnzKursstunden" ist vom Typ Double.
In der Variable (sql) steht
"UPDATE Semester SET AnzKursstunden='17772,5' WHERE Semester='WS07'"

Wenn ich das Komma der Zahl 17772,5 mit einem Punkt ersetze, gibt es
keinen
Fehler.

Das Feld "AnzKursstunden" in der Tabelle ist vom Typ float.

Wo das Problem ist, kann mir das jemand sagen,?



Das hast du doch schon selbst gefunden!
Der SQL Server erwartet offensichtlich einen Punkt als Dezimaltrennteichen.

BTW:
Fehler dieser Art vermeidest du durch die Verwendung von SQLParametern.

Gruß
MK

Ähnliche fragen