AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Gerundet Anzeigen ohne Rundung in SQL
Thema durchsuchen
Ansicht
Themen-Optionen

Gerundet Anzeigen ohne Rundung in SQL

Offene Frage von "kolio"
Ein Thema von Delphimagnet · begonnen am 10. Nov 2004 · letzter Beitrag vom 5. Apr 2005
Antwort Antwort
Delphimagnet

Registriert seit: 16. Sep 2004
16 Beiträge
 
Delphi 7 Enterprise
 
#1

Gerundet Anzeigen ohne Rundung in SQL

  Alt 10. Nov 2004, 15:14
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:
SQL.Add('select round(BETRAG,2) from dm_admin.Kontoauszug'); ...gelöst werden.

Jetzt kommen allerdings die hier heimischen Programmierer ins Spiel.

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

Gibt es nicht vielleicht irgendwas das nur die Anzeige des Datengrids betrifft
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Gerundet Anzeigen ohne Rundung in SQL

  Alt 10. Nov 2004, 15:44
Delphi-Quellcode:
var
   f : TField;
begin
   f:= query1.FieldByName('Betrag');
   (f as TNumericField).DisplayFormat := '###0.00';
Andreas
  Mit Zitat antworten Zitat
Delphimagnet

Registriert seit: 16. Sep 2004
16 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Gerundet Anzeigen ohne Rundung in SQL

  Alt 10. Nov 2004, 16:20
Klasse.
Klappt perfekt.
  Mit Zitat antworten Zitat
kachel81

Registriert seit: 21. Okt 2004
25 Beiträge
 
#4

Re: Gerundet Anzeigen ohne Rundung in SQL

  Alt 12. Nov 2004, 00:12
Aber das DisplayFormat rundet doch nicht, oder?
  Mit Zitat antworten Zitat
kolio

Registriert seit: 30. Jan 2005
Ort: Plauen
9 Beiträge
 
#5

Re: Gerundet Anzeigen ohne Rundung in SQL

  Alt 4. Apr 2005, 22:22
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
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Gerundet Anzeigen ohne Rundung in SQL

  Alt 5. Apr 2005, 08:34
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).
Peter
  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 04:05 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