balgor
Goto Top

Crystal Reports - Wie ein eindeutiges Ergebnis bei sich wiederholenden Variablen anzeigen

Hallo in die Runde,

ich habe folgendes Problem und suche verzweifelt nach Hilfe, ich habe schon mehrere Stunden damit verbracht und habe teilweise das Gefühl ich bin nur einen Syntax-Fehler vom Ziel entfernt, komme aber nicht selber drauf.

Ich habe eine Preisliste, dort kommt es vor das z.B. 10 Artikel die selbe Artikelnummer haben und bei diesen 10 Artikeln gibt es zwei verschiedene Preise.

Beispiel:

Artikelnr. .....Preis
ABC123 ..... 10,00
ABC123 ..... 10,00
ABC123 ..... 10,00
ABC123 ..... 10,00
ABC123 ..... 15,00
ABC123 ..... 15,00
DEF456 ..... 11,00
DEF456 ..... 11,00
DEF456 ..... 11,00
DEF456 ..... 13,00
DEF456 ..... 13,00

Ich wollte jetzt meine Ergebnisse so filtern dass nur die jeweils Fett formatierten Felder ausgeworfen werden sollen.
Also einen Artikel pro Artikelnummer und zwar den mit dem höchsten Preis.
Ich bekomme die Ergebnisse einzeln gefiltert, also z.B. nur einen Artikel pro Artikelnummer aus der Liste, aber dies ist dann nicht zwingen der mit dem höchsten Preis oder alle Artikel mit der selben Artikelnummer und dem höchsten Preis, aber dieser Preis kann eben auch 5x vorkommen, also habe ich auch 5 quasi gleiche Ergebnisse.

Was ich schon ohne Erfolg probiert habe:

Datenbank -> Eindeutige Datensätze auswählen (keine Veränderung)
Unterdrückungen mit previous() (hier vielleicht ein Syntax-Problem?)
und ein zwei andere Sachen, die ich gerade nicht mehr zusammenbekomme face-smile

Content-Key: 2746778655

Url: https://administrator.de/contentid/2746778655

Printed on: May 8, 2024 at 15:05 o'clock

Member: akretschmer
akretschmer May 11, 2022 at 09:16:37 (UTC)
Goto Top
auf DB-Ebene in der Abfrage nach max() aggregieren.
Member: Balgor
Balgor May 11, 2022 at 10:16:42 (UTC)
Goto Top
Hallo,

ich denke du meinst noch bevor ich Daten ans Crystal Reports übergebe? Ich finde leider Möglichkeit die Daten vorher zu filtern. "max()" ist meinem Crystal Reports (2020 Patch 2) auch nicht bekannt, wenn dann "maximum()" aber auch das kann ich in der Datensatzauswahl nicht verwenden.

Mfg Balgor
Member: Balgor
Solution Balgor May 11, 2022 at 10:24:00 (UTC)
Goto Top
Ich scheine eine Lösung gefunden zu haben, kann allerdings noch nicht alle Eventualitäten abschätzen.

Ich habe die Ergebnisse gruppiert nach Listenpreis und diesen absteigend sortiert.
Damit hatte ich eine Liste von mehreren Ergebnissen, bei der das oberste Ergebnis, das mit dem höchsten Preis war.

Danach habe ich in den Details eine Unterdrückung mit der folgenden Formel gebaut:
if {PREISLISTE.ARTNR} = previous ({PREISLISTE.ARTNR}) then true else false
damit zeigt er mir nur den ersten in der Liste an und blendet alle weiteren aus.

Bis jetzt sieht es gut aus. face-smile
Member: Crusher79
Crusher79 May 12, 2022 at 05:28:20 (UTC)
Goto Top
Was soll das sein ? Interne Auswertung? Wie is denn die Preisbildung gestaltet? Normal hat man Preislisten - meinewege KuSo - und in Abhängigkeit wird der Preis dann gezogen.

Welche DB is denn dahinter? Wir geben in CR meist nur aus. Du könntest in der DB eine View erstellen. Mit Function oder Stored Procedure arbeiten.

MaxValue, PartitionedBy ginge bei MS-SQL. Wenn man dann absteigend sortiert und nur die die erste row_number nimmt hat man den höchsten Wert.....

Gibt da viele Sauereien! Verschachtelte Selects und UNION geht auch oft. Geht nur halt schöner face-wink