![]() |
AW: Wie Firebird richtig abfragen weil drucken extrem langsam..
Hallo,
Zitat:
mindestens die letzten 3 sind prepared, weil ja bis auf einen variablen Tei (=Parameter) immer das gleiche abgefragt wird. Woher weist du eigentlich, dass deine Queries ordentlich "indiziert" sind ? Heiko |
AW: Wie Firebird richtig abfragen weil drucken extrem langsam..
Liste der Anhänge anzeigen (Anzahl: 2)
Für optimale Geschwindigkeit müsste man den gesamten Report neu aufbauen:
Zuerst die ganzen Einzelabfragen auf eine reduzieren:
Code:
Jetzt wird nur noch eine Abfrage an den Server gesendet und der Server muss nur einmal einen großen Datenblock zurückgeben.
select * {oder einschränken welche Felder gebraucht werden}
from SubDatenbank1 left join SubDatenbank2 on {hier 1 und 2 verknüpfen} left join SubDatenbank3 on {hier 2 und 3 verknüpfen} left join SubDatenbank4 on {hier 3 und 4 verknüpfen} where {Bedingung für SubDatenbank1} Der Report bekommt eine Pipeline die mit dem Dataset verbunden wird. Im Reportbuilder erstellt man sich für jede Unterabfrage eine Gruppe, gruppiert wird über das Feld aus der Join-Bedingung: Siehe: Groups.jpg Die Darstellung der Daten erfolgt im einfachsten Fall so: Informationen aus SubDatenbank1 in GroupHeader0/GroupFooter0 Informationen aus SubDatenbank2 in GroupHeader1/GroupFooter1 Informationen aus SubDatenbank3 in GroupHeader2/GroupFooter2 Informationen aus SubDatenbank4 in Detail Siehe: ReportGroups.jpg Falls nicht für jeden Masterdatensatz auch mindestens ein Detail in der untergeordneten Datenmenge existiert, kann man im BeforePrint des Detail, bzw. GroupHeader/GroupFooter die Felder auf Null prüfen und abhängig davon das jeweilige Band ein- oder ausblenden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz