jringe
Goto Top

Crystal report 8, Daten mit Index in umgekehrter Reihenfolge einlesen

Hallo,

ich will aus einer SQL-DB Datensätze auslesen, die jeweils den höchsten Index haben.
Z.B.

Lfd Nr Index Stück

175 0 175
175 1 175
180 0 175
180 1 190
180 2 190
185 0 180

Hier dürfen nur die Zeilen 2 (lfd 175, Index 1, 175 Stück)
5 (lfd 180, Index 2, 190 Stück)
und 6 (lfd 185, Index 0, 180 Stück)
ausgegeben werden.

Kann mir einer sagen, wie ich die Daten aus dem SQL-Server in umgekehrter Reihenfolge durchlese? Denn dann bräuchte ich nur jeweils den ersten Datensatz aus jeder laufenden Nr einlesen und verarbeiten.

Danke im Voraus

Jörg

Content-ID: 190331

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

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

LianenSchwinger
LianenSchwinger 28.08.2012 um 16:22:04 Uhr
Goto Top
Hallo Jörg,

Du kannst die Daten direkt in Crystal sortieren, heißt glaube ich sogar Datensatzsortierung. Habe jetzt gerade kein Crystal vor mir. Danach kannst Du über Details unterdrücken eine Regel bilden, die den Datensatz nicht andruckt, wenn die vorhergehende Lfd-Nr. gleich der aktuellen ist.

Gruß Jörg
jringe
jringe 28.08.2012 um 16:26:06 Uhr
Goto Top
Hallo,

die Datensatzsortierung habe ich gefunden. Der Rest wird sich jetzt auch ergeben.

Danke dafür

Gruß Jörg
LianenSchwinger
LianenSchwinger 28.08.2012 aktualisiert um 16:40:13 Uhr
Goto Top
.. Du kannst natürlich das Ganze auch in der SQL-Abfrage machen.

SELECT a.lfd_nr,
       a.index,
       a.stück
FROM tabelle a
INNER JOIN (SELECT b.lfd_nr,
                   max(b.index) index
            FROM tabelle b
            GROUP BY b.lfd_nr) c on a.lfd_nr = c.lfd_nr
                                 and a.index = c.index

Damit bekommst Du nur den Datensatz pro lfd_nr mit dem höchsten Index.

Gruß Jörg
LianenSchwinger
LianenSchwinger 29.08.2012 um 07:25:01 Uhr
Goto Top
Hallo Jörg,

So jetzt sitze ich auch vor meinem CrystalReports. face-smile

Falls Du nicht schon selber fündig geworden bist, hier eine Kurzanleitung.

Bericht -> Assistent für Datensortierung
- lfd_nr als erstes und index als 2. auswählen und als Aufsteigend festlegen

Bericht -> Bereichs-Assistent
- Bereich Details auswählen
- Formelbutton hinter Unterdrücken (kein Drilldown) betätigen
- im Formeleditor in der Mitte Funktionen -> Druckstatus
- die Formel "Previous (lfd_nr) = lfd_nr" bauen

Damit wird der aktuelle Datensatz unterdrückt wenn lfd_nr des vorherigen Datensatzes gleich der lfd_nr des aktuellen Datensatzes ist.

Gruß Jörg
jringe
jringe 29.08.2012 um 07:33:33 Uhr
Goto Top
Hallo Jörg,

das funktioniert so einwandfrei.

Danke face-smile

Gruß Jörg