![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: Aducom
TParam Problem
Vielleicht kann mir jemand auf die Sprünge helfen .. verstehe die Konvertierung nicht ganz ;)
Ich möchte durch ParamByName eine Erstezung durchführen (x : real;) ParamByName('MiFlags_1').AsFloat := x; Das funktioniert auch .... komisch ist, wenn ich in dem x ein Wert wie z.B 10 stehen habe ersetzt er mir MiFlag_1 durch 10.0 und schreibt das auch in die Tabelle so wie es sein soll. Hab ich in x einen Wert wie 10.3243 stehen legt er mir in der Datenbank den Wert als 10,3243 ab .. also als Trennsymbol ein "," und kein Punkt, was natürlich nicht erwünscht ist. Verstehe die Logik dabei nicht so ganz oder hab ich was nicht beachtet ? Könnte natürlich den float in String wandeln das komma dann durch punkt ersetzen und rein schreiben oder so nen Workaround, dennoch würde ich dies gerne vermeiden. Hat da jemand ne idee wieso das so ist bzw. wie ich das beheben kann ? Lg Andre |
Re: TParam Problem
Welchen Typ hat das Datenbankfeld? Welchen DezimalSeparator ist gesetzt?
|
Re: TParam Problem
DOUBLE ist der Typ in der Tabelle
DezimalSeperator ist '.' |
Re: TParam Problem
Wenn der Typ DOUBLE ist, legt er gar kein Trennzeichen in der Datenbank ab. Das Komme wird nur für die Anzeige verwendet. Komisch ist aber nur, das er nicht das voreingestellte nimmt.
10,3243 heißt dann ja 103243. |
Re: TParam Problem
also wenn der Real Wert 10.3243 ist wieso heißt das dann 103243. ?
Also zur Einsicht der Daten benutze ich gerade SQLiteSpy und da hab ich jetzt halt in z.B. dem Feld Zeiten_2 (DOUBLE) Werte mit '.' Trennung bei der Anzeige aber auch Werte mit ',' drinne. (Halt das Problem was ich habe) Wenn ich dann nen einfaches SQL Statment ausführe wie z.B. SELECT "Zeiten_2" FROM "NumCh" WHERE "Zeiten_2" > 80; bekomme ich eine falsche Ergebnistabelle in der alle Werte drinne sind > 80 (was richtig ist) aber auch alle anderen Werte die vermeindlich kleiner sind und die werden in der Ergebnistabelle mit ',' angezeigt, scheinbar weil er das nicht als DOUBLE identifizieren kann kein Ahnung. Wenn ich : ParamByName('Zeiten_1').value := FloatToStr(DataSet.Zeiten[1]); benutze sind die Werte korrekt in der Tabelle, find ich aber nicht gerade schön den weg ;) Hast du noch eine Idee wieso er das so komisch ablegt ? |
Re: TParam Problem
Wie gesagt, werden die Werte in der Datenbank ohne Trennzeichen abgelegt. Wie wurden die Werte in die DB geschrieben? Sind die eingstellten Dezimal bzw. Tausendertrenner beim Einfügen und Anzeigen identisch?
|
Re: TParam Problem
Zitat:
das sind die sql befehle ... nur stark gekürzt.
SQL-Code:
NumCHInsertMySQL = 'INSERT INTO :table ' + 'VALUES(' + 'null, ' {ChKey} + ':Zeiten_2, ' {Zeiten_2} + ');'; create noch : NumChCreateTableSQL = 'CREATE TABLE IF NOT EXISTS' + ' :table(id INTEGER PRIMARY KEY AUTOINCREMENT ,' + ' Zeiten_2 DOUBLE' + ' );'; Zitat:
meintest du das? Tendiere mittlerweile fast dazu : ParamByName('Zeiten_1').value := FloatToStr(DataSet.Zeiten[1]); so ist die Tabelle wenigstens ok. Oder spricht etwas gegen die umwandlung die ich nicht berücksichtigt habe ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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