AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

QReport und GROUP BY

Ein Thema von Hansa · begonnen am 19. Mai 2006 · letzter Beitrag vom 26. Mai 2006
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

QReport und GROUP BY

  Alt 19. Mai 2006, 13:13
Hi,

es gibt doch in QReport die Komponente QRGroup, oder so. In der Hilfe steht ein Beispiel mit alphabetischer Sortierung. Dort steht man solle für den Zweck, bei Änderung des Anfangsbuchstaben z.B. das so machen und hierzu eine QRExpr verwenden : copy(??,1,1); Jetzt die Frage : wie weit geht diese Sache. Kann man eigene Prozeduren usw. verwenden ? Was muß genau als Bedingung der Gruppierung verwendet werden ? Das Beispiiel geht mir nicht weit genug. Geht das mit 2 Datenbankfeldern ? Also eine Gruppierung in Abhängigkeit dieser beiden Felder ? Sagen wir mal : Bool-Felder ? Das wären 4 Möglichkeiten : (true,true),(true,false)... Ändert sich eines der Felder, dann neue Gruppe mit neuer Überschrift.

Edit : eine in dieser Art sortierte Datenmenge ist hierbei gegeben.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

Re: QReport und GROUP BY

  Alt 19. Mai 2006, 14:55
Hallo Hansa,

den Wert von Expression kannst du am besten mit dem zugehörigen Editor erstellen. Eigene Funktionen kannst du dabei zwar nicht nutzen, aber dass ist in der Regel auch nicht nötig.
Zu deinem Beispiel: Wenn du z.B. eine Tabelle hast, in der Feld1 und Feld 2 Boolsche Felder sind, dann lautet ein möglicher Ausdruck, der bei jeder Änderung der Kombination einen anderen Wert liefert:

Code:
IF(Query1.feld1,IF(Query1.feld2,1,2),IF(Query1.feld2,3,4))
Die zugehörige SQL Abfrage wäre:

SQL-Code:
select feld1, feld2, feld3 from myTable
order by feld1, feld2
So erhälst du bis zu vier Gruppen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: QReport und GROUP BY

  Alt 19. Mai 2006, 16:42
Hat das Teil eine eigene Syntax, oder wie ? Also QrExpr ? Die auszuwertenden Datenbankfelder gibt es so nicht. Es sind vorher ermittelte Rückgabewerte. Ich zitiere aus offiziellem Tuto, damit keiner groß Suchen muß :

Zitat:
Groups allow you to generate extra bands between groups of records. For example, if you were listing an address book, you might wish to group all the contacts whose name began with the same capital letter, and to print that letter in large type above each group – in fact this is what we do in the example.
To create a group:
1 Create a simple report as described in ‘A first report’ above.
2 Set the IndexName property of the TTable component to ‘ByCompany’.
3 Drop a TQRGroup component onto an existing TQuickRep object, where it appears as a new band. This band will be the group header. Every time the group ‘breaks’, this band will be printed.
4 Set the Expression property to

COPY(Table1.Company, 1, 1)

This extracts the first character from the ‘Company’ field.
5 Drop a TQRExpr control onto the header band. Set its Expression property to the same value:

COPY(Table1.Company, 1, 1)

In addition you can also add a group footer band. Although we don’t really need one here, we’ll make one for practice.
6 Select the TQRBand component on the palette and drop it on the report. Rename it to FooterBand1.
7 Click on the group header band once more. Set the TQRGroup.FooterBand property to FooterBand1.
8 Drop a TQRLabel onto the footer band. Set its Caption property to ‘FOOTER’.

If all has gone to plan, you should be looking at something like Figure 11:
Wie man sieht : die benutzen einfach Copy. Da QReport nun eine native Komponente ist, vermute ich, daß alle im Programm verfügbaren Funktionen verwendet werden können. Aber das ist eben nur Vermutung. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: QReport und GROUP BY

  Alt 19. Mai 2006, 18:39
Thema fast erledigt. Trick : mit AS den einzelnen Gruppen einfach einen Namen geben. In die Expression gehört dann nur der "Feldname", obwohl kein solches DB-Feld existiert. 8) Aber was solls. Offen ist aber immer noch, was genau in die Expression reinkommen kann. Und die Syntax davon, die kapiere ich auch nicht. Wieso wird QR eigentlich überall kritisiert ? Habe mir den kompliziertesten Report vorgeknöpft, den es hier geben kann und da ist kein unüberwindliches Hindernis zu erkennen. Aber er ist auch erst halb fertig.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: QReport und GROUP BY

  Alt 21. Mai 2006, 10:08
Hallo Hansa,

im Expression Ausdruck kann alles stehen, was man auswerten kann. Dabei können Datenbankfelder, Funktionen, (vordefinierte) Variablen und Operatoren zwischen diesen eingesetzt werden. Der Ausdruck wird für jeden Datensatz ausgewerten. Unterscheidet sich das Ergebnis der aktuellen Auswertung von dem Ergebnis der vorherigen Auswertung, wird eine neue Gruppe ausgegeben.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: QReport und GROUP BY

  Alt 26. Mai 2006, 14:09
Hi,

noch ein kleines Problemchen. Die Gruppierung ist jetzt wie gewünscht. Allerdings wird der Inhalt der zu QRExpr gehörenden Werte mitgedruckt. Das ganze sieht jetzt so aus :
SQL-Code:
SELECT 1 as REIHENFOLGE,... WHERE...
UNION
SELECT 2 as REIHENFOLGE,... WHERE...
UNION
SELECT 3 as REIHENFOLGE,... WHERE...
ORDER BY 1,2,3
Irgendwo auf dem Blatt steht jetzt noch 1,2 oder 3.
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: QReport und GROUP BY

  Alt 26. Mai 2006, 21:13
Jetzt ist noch ein ganz anderes Problem aufgetaucht. 8) Nach der ersten Gruppe sollen noch ein paar Zeilen ausgedruckt werden. Sagen wir mal ein Array, wobei die Anzahl der Zeilen vor dem Druck nicht bekannt ist. Dann erst soll die zweite Gruppe gedruckt werden. Nun habe ich ja noch den Group-Footer. Besteht die Möglichkeit innerhalb des Group-Footers eine variable Anzahl an Zeilen zu drucken ? Mir gelingts jedenfalls nicht.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz