Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme Dezimalzahlen die als BCD in Oracle abgelegt sind (https://www.delphipraxis.net/15672-probleme-dezimalzahlen-die-als-bcd-oracle-abgelegt-sind.html)

I_need_help 2. Feb 2004 16:23


Probleme Dezimalzahlen die als BCD in Oracle abgelegt sind
 
Hallo zusammen,

seit einiger Zeit schlage ich mich mit einem problem herum und finde keine lösung. ich habe dezimalwerte, die in einer oracle-db als bcd gespeichert sind. mit meinem kleinen delphi-programm will ich nun einen select auf die db machen und diese werte in eine csv-datei schreiben.

das problem: nach dem select steht im ergebnis nicht wie gewünscht eine (bspw.) 12,25 sondern eine 1225.

ich hab es mit sqlquery versucht, mit sqldataset und mit dem clientdataset. immer das gleiche. führe ich denselben select im delphieigenen sql-explorer aus, ist die anzeige des ergebnisses korrekt. nur die abfrage im quellcode scheint nicht das gewünschte ergebnis zu bringen.

ich bin echt ratlos und die sache nervt. weiß jemand ne lösung oder die ursache des problems?? ich bin für jeden hinweis dankbar!!!

Robert_G 2. Feb 2004 16:50

Re: Probleme Dezimalzahlen die als BCD in Oracle abgelegt si
 
Für Oracle-Zugriffe kann ich dir nur dieses Package empfehlen.
Im Gegensatz zu den Standard-DB-Kompos funktioniert damit einfach alles!
Dieses Package enkapselt direkt die API des Oracle-clients -> du hast superschnellen Zugriff auf (fast) alle speziellen Features von Oracle.

p.s.: Den Datentyp BCD kenne ich nicht, meintest du vielleicht "EBCDIC" ("extended binary coded decimal interchange code" oder so :gruebel: )

I_need_help 2. Feb 2004 17:04

Re: Probleme Dezimalzahlen die als BCD in Oracle abgelegt si
 
als ich mal geprüft habe, was für ein datentyp wirklich dahintersteckt, ist das prog bei ftFMTBcd: angesprungen.

das mit nem extra-tool ist zwar ganz toll, aber geht es nicht auch ohne?? oder funktioniert das ganze vielleicht auch besser mit ner neueren delphi-version? :?:

Robert_G 2. Feb 2004 17:14

Re: Probleme Dezimalzahlen die als BCD in Oracle abgelegt si
 
Dieses Package ersetzt alle Standard-DB-Kompos (Datasource, Query, Dataset, Navigator,...) es hat den Vorteil, dass es wesentlich mehr Funktionen enthält, wesentlich schneller & stabiler läuft (ist ja genau auf Oracle getrimmt!).
Die 229€ (inc. OracleMonitor) solltest du schon investieren, wenn du viel mit Oracle zu tun hast.

Wenn du es mit den ADO-Zeugs versuchen willst, bastel mal mit NumericScale, Precision & Size rum.

Nachtrag:
Hab gerade mal eine ADOQuery auf ein Form gepackt und: es gibt eine Eigenschaft namens "EnableBCD" und im Code müsstest du so den Wert lesen können:
Delphi-Quellcode:
  XYZ := AdoQuery1.FieldByName('DeinFeld').AsBCD;
Keine Ahnung ob es so funktioniert, aber mit ein bisschen rumbasteln findest du bestimmmt die richtige Lösung.

I_need_help 2. Feb 2004 18:29

Re: Probleme Dezimalzahlen die als BCD in Oracle abgelegt si
 
juppieh, ich hab ne lösung gefunden, die mir erst mal auf die schnelle hilft:
Delphi-Quellcode:
zeile:String;
erg:Double;

erg := BcdToDouble(SQLQuery1.Fields[j].AsBCD);
erg := erg / 100000;
zeile := zeile + FloatToStr(erg);
manchmal sieht man den wald vor lauter bäumen nicht :oops:

aber danke trotzdem. :thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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 by Thomas Breitkreuz