AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Interne Umwandlung von String zu Float?
Thema durchsuchen
Ansicht
Themen-Optionen

Interne Umwandlung von String zu Float?

Ein Thema von Mysterio08 · begonnen am 29. Jun 2010 · letzter Beitrag vom 29. Jun 2010
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#1

AW: Interne Umwandlung von String zu Float?

  Alt 29. Jun 2010, 11:15
Ein Float ist ein Float, da gibt es keinen Punkt und kein Komma. Wie sieht denn das Insert-Statement aus?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Interne Umwandlung von String zu Float?

  Alt 29. Jun 2010, 11:58
Hallo,

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

D.h. Parameter benutzen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Mysterio08

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

AW: Interne Umwandlung von String zu Float?

  Alt 29. Jun 2010, 12: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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Interne Umwandlung von String zu Float?

  Alt 29. Jun 2010, 12:33
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.
Weis den Wert erstmal einer Delphi-Float-Variable zu befor du es an Value übergibst.
Vermutung: Das Property Value ist ein Variant und merkt sich den Typ der übergeben wurde. Deshalb ist hier eine interne String nach Float-Wandlung nötig die nicht nötig wäre wenn du eine Float-Variable an das Value-Property übergibst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#5

AW: Interne Umwandlung von String zu Float?

  Alt 29. Jun 2010, 12:34
Nicht die Float hat ein Trennzeichen, sondern deren Darstellung. Und Du übergibst einen String an ein Float-Feld. Wie ist es so?
AdoQuery3.Parameters.ParamByName('12').Value := StrToFloat(DBText12.Text);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Mysterio08

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

AW: Interne Umwandlung von String zu Float?

  Alt 29. Jun 2010, 12:41
AdoQuery3.Parameters.ParamByName('12').Value := StrToFloat(DBText12.Text); Das ist einleuchtend! Das Problem bei der Sache ist ja nur, dass ich bisher alles schön per Schleife übergeben konnte, das ist ja so nicht mehr möglich, weil ich ja String-, Float- und andere Feldtypen habe. Gibt es eine Funktion, mit der ich den Tabellentyp ermitteln kann, sodass ich in etwa so was verwenden kann: ?

if Typ = Float then AdoQuery3.Parameters.ParamByName('12').Value := StrToFloat(DBText12.Text) Und wenn ich diese Typumwandlung bei der Parameterzuweisung weglassen - was für (gravierende) Nachteile hat dies? Denn momentan läuft es einwandfrei ohne.
  Mit Zitat antworten Zitat
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#7

AW: Interne Umwandlung von String zu Float?

  Alt 29. Jun 2010, 12:52
probier mal:

DBText12.Datasource.Dataset.FieldByName(DBText12.FieldName).FieldType //(oder DataType?) Sollte ungefähr so gehen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz