Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Select inkl. berechnung und Formatiereung (https://www.delphipraxis.net/56673-select-inkl-berechnung-und-formatiereung.html)

Tau 9. Nov 2005 17:35

Datenbank: MS SQL • Version: 2000 • Zugriff über: ADO

Select inkl. berechnung und Formatiereung
 
Hallo Leute

habe auch wieder mal ein kleines Problem

Folgende Daten möchte ich in einen Select abfrage einbinden

Spalte1 = Decimal mit 6 Kommastellen
Spalte2 = Decimal mit 6 Kommastellen
Spalte3 = Varchar (10)

SQL-Code:
Werte in den Spalten
Spalte1   Spalte2   Spalte3
1,568     10        GSTH
756,26    12        EVGHU
2,0254    <NULL>   DRB
45,1258   <NULL>   WFHI
SQL-Code:
SELECT Spalte1, Spalte2, CAST(Spalte1/ 100 * Spalte2+ Spalte1 AS varchar(20)) + ' ' + Spalte3 AS Expr1
FROM Tabelle1
SQL-Code:
Ergebnis Werte in den Spalten
Spalte1   Spalte2   Spalte3   Expr1
1,6055    10        GSTH     1.7660500000000 GSTH
48,367    12        EVGHU    53.2037000000000 EVGHU
2,0254    <NULL>   DRB      <NULL>
45,1258   <NULL>   WFHI     <NULL>
Jetzt mein Frage

1) wie kann ich die überflüssigen 0 beseitigen am Ende der Zahl in der Spalte (Expr1)
2) und wie bekomme ich ein ergebnis in der Spalte (Expr1) wo die <Null> stehen.
Das Ergebnis solte so aussehen: Spalte1 + Spalte3 (2,0254 DRB)

Stehe bei diesem Problem leider etwas auf dem Schlauch. :wall: :wall: :wall:

Ich hoffe es kann mir einer einen Tipp geben wie ich das Lösen kann, Danke.

schöne Grüsse
Tau
:hi:

marabu 9. Nov 2005 18:05

Re: Select inkl. berechnung und Formatiereung
 
Hallo Tau.

Wenn ich keine Schreibfehler gemacht habe, dann könnte es so funktionieren:

SQL-Code:
SELECT Spalte1, Spalte2, Spalte3,
  CAST(CAST(Spalte1 / 100 * COALESCE(Spalte2, 0) + Spalte1 AS DECIMAL(18, 4))
    AS varchar(20)) + ' ' + Spalte3 AS Expr1
FROM Tabelle1
Grüße vom marabu

Tau 9. Nov 2005 21:35

Re: Select inkl. berechnung und Formatiereung
 
Hallo Marabu

Danke für den Tipp :thumb:

Das Problem Nummer 2 hat sich aufgelöst.

es bleibt noch die 0 am schlüss.

Ich hoffe es hat noch jemand eine so Gute Ide Danke. :bounce2:


Tau
:hi:

marabu 10. Nov 2005 21:46

Re: Select inkl. berechnung und Formatiereung
 
Hallo Tau,

mein beispielhaftes Statement liefert für den ersten Satz das Ergebnis

Code:
Spalte1              Spalte2              Spalte3     Expr1                           
-------------------  -------------------  ----------  ------------------------------- 
1.605500             10.000000            GSTH       1.7661 GSTH
Welche 0 am Schluß meinst du denn?

marabu

Tau 10. Nov 2005 23:09

Re: Select inkl. berechnung und Formatiereung
 
Hallo Marabu

Delphi-Quellcode:
Spalte1              Spalte2              Spalte3     Expr1                           
-------------------  -------------------  ----------  ------------------------------- 
1.605500             10.000000            GSTH       1.7661 00 GSTH
die 0 bekomme ich in der Spalte Expr1

kann es an der Einstellung am SQL Server liegen?

aber am SQL-Server habe ich gar nichts herum geschraubt.

oder liegt es vielleicht an der Sortierung bin leider etwas ratlos.

Tau
:hi:

marabu 11. Nov 2005 06:48

Re: Select inkl. berechnung und Formatiereung
 
Hallo Tau,

kannst du das Statement zeigen, mit dem du diesen output erzeugst? Da muss was bei der Anpassung schief gelaufen sein - schon alleine wegen der Leerstelle vor den beiden Nullen in Expr1.

marabu

Tau 11. Nov 2005 13:19

Re: Select inkl. berechnung und Formatiereung
 
Hallo Marabu

Sorry aber das ergebnis sieht so aus ( 1.766100 GSTH )

Ich habe nur volgenden Wert im Select umgestellt von Decimal(18,4) auf Decimal(18,6).

Datenfelder fom Type:
Spalte1 = Decimal(18,6)
Spalte2 = Decimal(18,2)
Spalte3 = Varchar(10)

Spalten Werte:
Spalte1 = 72,47
Spalte2 = 10
Spalte3 = GSTH

Ergebnis:
Delphi-Quellcode:
Spalte1              Spalte2              Spalte3     Expr1                           
-------------------  -------------------  ----------  ------------------------------- 
72,47                10                   GSTH       79.717000 GSTH
SQL-Code:
SELECT Spalte1, Spalte2, Spalte3, CAST(CAST(Spalte1 / 100 * COALESCE (Spalte2, 0) + Spalte1 AS DECIMAL(18, 6)) AS varchar(20)) + ' ' + Spalte3 AS Expr1
FROM Tabelle1

Tau
:hi:

marabu 11. Nov 2005 13:43

Re: Select inkl. berechnung und Formatiereung
 
Hallo Tau,

du erhältst beim CAST auf DECIMAL(18, 6) genau so viele Nachkommastellen wie angegeben - DECIMAL ist ein Festkommaformat. Eine variable Zahl an Nachkommastellen wird dir nicht sonderlich helfen, da durch die Abbildung zwischen den Zahlensystemen (10 und 2) in der Regel die von dir erwartete Darstellung nicht mit der internen Speicherung übereinstimmt. Wenn es sich bei deinen Zahlen zufällig um Währungsbeträge handelt, dann sollten 4 Nachkommastellen (Datentyp MONEY) ausreichend sein...

Grüße vom marabu

Tau 11. Nov 2005 20:23

Re: Select inkl. berechnung und Formatiereung
 
Hallo Marabu

Ich habe alles in einen CalcField umgestellt und sie da es funktioniert einwandfrei
genau so wie ich es brauche. Und der Formatierungs- Möglichkeiten sind keine grenzen.

Trotzdem Danke für deine Bemühungen. :thumb:


Tau
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 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 by Thomas Breitkreuz