PDA

View Full Version : Satzzähler im Query



Mädele
25-06-04, 11:43
Hallo,

ich habe eine Queryauswertung; wenn ich diese auf dem Bildschirm anzeigen lasse, habe ich natürlich am linken Rand die Anzahl der Zeilen.
Da ich das Query aber drucken möchte und auch dort die Anzahl der Datensätze (Gruppenwechsel) brauche, würde ich gerne wissen, ob das funktioniert.

Evtl. mit Ergebnisfeld ?

Danke schonmal
Mädele

Fuerchau
25-06-04, 11:56
Nein, das gibt es nicht, da Query die Zeilen nur bei der Anzeige darstellt. Wenn Gruppenwechsel verwendet sind, werden diese Zeilen und die Leerzeilen sogar mitgezählt. Die Zeile dient einfach nur der Positionierbarkeit.

Aber was hat die Anzahl Sätze mit Gruppenwechsel zu tun ?

Im Gruppenwechsel kannst du die Funktion "Anzahl" auswählen !
Dann bekommst du die Anzahl Sätze der jeweiligen Gruppenebene.

BenderD
25-06-04, 13:27
Naja,

gehtNeddGibbdsNedd!
zumindest im SQL geht das, einmal auf die teure Art und Weise mit einem Subselect und count(*) und eleganter mit einer Function, die hochzählt und im Query käme man da über eine SQL View auch dran. Da habe ich auch mal ein paar Anmerkungen im Midrange Magazin im Technik Forum gemacht.

mfg

Dieter Bender


Nein, das gibt es nicht, da Query die Zeilen nur bei der Anzeige darstellt. Wenn Gruppenwechsel verwendet sind, werden diese Zeilen und die Leerzeilen sogar mitgezählt. Die Zeile dient einfach nur der Positionierbarkeit.

Aber was hat die Anzahl Sätze mit Gruppenwechsel zu tun ?

Im Gruppenwechsel kannst du die Funktion "Anzahl" auswählen !
Dann bekommst du die Anzahl Sätze der jeweiligen Gruppenebene.

Fuerchau
25-06-04, 13:35
@Dieter
1. es ging um Query und nicht um SQL
2. wie löst du die Leerzeilen und die Gruppenwechselzeilen der Query-Anzeige ?

Meines Wissens nach ist SQL eben kein Reportgenerator wie Query, der mir auch noch die Zwischenergebnisse der jeweiligen Gruppenstufe sowie das Endergebnis in eigenen Zeilen liefert.

B.Hauser
25-06-04, 13:42
Wie löst du die Gruppenwechselzeilen der Query-Anzeige ?

Meines Wissens nach ist SQL eben kein Reportgenerator wie Query, der mir auch noch die Zwischenergebnisse der jeweiligen Gruppenstufe sowie das Endergebnis in eigenen Zeilen liefert.

Wie Dieter schon sagte "Geht net gibt's net". Auch Gruppenwechsel sind in SQL möglich, nämlich in dem man für jede Gruppenstufe einen eigenen Select bildet und diese dann über UNION zusammenbastelt. Das einzige Problem ist dann die Sortierung, d.h. dass die Zwischensummen korrekt einsortiert werden.
Aber auch das ist zu realisieren.

Birgitta

Fuerchau
25-06-04, 13:59
Ja ok:

select Key1, Key2, Key3, sum(f1)
from myfile
where ...
group by Key1, Key2, Key3
union
select Key1, Key2, max(x'ff'), sum(f1)
from myfile
where ...
group by Key1, Key2
union
select Key1, max(x'ff'), max(x'ff'), sum(f1)
from myfile
where ...
group by Key1
union
select max(x'ff'), max(x'ff'), max(x'ff'), sum(f1)
from myfile
where ...
order by 1, 2, 3

BenderD
25-06-04, 14:21
@Dieter
1. es ging um Query und nicht um SQL
2. wie löst du die Leerzeilen und die Gruppenwechselzeilen der Query-Anzeige ?

Meines Wissens nach ist SQL eben kein Reportgenerator wie Query, der mir auch noch die Zwischenergebnisse der jeweiligen Gruppenstufe sowie das Endergebnis in eigenen Zeilen liefert.

@Baldur

www.fielmann.de hilft hier weiter:
siehe das OP von mir:


im Query käme man da über eine SQL View auch dran

soweit ich mich erinnere, kann man Functions sogar im Query direkt benutzen, habe gerade keine Büchse zum ausprobieren oben.

mfg

Dieter

Fuerchau
25-06-04, 14:37
@Dieter
Da muss ich dich leider enttäuschen. Wenn das ginge, würde ich nicht so viel QM-Queries brauchen. Die Hilfe auf dem Ausdruck-Feld beschreibt genau, welchen "Funktionen" erlaubt sind und das sind zur Zeit "SUBSTR, CHAR, DIGITS, VALUE, DATE, DAY, HOUR, MINUTE, SECOND, MICROSECOND, TIME, TIMESTAMP, MONTH, YEAR, CURRENT(DATE, TIME, TIMESTAMP)".

Ausserdem, was nützt mir eine Funktion mit Fortschreibung (über Scratchpad), wenn der ORDER BY erst hinterher läuft und somit eine ggf. fortlaufende Nr. nicht gewährleistet ist ?
Naja, man könnte ja auch hier mit einem Subselect arbeiten, allerdings erlaubt ein Subselect wiederum kein Union und ich die Satznummer erst NACH dem Sort vergeben muss.