AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

kaufmännisches Runden in einer SQL-abfrage

Ein Thema von khh · begonnen am 14. Apr 2009 · letzter Beitrag vom 14. Apr 2009
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#1

kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 09:58
Hallo zusammen,

zum kaufmänischen Runden habe ich hier im Forum folgende Function gefunden:
Delphi-Quellcode:
function RoundCurrency(const Value:Currency; const nk:Integer):Currency;
const
  faktors : array[-3..3] of Integer = (
     10000000, 1000000, 100000, 10000, 1000, 100, 10);
var
  x : Int64;
  y : Int64;
begin
  // Currency hat ja nur 4 Nachkommastellen
  if (nk>=4) or (Value=0) then
  begin
    Result := Value;
    Exit;
  end;
  if nk < Low(faktors) then
    raise EInvalidArgument.CreateFmt('RoundCurrency(,%d): invalid arg', [nk]);


  // Currency nach Int64 casten
  x := PInt64(@Value)^;
  y := faktors[nk];

  if x > 0 then
    x := ((x+(y div 2)) div y)*y
  else
    x := ((x-(y div 2)) div y)*y;

  // Int64 nach Currency casten
  Result := PCurrency(@x)^;
end;
das funktioniert auch soweit richtig, zumindest habe ich in der Kürze der Zeit keinen Fehler finden können.

jetzt stellt sich mir folgendes Problem:
in einer sql-Abfrage habe ich ein berechnetes feld:


..., (nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2)))) as bruttopreis,....

diese wird für die darstellung im Grid folgendermassen formatiert:

TFloatField(FpreiseQuery.Fields[4]).DisplayFormat := '######0.00';

wie kann ich den bruttopreis jetzt kaufmännisch runden ?




Danke für eure Ideen.


Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 10:38
Hallo,

wie wäre es mit Round?

Round(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2)))),2) as bruttopreis
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#3

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 11:29
Zitat von nahpets:
Hallo,

wie wäre es mit Round?

Round(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2)))),2) as bruttopreis
danke, scheint zu funktionieren, wobei mir noch nicht klar ist weshalb

bruttopreis := Round(bruttopreis,2);
nicht funktioniert?
hier bekomme ich :
Error: Wrong number of parameters specified for call to "round"


danke gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 11:39
Meinst Du das Delphi-Round? Das kennt nur einen Parameter, ich vermute, Du suchst RoundTo.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#5

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 11:41
Zitat von DeddyH:
Meinst Du das Delphi-Round? Das kennt nur einen Parameter, ich vermute, Du suchst RoundTo.
ja aber was ist das denn für ein round in der SQL abfrage?
das sind doch 2 parameter, oder seh ich nicht richtig?



Round(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2)))),2) as bruttopreis

Gruss Kh
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 11:45
Ja, aber das ist Runden in SQL, nicht in Delphi.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#7

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 11:52
Zitat von DeddyH:
Ja, aber das ist Runden in SQL, nicht in Delphi.

aha, das ist also ne sql-funktion!

dann ist das CAST in:
Round(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2)))),2) as bruttopreis

auch ne sqlfunktion?

heisst delphi -funktionen sind im sql-statement nicht möglich?

Danke gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 11:54
Dazu müsste das DBMS ja Delphi verstehen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 11:54
Zitat:
heisst delphi -funktionen sind im sql-statement nicht möglich?
Ja, da die Abfrage ja auf dem Server ausgeführt wird und nur das Ergebnis an den Client übertragen wird.
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#10

Re: kaufmännisches Runden in einer SQL-abfrage

  Alt 14. Apr 2009, 11:56
Zitat von DeddyH:
Dazu müsste das DBMS ja Delphi verstehen
ok, wie recht du hast



ich danke euch


Gruss Kh
Karl-Heinz
  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 09:04 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