AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Punkt in String wird in Komma verwandelt
Thema durchsuchen
Ansicht
Themen-Optionen

Punkt in String wird in Komma verwandelt

Ein Thema von Mayrell · begonnen am 10. Mär 2011 · letzter Beitrag vom 11. Mär 2011
Antwort Antwort
Mayrell

Registriert seit: 8. Mär 2011
3 Beiträge
 
#1

Punkt in String wird in Komma verwandelt

  Alt 10. Mär 2011, 23:11
Datenbank: Access (.mdb) • Version: ? • Zugriff über: Delphi TADO
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
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Punkt in String wird in Komma verwandelt

  Alt 10. Mär 2011, 23:52
Für Floatoperationen verwendet Delphi normalerweise das Char DecimalSeparator. Standardgemäß ist ',' eingestellt. Probier' mal DecimalSeparator:='.';
  Mit Zitat antworten Zitat
Mayrell

Registriert seit: 8. Mär 2011
3 Beiträge
 
#3

AW: Punkt in String wird in Komma verwandelt

  Alt 11. Mär 2011, 07:18
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...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#4

AW: Punkt in String wird in Komma verwandelt

  Alt 11. Mär 2011, 07:25
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Mär 2011 um 07:28 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Punkt in String wird in Komma verwandelt

  Alt 11. Mär 2011, 07:26
Verwende eine parametrisierte Abfrage
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Punkt in String wird in Komma verwandelt

  Alt 11. Mär 2011, 07:30
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
Frank Reim
  Mit Zitat antworten Zitat
Mayrell

Registriert seit: 8. Mär 2011
3 Beiträge
 
#7

AW: Punkt in String wird in Komma verwandelt

  Alt 11. Mär 2011, 12:13
Wie himitsu gemeint hat, es hat an den Hochkommas gelegen.

Ich bedanke mich bei allen für die Hilfe!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Punkt in String wird in Komma verwandelt

  Alt 11. Mär 2011, 12:20
Verwende eine parametrisierte Abfrage
Und so vermeidest Du solche Probleme.
(siehe auch #4)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 06:23 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