Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Gerundet Anzeigen ohne Rundung in SQL (https://www.delphipraxis.net/33637-gerundet-anzeigen-ohne-rundung-sql.html)

Delphimagnet 10. Nov 2004 14:14


Gerundet Anzeigen ohne Rundung in SQL
 
Hallo,

Ich habe folgendes Problem.
Aus der Oracel Datenbank wird ein Datensatz geholt und direkt in einem Datengrid dargestellt.
(TQuery -> TDatasource -> TDatagrid)

In dem Datensatz befindet sich ein Betrag welcher in der Datenbank mit mehreren Nachkommastellen gespeichert ist (maximal 4 hab ich bisher gesehen), dies ist auch richtig so.
Allerdings sollen die Benutzer nur 2 Nachkommastellen angezeicgt bekommen.

Natürlich könnte das mit:
Delphi-Quellcode:
SQL.Add('select round(BETRAG,2) from dm_admin.Kontoauszug');
...gelöst werden.

Jetzt kommen allerdings die hier heimischen Programmierer ins Spiel. :wink:

Einer dieser Spezies hat eine Klasse geschrieben die ich verwenden soll und die es dem Benutzer erlaubt die Einstellungen (Breite und Position) der Spalten zu speichern.
Dazu liest diese den Select-Befehl des Querys aus und es erwartet nur Namen und Alias (oder wie das richtig benannt ist) und kommt mit round oder trunc nicht zurecht.

Die einzigste Lösung die mir einfällt wäre etwas in der Richtung:
Delphi-Quellcode:
SQL.Add('select BETRAG from (select round(BETRAG,2) from dm_admin.Kontoauszug)');
//Keine Ahnung mehr ob der Aufruf so richtig ist, aber ihr wisst was ich meine
Dies würde funktionieren weil die Klasse nur das erste select erfasst und im Unter-select gerundet wird.

Aber das muss doch auch anderst gehen :gruebel:

Gibt es nicht vielleicht irgendwas das nur die Anzeige des Datengrids betrifft :?:

shmia 10. Nov 2004 14:44

Re: Gerundet Anzeigen ohne Rundung in SQL
 
Delphi-Quellcode:
var
   f : TField;
begin
   f:= query1.FieldByName('Betrag');
   (f as TNumericField).DisplayFormat := '###0.00';

Delphimagnet 10. Nov 2004 15:20

Re: Gerundet Anzeigen ohne Rundung in SQL
 
Klasse.
Klappt perfekt. :thumb:

kachel81 11. Nov 2004 23:12

Re: Gerundet Anzeigen ohne Rundung in SQL
 
Aber das DisplayFormat rundet doch nicht, oder?

kolio 4. Apr 2005 21:22

Re: Gerundet Anzeigen ohne Rundung in SQL
 
DisplayFormat rundet bis 5 ab, darüber auf. Bei mir funktioniert es perfekt.

Jetzt verrate mir bitte mal jemand, warum in der nachfolgenden SQL-Anweisung der Befehl ROUND nicht funktioniert! Ich verwende eine Paradox-Tabelle, Zahl ist vom Typ 'Numerisch'.

Delphi-Quellcode:
Query2.Close;
Query2.SQL.Text := 'SELECT ROUND(AVG(Zahl), 2) as Z1 FROM Test.db';
Query2.Open;

Es kommt immer eine Exception der Klasse EDBEngineError mit der Meldung 'Merkmal nicht verfügbar'.


Ciao und schon mal vielen Dank

Jasocul 5. Apr 2005 07:34

Re: Gerundet Anzeigen ohne Rundung in SQL
 
Klingt so, als würde round bei Paradox nicht zur Verfügung stehen.
@Delphimagnet:
Auf meiner HP gibt es eine Komponente zum Download (Feld-Formatierer), mit dem diese Einstellungen auch zur Laufzeit gemacht werden können. Wenn du willst, kannst du sogar dem Anwender die Einstellung überlassen. Musst ihm nur die Funktion zur Verfügung stellen. Bei richtiger Einstellung brauchst du eigentlich nur die Einstellungen mit auszuliefern (INI oder Registry).


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