Einzelnen Beitrag anzeigen

Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#6

AW: Interne Umwandlung von String zu Float?

  Alt 29. Jun 2010, 13:17
@angos:
Zitat:
"Das liegt daran, dass StrToFloat in den Wert mit Komma zurückgibt, das DBMS aber einen Punkt als Trennzeichen verlangt."
Das habe ich mir schon gedacht.
Zitat:
Du musst also nur das Komma durch den Punkt ersetzen.
Das habe ich jetzt gemacht mit der "Stringbearbeitung", einfach nach dem Komma und gesucht, und dann die Prozeduren DELETE und INSERT benutzt. Das klappt, danke!


@DeddyH:
Zitat:
Ein Float ist ein Float, da gibt es keinen Punkt und kein Komma. Wie sieht denn das Insert-Statement aus?
Mhm, da scheine ich deine ersten Satz misszuverstehen: Float = Gleitkommawert, also zwangsläufig mit Punkt und/oder Komma. Insert-Statement:

@hoika:
Zitat:
du darfst den Float-Wert nicht per AsString übergeben,
sondern als AsFloat.

D.h. Parameter benutzen.
Parameter benutze ich natürlich, mein SQL-String sieht gekürzt so aus:
Sql := 'UPDATE auftraggeber SET ... Honorarsatz=:12 ... WHERE AuftraggeberID= :ID'; Und die Parameter-Zuweisung so:
AdoQuery3.Parameters.ParamByName('12').Value := DBText12.Text; Ich glaube, man kann kritisieren, dass ich als Parameter Zahlen verwende, aber ich habe auf meiner Form 14 DBEdits, es werden relativ viele Daten erfasst. Dies gestalte ich aber alles mit Schleifen, die Datenerfassung so:
for i := 2 to Max do Texts[i] := (FindComponent('DBEdit' + IntToStr(i)) as TDBEdit).Text; Und dann fülle ich die Parameter auch per Schleife:
for i := 2 to Max do AdoQuery3.Parameters.ParamByName(IntToStr(i)).Value := Texts[i]; Ich bin mir nicht 100%ig sicher, aber die TAdoQuery-Komponente bietet doch nicht die Möglichkeit, wie z.B. TQuery (wenn ich mich da richtig entsinne) den Typ mit anzugeben, also AsString, AsFloat etc.
  Mit Zitat antworten Zitat