Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Punkt in String wird in Komma verwandelt (https://www.delphipraxis.net/159018-punkt-string-wird-komma-verwandelt.html)

Mayrell 10. Mär 2011 23:11

Datenbank: Access (.mdb) • Version: ? • Zugriff über: Delphi TADO

Punkt in String wird in Komma verwandelt
 
Hallo zusammen,

ich hab bei Google und hier gesucht und nichts gefunden, also wenn es das Thema schon irgendwo gibt tut es mir leid...

Ich habe folgendes Problem:
In einer Adress-Datenbank sollen die Geokoordinaten der jeweiligen Adressen abgespeichert werden. Die Geodaten werden über eine Google API ermittelt und in zwei String Variablen gespeichert. Zu diesem Zeitpunkt haben die Variablen folgendes Format: 0.0000 (mit Punkt als Trennzeichen!)

Nun will ich die Werte in die entsprechende Datenbankzeile eintragen:

Code:
ADOConnection1.Execute('UPDATE tbl SET lng='+longitude+', lat='+latitude+' WHERE id='+ADODataSet1.FieldByName('id').AsString);
Das ist ja eigentlich absoluter Standard und funktioniert im Prinzip auch, allerdings mit einem kleinen Haken: In der Datenbank sind alle Werte plötzlich mit Komma als Trennzeichen gespeichert!

Ursprünglich waren die DB-Felder vom Typ Gleitkommazahl, ich habe dann versucht das Problem zu lösen, indem ich die Felder als Typ WideString festgegelegt habe. Ich meine, es kann doch nichts schief gehen, wenn man einen String in ein String-Feld eintragen will, oder?

Fazit: Die Punkte werden immer noch in Kommas verwandelt. Ich persönlich bin mit meinem Latein am Ende und hoffe sehr, dass mir hier jemand weiterhelfen kann ;)

Bjoerk 10. Mär 2011 23:52

AW: Punkt in String wird in Komma verwandelt
 
Für Floatoperationen verwendet Delphi normalerweise das Char DecimalSeparator. Standardgemäß ist ',' eingestellt. Probier' mal DecimalSeparator:='.';

Mayrell 11. Mär 2011 07:18

AW: Punkt in String wird in Komma verwandelt
 
Danke für die Antwort ;)

Ich habe es mit
Code:
DecimalSeparator := '.';
und auch mit
Code:
FormatSettings.DecimalSeparator := '.';
probiert, beides ergab keinerlei Änderung.

Der Witz ist ja, dass es in dem ganzen Programm eigentlich überhaupt keine Floatoperationen gibt. Google Geocoding wird über TIdHTTP.Get aufgerufen, wodurch die Daten gleich als Strings zurückkommen und so werden sie dann auch direkt in die Datenbank eingetragen. Eigentlich gibt es absolut keinen logischen Grund, warum er üerhaupt auf sowas wie DecimalSeparator achten sollte...

himitsu 11. Mär 2011 07:25

AW: Punkt in String wird in Komma verwandelt
 
In deinem UPDATE-Text trägst du aber alles ohne ' " oder ´ ein, weswegen es von der DB als Zahlen interpretiert wird ... indirekt wandelst du es also um.

Vielleicht solltest du dich auch mal mit Prepared-Statements auseinandersetzen, anstatt auf solche deine Datenbankanfragen nur als String zusammenzusetzen.
[edit] aka parametrisierte Abfrage :)

mkinzler 11. Mär 2011 07:26

AW: Punkt in String wird in Komma verwandelt
 
Verwende eine parametrisierte Abfrage

dataspider 11. Mär 2011 07:30

AW: Punkt in String wird in Komma verwandelt
 
Hi,

ich vermute mal, du benutzt persistente Felder.
Hast du auch das Feld in der AdoQuery neu angelegt?
Möglicherweise hat dieses noch den Typ Float und funkt dir dann dazwischen.

Frank

Mayrell 11. Mär 2011 12:13

AW: Punkt in String wird in Komma verwandelt
 
Wie himitsu gemeint hat, es hat an den Hochkommas gelegen.

Ich bedanke mich bei allen für die Hilfe! ;)

p80286 11. Mär 2011 12:20

AW: Punkt in String wird in Komma verwandelt
 
Zitat:

Zitat von mkinzler (Beitrag 1087583)
Verwende eine parametrisierte Abfrage

Und so vermeidest Du solche Probleme.
(siehe auch #4)

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 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