![]() |
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:
...gelöst werden.
SQL.Add('select round(BETRAG,2) from dm_admin.Kontoauszug');
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:
Dies würde funktionieren weil die Klasse nur das erste select erfasst und im Unter-select gerundet wird.
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 Aber das muss doch auch anderst gehen :gruebel: Gibt es nicht vielleicht irgendwas das nur die Anzeige des Datengrids betrifft :?: |
Re: Gerundet Anzeigen ohne Rundung in SQL
Delphi-Quellcode:
var
f : TField; begin f:= query1.FieldByName('Betrag'); (f as TNumericField).DisplayFormat := '###0.00'; |
Re: Gerundet Anzeigen ohne Rundung in SQL
Klasse.
Klappt perfekt. :thumb: |
Re: Gerundet Anzeigen ohne Rundung in SQL
Aber das DisplayFormat rundet doch nicht, oder?
|
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 |
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