Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bänder in RaveReports abhängig vom Inhalt drucken? (https://www.delphipraxis.net/21484-baender-ravereports-abhaengig-vom-inhalt-drucken.html)

frankg 3. Mai 2004 17:43


Bänder in RaveReports abhängig vom Inhalt drucken?
 
Hallo!

Heute habe ich eine Frage zu Rave Reports. Stellt Euch mal vor, dass ich eine Datenmenge habe, die in einem Rave-Detailband ausgedruckt werden soll. Das funktioniert an sich auch alles Prima. Ist es mit Rave-Reports möglich, bevor eine Kopie des Detailbandes mit Daten geüllt wird, die Daten zu untersuchen und dann anhand der Daten zu entscheiden, ob die jeweilige Zeile erzeugt wird oder nicht? Hierzu noch mal ein kleines Beispiel:

Die ungefilterten Daten (ohne die oben beschriebene Funktion) liefern:

Code:
                       Feld1            Feld2           Feld3
01.01.2001 00:00:00      10                20              30
01.01.2001 00:10:00      0                0              0
01.01.2001 00:20:00      20               20              30
Mein gewünschtes Ergebnis lautet:

Code:
                       Feld1            Feld2           Feld3
01.01.2001 00:00:00      10                20              30
01.01.2001 00:20:00      20               20              30
Geht das irgendwie mit Rave Reports?

Viele Grüsse

Frank

Hansa 3. Mai 2004 18:25

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Das würde ich aber schon vor Rave machen, direkt wenn die Daten zusammengesucht werden. 8)

MrSpock 3. Mai 2004 18:36

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Hallo frankg,

ich würde es auch so machen, wie Hansa vorgeschlagen hat. Falls du aber trotzdem zur Erstellzeit Filtern möchtest, musst du Code für das OnValidateRow Event der DatasetConnection schreiben

z.B:
Delphi-Quellcode:
procedure TForm1.RPDSItemsValidateRow(Connection: TRvCustomConnection;
  var ValidRow: Boolean);
begin
   ValidRow := QItems.FieldByName('ListPrice').AsFloat < 260;
end;

frankg 3. Mai 2004 18:37

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Zitat:

Zitat von Hansa
Das würde ich aber schon vor Rave machen, direkt wenn die Daten zusammengesucht werden. 8)

Hi Hansa!

Gute Idee. Aber das ist möglicherweise noch schwieriger! Ich erzeuge in Oracle mittels einer schwierigen Abfrage eine Kreuztabelle und müsste diese Zeilen dann noch in dieser Abfrage filtern. Wie das gehen soll ist mir noch schleierhafter (aber ich arbeite daran...)

Viele Grüsse und vielen Dank

Frank

MrSpock 3. Mai 2004 18:40

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Hallo frankg,

hast du OnValidateRow versucht?

frankg 3. Mai 2004 18:43

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Zitat:

Zitat von MrSpock
Hallo frankg,

ich würde es auch so machen, wie Hansa vorgeschlagen hat. Falls du aber trotzdem zur Erstellzeit Filtern möchtest, musst du Code für das OnValidateRow Event der DatasetConnection schreiben

z.B:
Delphi-Quellcode:
procedure TForm1.RPDSItemsValidateRow(Connection: TRvCustomConnection;
  var ValidRow: Boolean);
begin
   ValidRow := QItems.FieldByName('ListPrice').AsFloat < 260;
end;

Hallo MrSpock!

Vielen Dank für Deine Antwort. Das Problem mit dem vorher filtern ist, dass die Daten aus einer Kreuztabellenabfrage unter Oracle kommen und ich nicht weiss, wie ich dieses fiese Ding filtern soll. Das ganze sieht im Prinzip so aus:

SQL-Code:
SELECT
  to_char(datum_zeit, 'DD.MM.YYYY HH24:MI:SS') AS ZEITPUNKT,
  sum(decode(FELD, 'FELD1', wert_zustand,0)) FELD1,
  sum(decode(FELD, 'FELD2', wert_zustand,0)) FELD2,
  sum(decode(FELD, 'FELD3', wert_zustand,0)) FELD3
FROM
  V_WERTPBN
WHERE
  (DATUM_ZEIT >= to_date('30.04.2004, 00:00:00', 'DD.MM.YYYY, HH24:MI:SS')) AND
  (DATUM_ZEIT <= to_date('30.04.2004, 21:00:00', 'DD.MM.YYYY, HH24:MI:SS'))
GROUP BY
  datum_zeit
ORDER BY
  datum_zeit
Bevor jemand auf die Idee kommt einen View zu erstellen - Die Abfrage wird dynamisch erstellt und zeigt nur einen kleinen Teil der Datengesamtheit, d.h. an dieser Stelle kann ich keinen View einrichten.

Wenn da jemand eine Idee hat wäre ich glücklich :thuimb:

Viele Grüsse

Frank

MrSpock 3. Mai 2004 18:49

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Hallo frankg,

OnValidateRow filtert ja nicht vorher, sondern direkt vor dem Ausdrucken kann hier eine Bedingung angegeben werden, die entscheiden, ob der aktuelle Datensatz gedruckt werden soll oder nicht. In meinem Beispiel wird der aktuelle Datensatz nicht gedruckt, wenn der Preis größer oder gleich 260 Euronen ist.

frankg 3. Mai 2004 18:50

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Zitat:

Zitat von MrSpock
Hallo frankg,

hast du OnValidateRow versucht?

Hi MrSpock!

Das habe ich noch nicht versucht, aber das geht ja auch nur im Sourcecode von Delphi, wenn ich es richtig sehe. Ich bräuchte was, das in der Rave-Language funktioniert....

Trotzdem schon mal vielen Dank

Frank

MrSpock 3. Mai 2004 18:54

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Hallo frankg,

schreibst du denn deine Anwendung nicht in Delphi?

Ansonsten käme vielleicht noch Scripting in Frage, aber dazu ist die Dokumentation sehr dürftig. Ich habe noch keine Möglichkeit gefunden über Scripting das Drucken eines Datensatzes zu verhindern, aber warte mal auf Merlin unseren Rave-Experten, der hat immer einen Trumpf im Ärmel :mrgreen: .

frankg 3. Mai 2004 19:00

Re: Bänder in RaveReports abhängig vom Inhalt drucken?
 
Zitat:

Zitat von MrSpock
Hallo frankg,

schreibst du denn deine Anwendung nicht in Delphi?

Ansonsten käme vielleicht noch Scripting in Frage, aber dazu ist die Dokumentation sehr dürftig. Ich habe noch keine Möglichkeit gefunden über Scripting das Drucken eines Datensatzes zu verhindern, aber warte mal auf Merlin unseren Rave-Experten, der hat immer einen Trumpf im Ärmel :mrgreen: .

Hi MrSpock!

Die Anwendung ist schon in Delphi geschrieben, es soll aber für die Anwender möglich sein, beliebige Reports mit dem RaveReport-Editor zu erstellen und mit dem System zu verwenden, d.h. ich kann an dieser Stelle nicht auf Delphi zurückgreifen, weil das die Anwender auch nicht können. Das mit Merlin das stimmt - der weiss echt alles über RaveReports. :thuimb:

Viele Grüsse und vielen Dank

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 1 von 2  1 2      

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