AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TParam Problem

Ein Thema von Shadow · begonnen am 24. Nov 2006 · letzter Beitrag vom 24. Nov 2006
Antwort Antwort
Shadow
(Gast)

n/a Beiträge
 
#1

TParam Problem

  Alt 24. Nov 2006, 10:05
Datenbank: SQLite • Version: 3 • Zugriff über: Aducom
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TParam Problem

  Alt 24. Nov 2006, 10:13
Welchen Typ hat das Datenbankfeld? Welchen DezimalSeparator ist gesetzt?
Markus Kinzler
  Mit Zitat antworten Zitat
Shadow
(Gast)

n/a Beiträge
 
#3

Re: TParam Problem

  Alt 24. Nov 2006, 10:15
DOUBLE ist der Typ in der Tabelle
DezimalSeperator ist '.'
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TParam Problem

  Alt 24. Nov 2006, 10:27
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Shadow
(Gast)

n/a Beiträge
 
#5

Re: TParam Problem

  Alt 24. Nov 2006, 10:42
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 ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: TParam Problem

  Alt 24. Nov 2006, 11:35
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?
Markus Kinzler
  Mit Zitat antworten Zitat
Shadow
(Gast)

n/a Beiträge
 
#7

Re: TParam Problem

  Alt 24. Nov 2006, 11:48
Zitat:
Wie wurden die Werte in die DB geschrieben?
Weis nicht genau was du jetzt meinst, vielleicht das ?


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:
Sind die eingstellten Dezimal bzw. Tausendertrenner beim Einfügen und Anzeigen identisch?
wenn du den dezimalseperator meinst .. beim schreiben '.' und anzeigen lass ich sie im moment mit SQLiteSpy bzw. SQliteMan3.

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 ?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz