Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TQuickreport & Expression (https://www.delphipraxis.net/76671-tquickreport-expression.html)

Moony 7. Sep 2006 21:58


TQuickreport & Expression
 
Hallo zusammen,

ich habe einen Quickreport erstellt, welches an ein Dataset mit den entsprechenden Feldern gebunden ist. Da der Inhalt meines Datasets sich aus mehreren Tabellen zusammensetzt, muß ich innerhalb des Quickreports einen Wert für jede Zeile neu überprüfen lassen.
Hierzu habe ich ein Feld des Typs TQRExpr eingefügt und hier drin eine If Abfrage gesetzt. Das funktioniert einwandfrei. Mein Problem besteht darin, dass ich für jede neue Zeile (aus dem Dataset) in meinem Report auch die Expression-Komponente die If-Abfrage neu durchführen muss.

Beispiel:
Ich habe zwei Kategorien und jede Kategorie besitzt einen anderen Preis. Das Dataset besitzt 5 Datensätze. Im Expressionfeld steht
Delphi-Quellcode:
IF(Dataset.Kategorie = '1',Dataset.Preis1,Dataset.Preis2)
. So, und diese Abfrage soll für jeden Datensatz neu überprüft und ausgeführt werden.


Ich hoffe das ist soweit verständlich genug, was gemeint ist.

Hoffe auf eine schnelle Lösung & Danke im Vorraus.

Gruß, Moony

omata 7. Sep 2006 22:02

Re: TQuickreport & Expression
 
Hallo Moony,

warum macht du diese Auswertung nicht im OnBeforePrint? Da hast du viel mehr Möglichkeiten und benötigst keine Expression-Komponente, da kannst du Delphicode nutzen.

Aber warum machst du diese ganzen Geschichten nicht gleich im SQL-Statement?

Gruss
Thorsten

Moony 8. Sep 2006 08:25

Re: TQuickreport & Expression
 
Ich glaube SQL Statement dürfte leicht schwierig werden, weil mein Statement bereits aus 4 JOIN-Verknüpfungen besteht und ich weiß nicht wie ich diese Überprüfung da auch noch einbringen soll. Eventell mit einer IF-Abfrage bei der Auswahl der Datenfelder, aber ich glaube da hat er irgendwas zu meckern gehabt. Ich kanns ja mit dem BeforePrint versuchen was da raus kommt.

Moony 9. Sep 2006 11:04

Re: TQuickreport & Expression
 
Man sollte auch den Wert richtig schreiben, dann funktioniert das auch. :oops:


Aber da wir schon bei Expression sind, ich muß von einem anderen expression-Feld den Wert nehmen, auswerten und in ein anderes Feld schreiben.

Beispiel:
Delphi-Quellcode:
  Wert := StrToFloat(Epr1.Value.strResult);
  if Dataset.FieldByName('Feld1').AsString = 'Nein' then
    Wert := Wert + StrToFloat('0,50');
  qrLabel.Caption := FloatToStr(Wert);
Das Ganze habe ich in die OnPrint-Routine des Labels eingebaut. Funktioniert so ganz gut, nur wenn er nicht bei allen Datensätzen nur das Ergebnis von dem letzten Datensatz anzeigen würde.

Hoffe jemand hat ne Lösung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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