Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feld berechnen mal ja mal nein (https://www.delphipraxis.net/112330-feld-berechnen-mal-ja-mal-nein.html)

Privateer3000 18. Apr 2008 20:25

Datenbank: mdb • Zugriff über: ado

Feld berechnen mal ja mal nein
 
Hiho Gemeinde

bitte schaut mal hier:
Delphi-Quellcode:
zupdateq.Close; zupdateq.SQL.Clear;
      zupdateq.SQL.Add('UPDATE basisart SET ');
      zupdateq.SQL.Add('bestand=bestand-:UP1');
      zupdateq.SQL.Add(' WHERE id=:UP2');
      zupdateq.Prepared:=True;
      zupdateq.Parameters.FindParam('UP1').Value:=format('%f',[upmenge]);
      zupdateq.Parameters.FindParam('UP2').Value:=IntToStr(u_artnr);
         zupdateq.ExecSQL
zum test übergebe ich der "upmenge" mal 0,5 dann mal 0,3
0,5 wird korrekt ausgeführt und in "basisart" steht die korrekte
neue Zahl unter "bestand".
Mit 0,3 funktionier das nicht...
Zum test lass ich mir die upmenge in einem Label anzeigen,
alles korrekt.
Aber trotzdem wird 0,3 nicht abgezogen...,nämlich garnichts

Weiss jemand Rat?

mkinzler 18. Apr 2008 20:34

Re: Feld berechnen mal ja mal nein
 
Delphi-Quellcode:
zupdateq.Close;
zupdateq.SQL.Text := 'UPDATE basisart SET ';
zupdateq.SQL.Add('bestand=bestand-:UP1');
zupdateq.SQL.Add(' WHERE id=:UP2');
zupdateq.Prepared:=True;
zupdateq.Parameters.FindParam('UP1').Value:=upmenge;
zupdateq.Parameters.FindParam('UP2').Value:=u_artnr;
zupdateq.ExecSQL;

Privateer3000 18. Apr 2008 21:06

Re: Feld berechnen mal ja mal nein
 
danke
tut sich auch nix
upmenge ist ein String
oder muss ich erst umwandeln?
die Spalte bestand ist vom Typ double

mkinzler 18. Apr 2008 21:13

Re: Feld berechnen mal ja mal nein
 
Delphi-Quellcode:
zupdateq.Parameters.FindParam('UP1').Value:=StrToFloat(upmenge);

Privateer3000 18. Apr 2008 21:18

Re: Feld berechnen mal ja mal nein
 
es bleibt dabei
0,5 berechnet er korrekt
0,3 nicht

PS: mkinzler, schläfst du auch manchmal?

QuickAndDirty 19. Apr 2008 11:18

Re: Feld berechnen mal ja mal nein
 
Da es ein Double wert ist wird der ungenauer wenn er größere Zahlen darstellt.
Ab einer gewissen größe ist bestand = bestand -0,3 und bestand = bestand + 0,3 und so.

teste es mal mit bestand = 1 aus das sollte dann gehen.


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