Autor Beitrag
TimHa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88



BeitragVerfasst: Di 14.03.06 21:41 
Hallo!

Ich habe einen Bericht, der auf ein Query mit folgendem SQL Code zugreift:

ausblenden Quelltext
1:
2:
3:
select *
from artikel
order by hersteller, artikelnr;


Ich hätte die Abfrage aber lieber so:

ausblenden Quelltext
1:
2:
3:
4:
select *
from artikel
group by hersteller
order by artikelnr;


In meinen Quickreport habe ich eine Gruppenkopfzeile eingefügt. In diese Zeile habe ich ein QRDBText Feld gelegt. Wenn ich dort das DataField auswählen will kommt folgende Fehlermeldung:
Wenn ein Group By existiert, muss sich jedes einfache Feld in den Projektoren im group by befinden.

Kann mir jemand bitte kurz erklären, wie ich eine Group By Anweisung in meinen Bericht bekomme?

Danke. :)

Tim
afk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102

Win 2K, Win XP
Delphi 2006 Arch., Delphi 6 Ent., MS-SQL 2005 & 2000
BeitragVerfasst: Di 14.03.06 22:11 
Den "group by" bekommst Du in der Form gar nicht in Deinen Bericht.

In SQL verwendet man einen "group by" im Zusammenhang mit Aggregatfunktionen (SUM, COUNT, MAX, MIN, ...), um die Ergebnisse dieser Funktionen nach zusätzlichen (nicht Aggregat-) Feldern zu Gruppieren. So wie Du ihn einsetzen willst ist es nicht SQL-konform.

Die Fehlermeldung kommt also nicht von dem Quickreport, sondern von der TQuery-Komponente mit der Abfrage.

Ich bin mir nicht ganz sicher, aber wenn ich mich richtig erinnere, dann brauchst Du für einen gruppierten Report zwei TQuery-Komponenten (Master/Detail).


Gruß Axel

_________________
Man muß sparn wo mn knn !
TimHa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88



BeitragVerfasst: Di 14.03.06 22:20 
Ah gut. Das hat mir auch schon etwas weiter geholfen. Danke! :) Habe meinen SQL Code abgeändert und bin jetzt einen Schritt weiter.

Der Bericht soll Artikel anzeigen. Ich möchte aber, dass der Name des Herstellers nur 1x als Überschrift angezeigt wird. Weiß nicht genau, wie ich es ausdrücken soll...

Hersteller Artikelbezeichnung
Hersteller Artikelbezeichnung
Hersteller Artikelbezeichnung

So nicht, sondern so:

Hersteller
...........Artikelbezeichnung
...........Artikelbezeichnung
...........Artikelbezeichnung

soll der Bericht aussehen. :)

Ich habe dazu das Hersteller Feld in den Bereich Gruppenkopfzeile des Berichts gelegt. Die Artikelbezeichnung steht im Detailbereich. Das funktioniert aber nicht ganz. Es wird nur der 1. Hersteller angezeigt und dann alle Artikelbezeichnungen von allen Herstellern.

Muss doch irgendwie funktionieren?

Tim
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Mi 15.03.06 11:44 
Moin :-)

Jo, das wird auch funktionieren ...

Komponenten im Report:
QuickRep1 : der Report als solcher
QRGroup1: Gruppenkopfzeile
QRSubDetail1: Detailband
Query1: Abfrage Artikel/Hersteller


im Objektinspektor für QuickRep1
Dataset -> keine Zuweisung

im Objektinspektor für QRGroup1
Dataset -> Query1
Expression -> Query1.hersteller
Master -> QRSubDetail1

im Objektinspektor für QRSubDetail1:
DataSet -> Query1
HeaderBand -> keine Zuweisung

Die Angabe für QRGroup1.Expression bedeutet nichts anderes, als dass der Gruppenkopf jedesmal dann gedrukt wird, wenn sich der Ausdruck ändert, in Deinem Fall der Hersteller.

Viel Erfolg :-)

Gruß
TimHa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88



BeitragVerfasst: Mi 15.03.06 20:31 
Ich habe versucht alles was du geschrieben hast umzusetzen.

Mein Bericht hat jetzt folgende Bereiche:
Kopfzeile
Titel
Gruppenkopfzeile
Unterdetail
Zusammenfassung
Fußzeile

Ich habe die Eigenschaften der Gruppenkopfzeile + Unterdetail so belegt wie du geschrieben hast.

Dann wollte ich ein QRDBText-Feld in die Gruppenkopfzeile hinzufügen. Wenn ich dann die DataSet Eigenschaft auf Hersteller festlegen will kommt wieder die Fehlermeldung:
Wenn ein Group By existiert, muss sich jedes einfache Feld in den Projektoren im group by befinden.
Was mache ich falsch? :(

Tim
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Mi 15.03.06 21:50 
Moin :-)

Als erstes ändere das SQL-Statement:
ausblenden SQL-Anweisung
1:
2:
3:
select *
from artikel
order by hersteller, artikelnr;


Ist auch schon mal gesagt worden, dass das GROUP BY hier keinen Sinn macht.

Die Gruppierung nach Hersteller, so wie du es gerne haben möchtest, erfolgt im Report.

Probiers noch mal so...

Gruß

Moderiert von user profile iconraziel: Delphi- durch Sql-Tags ersetzt
TimHa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88



BeitragVerfasst: Do 16.03.06 16:24 
Ahhh, jetzt macht alles Sinn und es hat auch funktioniert! Juhu!! :)

user profile iconraiguen hat folgendes geschrieben:

im Objektinspektor für QRGroup1
Dataset -> Query1
Expression -> Query1.hersteller
Master -> QRSubDetail1


Eine Frage noch: Was bedeutet die letzte Zeile? Master Eigenschaft QRSubDetail. Also was legt man damit fest?

Tim
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Fr 17.03.06 15:53 
Moin :-)

Der Gruppenkopf (QRGroup1) muss ja wissen, wann er gedruckt werden darf; in Deinem Report also dann, wenn ein anderer Hersteller in der SQL-Abfrage auftaucht. Und diese Information steht halt im DataSet des QRSubDetail1-Bandes, somit 'steuert' das Detailband den Gruppenkopf, ist also sozusagen der Master ;-)

Gruß
TimHa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 88



BeitragVerfasst: Fr 17.03.06 20:22 
Wunderbar. Danke für deine Hilfe (und Geduld)! :)

Tim
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Sa 18.03.06 18:33 
Moin :-)

Bitte, gern geschehen :-)