#1 2012-11-06 00:40:07

richie1985
Member
Registered: 2012-11-01

Parameter "Letzter Monat"

Hallo,

gibt es die Möglichkeit einen Parameter zu generieren der den "Letzten Monat" hergiebt?

Offline

#2 2012-11-06 09:55:00

Thorsten J. Krause
datenwerke
Registered: 2012-02-15
Website

Re: Parameter "Letzter Monat"

Hallo Richie,

ich bin mir nicht sicher, ob ich Dich richtig verstehe. Was genau hast Du denn vor? Prinzipiell gibt es für einen Datumsparameter die Möglichkeit den Defaultwert mit Hilfe einer Formel anzugeben und diesen so zum Beispiel immer auf den ersten Tag des laufenden Monats voreinzustellen.

Für Dynamische Listen besteht darüber hinaus die Möglichkeit Filter mit Datumsarithmetik zu definieren und wenn Du sowieso Birt- oder Jasper Berichte benutzt, geht das ganze auch ganz ohne irgendetwas in ReportServer zu machen.

Erklär doch nochmal, was Du genau vor hast, nicht dass ich Dir jetzt was unnötig kompliziertes erkläre.

Grüße
Thorsten

Offline

#3 2012-11-06 11:57:56

richie1985
Member
Registered: 2012-11-01

Re: Parameter "Letzter Monat"

Ja richtig, mein Ziel ist eigentlich nur folgendes:

Ich habe ein Bericht in iReport generiert, diesen möchte ich jetzt jeden ersten des Monats laufen lassen,der Bericht soll mir dann die Werte des letzten Monats ausgeben. Ich weiss ich kann das Query gleich so schreiben, damit er immer den letzten Monat nimmt. Würde gern aber dem User beim Einrichten des Zeitplans die Möglichkeit geben zu wählen ob "Gestern, Letzte Woche, Letzten Monat use"

Vielen Dank und Gruss!


Erik

Offline

#4 2012-11-06 16:46:04

Marcel Berger
InfoFabrik
Registered: 2012-03-14
Website

Re: Parameter "Letzter Monat"

Hallo Erik,

die von Dir gewünschte Auswahl kann man sehr verschieden realisieren. Es hängt immer davon ab:
- wer den Bericht benutzen soll,
- wie die Daten strukturiert sind
- wie viel Flexibilität Du erlauben möchtest
- wie einfach der Parameterdialog sein soll.

Hier zwei Beispiele:

Ausgangslage
Dein Jasperbericht hat eine Query mit einem Datumsfeld z.B.
SELECT ... FROM tab
WHERE DATUM BETWEEN $P{DATUM_VON} AND $P{DATUM_BIS}


Möglichkeit 1 - kurzer Auswahldialog und Lösung mit "mehr" SQL
Du möchtest in einer Dropdown Box die Auswahl "Gestern", "letzte Woche" und "letzten Monat" zulassen.

1. Du legst einen Datenquellen Parameter an.
2. Als Query verwendest du
     SELECT 1 id, 'Gestern' der_text FROM DUAL UNION ALL
     SELECT 2 id, 'letzte Woche' der_text FROM DUAL UNION ALL
     SELECT 3 id, 'letzten Monat' der_text FROM DUAL
   
    Anmerkung FROM DUAL ist nur Oracle Dialekt nötig.
   
3. Auswahl Modus auf Einfachselektion umstellen
4. Parameter in iReports nutzen.

    Query anpassen je nach dem welche auswahl getroffen wurde wird in der Query eine andere Zeile "wirksam"
    SELECT ... FROM tab
    WHERE ($P{key} = 1 AND DATUM < SYSDATE AND DATUM > SYSDATE -1) OR
          ($P{key} = 2 AND DATUM BETWEEN (SYSDATE-7) AND DATUM > (SYSDATE -1)) OR
          ($P{key} = 3 AND DATUM BETWEEN add_months(SYSDATE,-1) AND DATUM > (TRUNC(SYSDATE,'MOTH) -1))
               
   
    Je nach SQL Dialekt musst Du die Bedingung anpassen.
   
Möglichkeit 2 - Zwei Datumsparameter und "wenig" SQL
Du möchtest dem Anwender eine flexible Auswahl erlauben, dass er beliebe Zeiträume auswählen kann.

  1. Du legst zwei Datumsparameter DATUM_VON und DATUM_BIS an.
  2. Als Query in iReports verwendest Du
     SELECT ... FROM tab
     WHERE DATUM BETWEEN $P{DATUM_VON} AND $P{DATUM_BIS}

  3. Bericht ausführen!
 
  4. Rechtsklick auf den Datumsparameter "In Formelmodus wechseln"

  5. Formel erzeugen
 
  6. Als Variante speichern.

Im Formelmodus kommt die Unified Expression Language (EL) zum Einsatz.
(http://jcp.org/aboutJava/communityprocess/final/jsr245/ und
http://juel.sourceforge.net)

Mit dem today Object kannst Du auf den Kalender zugreifen und die Parameter entsprechend
einschränken.

Hier ein kleiner Auszug aus unserem Benutzerhandbuch:

Benutzung des today-Objekts
[...]
Mit den nachfolgenden Funktionen können Sie das Datum, bzw. die Uhrzeit die im Kalender
hinterlegt ist manipulieren.

firstDay              Setzt den Kalender auf den Mitternacht des ersten Tages des aktuellen Monats               
lastDay              Setzt den Kalender auf die letzte Sekunde des letzten Tages des aktuellen Monats           
addDays            Setzt den Kalender die angegebene Zahl an Tagen weiter/zurück                               
addMonths         Setzt den Kalender die angegebene Zahl an Monaten weiter/zurück                             
addYears            Setzt den Kalender die angegebene Zahl an Jahren weiter/zurück                             
setDay               Setzt den Kalender auf den angegebenen Tag                                                 
setMonth            Setzt den Kalender auf den angegebenen Monat                                               
setYear               Setzt den Kalender auf das angegebene Jahr                                                 
clearTime           Setzt die Uhrzeit auf Mitternacht zurück                                                   
addHours           Setzt den Kalender die angegebene Zahl an Stunden weiter/zurück                             
addMinutes         Setzt den Kalender die angegebene Zahl an Minuten weiter/zurück                             
addSeconds        Setzt den Kalender die angegebene Zahl an Sekunden weiter/zurück                           
setHours             Setzt die Uhrzeit auf die angegebene Stunde                                                 
setMinutes          Setzt die Uhrzeit auf die angegebenen Minuten                                               
setSeconds         Setzt die Uhrzeit auf die angegebenen Sekunden                                             
format                Diese Funktion wandelt das Datum in einen Text im angegebenen Format. Dies ist notwendig, um

Vergleiche auf Spalten vorzunehmen die nicht vom Typ Datum sind. (vgl. Tabelle „Datumsformat“ auf
Seite A-63)
Beispiel: Sie möchten alle Rechnungen des vergangenen Monats filtern. Dazu können Sie
folgenden Einschlussfilter definieren:
${today.firstDay().addMonths(-1)} - ${today.firstDay().addSeconds(-1)}

[...]


Je nach dem wie deine Daten strukturiert sind und welche Randbedingungen Du noch hast kann die eine oder andere Lösungsmöglichkeit besser für Dich sein.

Viele Grüße

Marcel

Offline

#5 2014-05-02 09:27:51

Malte
Member
Registered: 2014-05-02
Website

Re: Parameter "Letzter Monat"

Hallo Marcel,

Ich möchte das Datum bei den Dateinamen im Anhang der eingeplanten Berichte ändern. Momentan steht in der scheduler.cf

<attachment>
<name>rep-${report.getName()}-${RS_CURRENT_DATE}</name>
</attachment>

Und die Ausgabedatei hat am Reportnamen noch das Datum und die Uhrzeit der Ausführung des geplanten Berichts.

Kann ich dort z.B. auch

<attachment>
<name>rep-${report.getName()}-${today.firstDay().addMonths(-1)} - ${today.firstDay().addSeconds(-1)}</name>
</attachment>

einfügen, um dass Datum auf das sich der Report bezieht zu erhalten? (Vorrausgesetzt der Report wird mit den gleichen Parametern aufgerufen)

oder ist man auf die vorgegebenen "Available Substitutions" (Reportserver Configguide page 28) festgelegt?

Viele Grüße
Malte

Offline

#6 2014-05-03 17:21:29

Arno Mittelbach
datenwerke
Registered: 2012-02-14

Re: Parameter "Letzter Monat"

Hallo Malte,

in der aktuellen Version ist das leider nicht direkt vorgesehen. Man könnte es über ein Skript nachrüsten, das den Hook

net.datenwerke.rs.utils.juel.hooks.JuelServiceHook

implementiert. Über diesen können weitere Subsitutions hinzugefügt werden.

Ansonsten habe ich ${today} als Standard Substitution für die kommende Version mit aufgenommen.

Grüße
Arno

Offline

#7 2015-01-26 15:09:16

richie1985
Member
Registered: 2012-11-01

Re: Parameter "Letzter Monat"

Hat sich hier irgendwas getan?

Nur mal ein Bild aus Jasper wie wir es aktuell umsetzen:


Mrxjcu8.png

Default ist im Dropdown "Zeitraum" Datum ausgewählt, in dem Fall werden die beiden Datumsfelder benutzt.

Bei allen anderen wird der Zeitraum automatisch berechnet und an den Report übergeben.

Auch ist es wichtig das das Fromat exakt dd.MM.yyyy hh:mm:ss ist.

Kann ich das mit reportserver abbilden?

Gruss!

Erik

Offline

#8 2015-01-28 16:24:43

Arno Mittelbach
datenwerke
Registered: 2012-02-14

Re: Parameter "Letzter Monat"

Hi,

bei einem Datums-Parameter kann man per rechter Mausstaste in den Formelmodus wechseln und so ${today} Ausdrücke verwenden.

Grüße
Arno

Offline

Board footer

Powered by FluxBB