Zentrale Speicherung für Filter von Reports

12. Dezember 2016 10:50

Hallo Zusammen,

ich möchte verschiedene Reports automatisiert starten. Dazu müssten diese Reports auf bestimmte Art und Weise gefiltert werden (Auch derselbe Report mit unterschiedlichen Filtern).
Dafür würde ich gerne eine Tabelle erstellen, wo die jeweiligen Filter für die Reports abgespeichert werden.
Ideal wäre eine ähnliche vorgehensweise wie bei dem Datatype "TableFilter", der sich aber nicht so verwenden lässt, wie ich es gerne hätte.

Hat jemand eine Idee wie man das realisieren kann?

Re: Zentrale Speicherung für Filter von Reports

12. Dezember 2016 11:09

Du kannst die Filtereinstellungen per XML abspeicher. Dabei kann dir folgendes Helfen:
Code:
XmlParameters := REPORT.RUNREQUESTPAGE(ReportID);

Beim Starten des Reports kannst du den Parameter mit übergeben.

Gruß
Ted

Re: Zentrale Speicherung für Filter von Reports

12. Dezember 2016 11:19

Ted hat geschrieben:Du kannst die Filtereinstellungen per XML abspeicher. Dabei kann dir folgendes Helfen:
Code:
XmlParameters := REPORT.RUNREQUESTPAGE(ReportID);

Beim Starten des Reports kannst du den Parameter mit übergeben.
Das bezieht sich leider nur auf neuere NAV-Versionen.
In Version 2009 ist das soweit ich weiß nicht möglich dort einzugreifen. Nicht ohne jeden Bericht anzupassen. Eventuell mit Record-Varianten...

Re: Zentrale Speicherung für Filter von Reports

12. Dezember 2016 11:21

Vielleicht noch als ergänzende Information: Die Reports sollen hinterher vom NAS aufgerufen werden.

Re: Zentrale Speicherung für Filter von Reports

20. Dezember 2016 13:59

OKR hat geschrieben:Vielleicht noch als ergänzende Information: Die Reports sollen hinterher vom NAS aufgerufen werden.


Ich würde das so machen, als Beispiel den Report 715:

Eine Tabelle welche die Filter gespeichert hat:

Code Filtertext

A N21*|N28*|N31*|N32*|N36*|N86*
B H31*|H32*|H33*

Eine Funktion: RunReportWithFilter()
Lokale Variablen:
recFilterTxt (Record FiltertextTabelle )
locItem ( Record Item)
locR715 ( Report 715)

Funktion:
Code:
IF recFilterTxt.GET('A') THEN BEGIN
  locItem.SETFILTER("No.", recFilterTxt.ItemFilterDescription);
  IF locItem.FINDSET THEN BEGIN
    report715.SETTABLEVIEW(locItem);
    report715.USEREQUESTFORM(TRUE); // True zum testen :) FALSE für den NAS)
    report715.RUN;
  END;
END;