AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Floatwerte in Datenbanken speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Floatwerte in Datenbanken speichern

Ein Thema von macDoe · begonnen am 2. Nov 2014 · letzter Beitrag vom 2. Nov 2014
Antwort Antwort
macDoe

Registriert seit: 19. Jun 2011
9 Beiträge
 
#1

Floatwerte in Datenbanken speichern

  Alt 2. Nov 2014, 17:08
Datenbank: Jede • Version: alle • Zugriff über: NativeDB, ODBC
Moinsn..

Ich habe da folgende Frage...
wenn Ich einen Floatwert in eine DB, in diesen Fall MS SQL 2012 aber das spielt keine Rolle, schreiben möchte über eine normale SQl query wie..

Update Test set Kohle = '123.34' where Rowid = 1

Dann darf das natürlich nicht '123,34' heissen sonst knallt es.
Wenn man aber die SQL Abfragen individuell baut sind das nun mal Strings.

So etwa :

DM.DatMod.oq3.SQL.Add(' Update Test set Kohle = ''' + s + ''' ');

'S' darf hier natürlich kein Float sein.

Da aber selbst die StrToFloat Methode den Wert mit Komma zurück gibt weil wir halt in Deutschland sind ist das doof.

Ich finds ja toll das Windows und die Datenbanken mir in Deutschland ein Komma als Dezimaltrenner hinpinseln auch wenn in der
DB ein Punkt steht, aber an dieser Stelle ist das echt Mist. Klar, Ich kann natürlich statt Floats einfach Strings nehmen und schon klappt das.
Aber mit Strings rechnet man so schlecht...

Ich suche nun einen Weg meine Inszantvariablen als Float zu deklarieren und gleichzeitig keine Probleme zu habe wenn Ich sie in die
DB schreiben möchte. Im Moment konvertiere ich das hin und her - aber mal ehrlich, wie Elegant ist das denn?

Ja, Ich weiß...da gibt es was mit Formatierunseinstellungen aber Ich möchte meiner Applikation nicht vorgauckeln in Amiland zu sein.
Naja, vermutlich ist das so banal das ich mich grad zur Lachnummer mache, aber wenn Ich eins kann dann das



es grüßt..
der Frank
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Floatwerte in Datenbanken speichern

  Alt 2. Nov 2014, 17:09
Verwende Parameter.
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
220 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Floatwerte in Datenbanken speichern

  Alt 2. Nov 2014, 19:05
Die vorstehende Antwort mit den Parametern ist die bessere Wahl ,

also etwas so
Delphi-Quellcode:
query.sql.clear;
query.sql.add('update TEST set KOHLE=:WERT');
query.sql.prepare

query.parambyname('WERT').asfloat= 123.45;
query.execsql;
der Paramert , im Beispiel "Wert" kann eine beliebige Zeichenfolge sein
wichtig das der Doppelpunkt davor

alternativ einfach ein Stringreplace und das Komma mit einem Punkt ersetzten

mfg Hannes
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Floatwerte in Datenbanken speichern

  Alt 2. Nov 2014, 19:38
Zitat:
Da aber selbst die StrToFloat Methode den Wert mit Komma
Nein, vorallem nicht wenn man den zweiten Parameter von Delphi-Referenz durchsuchenFloatToStr benutzt.
Nja, falls dein Delphi passt, wobei du ja nicht nennst was du verwendest.


Ansonsten wurden die Parameter ja bereits genannt und sie sind auch gleich gut gegen eine SQL-Injection, z.B. wenn man 1"; DROP DATABASE xxx; in dein S reinbekommt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 16:05 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