Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Programm rundet bei der Übergabe in die DB (https://www.delphipraxis.net/93138-programm-rundet-bei-der-uebergabe-die-db.html)

Elspass 1. Jun 2007 10:31

Datenbank: Access • Version: 2003 • Zugriff über: ADO

Programm rundet bei der Übergabe in die DB
 
Moin, Moin,

ich habe ein kleines Problem...
Ich übergebe einen REAL Wert z.B. 23,03 wie folgt per ADO zur Datenbank...

DSRechPos.DataSet.FieldByName('STCKPREIS').AsFloat := tmpVK;

Datenbank? Naja ist Access, jedoch wird jeder Wert gerundet... z.B. 23,00
In der Datenbank habe ich Währung und jetzt Zahl mit fester Kommastelle (2) als Splatenformat eingestellt.

Wo habe ich meinen Fehler?
Wenn ich mir tmpVK im Debugger ansehe, habe ich immer meinen richtigen Wert.

Gruss Jörg

pmoegenb 1. Jun 2007 10:47

Re: Programm rundet bei der Übergabe in die DB
 
Was passiert wenn Du statt 23,03 23.03 übergibst.

Elspass 1. Jun 2007 10:54

Re: Programm rundet bei der Übergabe in die DB
 
Das gleiche, ich habe 23.03 fest übergeben..

DSRechPos.DataSet.FieldByName('STCKPREIS').AsFloat := 23.03;

in der Access-Datenbank kommt immer noch 23,00 an...
Noch eine Idee???

Elspass 1. Jun 2007 10:58

Re: Programm rundet bei der Übergabe in die DB
 
Liste der Anhänge anzeigen (Anzahl: 1)
Du hast mich auf die Spur gebracht... das hat nichts mit Delphi zu tun...
Auch wenn ich manuel die Zahl in Access eingebe, wird sie gerundet.
Jetzt sollte ich mich mit Access auskennen :oops:

shmia 1. Jun 2007 11:02

Re: Programm rundet bei der Übergabe in die DB
 
Das, was MS Access dir anzeigt und das, was wirklich in der Datenbank (Jet Engine) steht, sind 2 Paar Schuhe.
MS Access ist das Frontend und die Jet Engine ist das Backend/die eigentliche Datenbank.
Was wird angezeigt, wenn du einfach eine Query "SELECT * FROM RechPos" mit einem DBGrid verbindest ?

Elspass 1. Jun 2007 11:04

Re: Programm rundet bei der Übergabe in die DB
 
Leider zeigt der auch nur die runde Zahl an (23,00)

shmia 1. Jun 2007 11:10

Re: Programm rundet bei der Übergabe in die DB
 
Kein Wunder, wenn man das Feld "StckPreis" als Integer-Feld definiert!!!
Datentyp Currency wäre richtig.
Code:
RechnungTemp
   Fields
      Anzahl : Integer
         Fixed
         Nullable
      ArtNr : VarWChar(255)
         Nullable
      Bezeichnung : VarWChar(255)
         Nullable
      Datum : VarWChar(255)
         Nullable
      GesamtPreis : Currency
         Fixed
         Nullable
      ID : Integer
         Fixed
      Seriennummer : VarWChar(255)
         Nullable
      StckPreis : Integer
         Fixed
         Nullable
      Uhrzeit : VarWChar(255)
         Nullable
      USt : Integer
         Fixed
         Nullable

Elspass 1. Jun 2007 11:12

Re: Programm rundet bei der Übergabe in die DB
 
Jo, habe ich eben auch gesehen. Der Tip mit Backend war schon prima. Im Frontend sehe ich nur Format = Zahl mit Kommastelle...

:oops: :oops: :oops:

Ich schäme ich schon!


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