![]() |
Datenbank: Access • Version: 2000 • Zugriff über: ADO Komponenten
Runden bei einer SQl Abfrage
Hi Leute...
mir scheint ich sehe grad den Wald vor lauter Bäumen nicht. Habe hier folgendes SQL Statement :
SQL-Code:
SELECT kundendienst.Firma1 AS [Firma], Avg([auftrag]![Rep_zurueck_datum]-[auftrag]![ausgangsdatum]) AS [Mittlere Reparaturdauer], Avg(auftrag.Reparaturkosten) AS [Mittlere Kosten], Sum(auftrag.Reparaturkosten) AS [Gesamtreparaturkosten]
FROM kundendienst INNER JOIN auftrag ON kundendienst.kundendienstnr = auftrag.Kundendienstnr; sooo...nun habe ich das "Problem", dass ich dann in meinem Grid, in dem ich mir die Daten anzeigen lasse, Zahlen bei Mittlere Reparaturdauer rausbekomme wie 8,3333333333. Wie kann ich das bitte Runden auf sagen wir max. 2 Nachkommastellen ? Vielen Dank. MFG Carsten |
Re: Runden bei einer SQl Abfrage
Es gibt für jedes Feld deines DataSets die Eigenschaft DisplayFormat. Setze dieses z.B. auf #0.00 Dann bekommst du die Anzeige immer mit 2 Nachkommastellen und mind. einer Stelle vor dem Komma.
|
Re: Runden bei einer SQl Abfrage
Hi,
kenne mich mit access nicht aus, aber dies ist ja wohl ein Problem der Darstellung im DBGrid. Für nicht persistente Felder, sql-code wie gewünscht, ein DBGrid mit der datasource einer (zu füllenden) query verbinden und dann die einzelnen Felder iterieren. Ich habe dies für mich so gelöst:
Delphi-Quellcode:
Der Zugriff auf den fieldname stellt dir noch weiteres zur Verfügung.
procedure Tfsql.DBgridEnter(Sender: TObject);
var ft:Tfieldtype; fn,s:string; i:integer; begin i:=0; with query do begin active:=false; sql.clear; sql.add(sql.text); open; dbgrid.datasource:=datasource; for i:=0 to fieldcount-1 do begin ft:=fields[i].DataType; fn:=fields[i].fieldname; // siehe weiter unten if ft=ftstring then ... if ft=ftinteger then ... if ft=ftword then ... if ft=ftfloat then begin Tfloatfield (fields[i]).displayformat:='0.00'; // dein Avg sollte wohl von diesem Typ sein end; end; // for to end; // with query end; Über weitere if /case Abfragen fields[i].displaywidth einstellen, DBgrid.columns[i].alignment usw. Werner |
Re: Runden bei einer SQl Abfrage
SQL-Code:
gilt auch im Zusammenhang :
AS
SQL-Code:
würde 6.67 zurückliefern !
6.666666666 CAST AS DECIMAL (15,2)
Hier noch konkretes Beispiel, welches funktioniert :
SQL-Code:
GESNETTO = CAST (BETRAG / (1 + MWSTPROZ / 100) AS DECIMAL (15,2));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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-2025 by Thomas Breitkreuz