Berichte anpassen (+)

 

<< Klicken Sie, um das Inhaltsverzeichnis anzuzeigen >>

Navigation:  Berichtswesen (+) >

Berichte anpassen (+)

 

Die Berichteverwaltung finden Sie unter Administration|Berichteverwaltung:

clip0363

Unter (1) finden Sie die Liste aller Berichte, die im System verfügbar sind. Sie können dort im Rechtsklickmenü Ordner anlegen und Berichte per Ziehen und Ablegen zwischen Ordnern umsortieren. Sie werden innerhalb der Ordner alphabetisch sortiert. Ebenfalls über Rechtsklick in (1) können Sie Berichte umbenennen, wenn es sich um sebst angelegte Berichte handelt. Selbst angelegte Berichte können unter (7) auch bearbeitet werden. Dafür ist entsprechendes Know-How erforderlich, der ITC Service kann hier unterstützen und im Auftrag Berichte entwickeln.

Standardberichte werden mit Aktualisierungen hinzugefügt und können nur umsortiert und deaktiviert werden. Die Aktivierung und Deaktivierung geschieht über das jeweilige Kästchen (2).

clip0364

Unter (3) können Berichte angelegt, kopiert und auch importiert und exportiert werden. Die Kopierfunktion ermöglicht die Anpassung von Standardberichten, in dem man eine Kopie erzeugt und das Original deaktiviert. Die Kopie kann dann bearbeitet werden.

Berichte können hier getestet werden, in dem man über (4) in den Testmodus umschaltet und dort den Bericht mit (6) ausführt. Fehler, die bei der Scriptausführung auftreten, werden unter (8) angezeigt.

Grundaufbau eines Scripts

Scripte werden in Pascal Script erstellt. Diese Scriptsprache folgt der Syntax von Pascal. Im Folgenden ist der Vorgang der Scripterstellung in Beispielen erklärt., der Script muss immer die folgenden drei Methoden enthalten:


procedure defineParameters;

var

  sl: TStringList;

begin

  sl:=TStringList.create;

  sl.add('Option 1'+#255+'$1');

  sl.add('Option 2'+#255+'$2');

  sl.add('Option 3'+#255+'$3');

  sl.add('Option 4'+#255+'$4');

  AddReportParam('Texteingabe','textparam','Textvorgabe','S',nil);

  AddReportParam('Exaktes Datum','dateparam','22.05.1961','D',nil);

  AddReportParam('Fuzzy Datum','fuzzyparam','2009','U',nil);

  AddReportParam('Ganzzahl','intparam','4711','I',nil);

  AddReportParam('Fließkommazahl','floatparam','47.11','F',nil);

  AddReportParam('Einzelauswahl','listparam','Option 2'+#255+'2','L',sl);

  AddReportParam('Mehrfachauswahl','mlistparam','','M',sl);

end;

Die Funktion defineParameters dient dazu, alle für den Bericht erforderlichen Parameter zu definieren. Im obigen Beispiel werden alle möglichen Parameter verwendet. Sie wird aufgerufen, wenn die maske vor der Berichtausführung aufgebaut wurde. Die Vorgabewerte werden nur eingetragen, wenn keine Vorgabewerte für den Parameter aus einem vorherigen Aufruf des Berichts gespeichert wurde.


function checkParameters: String;

begin

  if StrToInt(getParam('intparam')) > 1000 then

    begin

      result:='Bitte nicht mehr als 1000 unter Ganzzahl eingeben!';

      exit;

    end;

  if (pos('$1$',getParam('mlistparam')+'$')>0) and (pos('$2$',getParam('mlistparam')+'$')>0) then

    begin

      result:='Bitte nicht die Optionen 1 und 2 zusammen auswählen!';

      exit;

    end;

  result:=''; 

end;

Die Funktion checkParameters prüft die eingegebenen Parameter bei Start des Berichts auf Plausibilität. Diese prüfung ist nur in Ausnahmefällen erforderlich, da EMIL bereits die EIngaben auf Vollstndigkeit und auch auch korrekte Formate prüft. Im obigen Beispiel wird geprüft, ob der Ganzzahlparameter nicht größer als 1000 ist und dass in der Mehrfachauswahl eine bestimmte Auswahlkombination nicht ausgewählt ist.

Im Fehlerfall muss diese Funktion eine Fehlermeldung zurückliefern. Ist alles OK, muss ein Leerstring als result zurückgegeben werden.


procedure CreateContent(ReportName: String);

var ds: TDataset;

    Initial, lastInitial: String; 

begin

  initReport(ReportName+' '+getParam('intparam')+' '+getParam('textparam'),Reportname,false);

  ds:=getDataset('select firstname,lastname from subject where id < :id order by lastname,firstname',[1000]);

  lastInitial:='';

  while not ds.eof do 

    begin

      // Make sure it doesnt crash on empty lastname!

      Initial:=ds.Fields[1].AsString+'?';

      Initial:=Initial[1];

      if Initial<>lastInitial then 

        begin

          lastInitial:=Initial;

          printSubHeader('Nachnamen mit "'+Initial+'"',true);

        end;

      printContent('',ds.Fields[0].AsString + ' ' + ds.Fields[1].AsString,true);

      ds.next;

    end;

end;

Die Prozedur CreateContent erhält über den Parameter ReportName den Namen des Berichts, wie er angezeigt wird. dadurch wird auch eine Namensänderung berücksichtigt.

Die Funktion initReport bereitet den Bericht vor, in dem Kopf- und Fußzeile aowie die Ausrichtung (false=Hochformat, true=Querformat) angegeben werden. Hier empfiehlt es sich, den Parameter ReportName aus Konsiszenzgründen zu verwenden.

getDataset erzeugt die Basisdatenmenge für den Bericht. Dafür wird SQL verwendet, das mit Parametern bestückt werden kann. Diese Datenmenge wird anschließend Satz für Satz abgearbeitet um über printContent und printSubHeader die Daten in den Bericht zu übertragen.

Die Datenmenge wird von EMIL automatisch geschlossen, wenn der Bericht erzeugt ist. Das selbe gilt für die im Script erstellten Objekte wie Stringlisten etc. Diese werden von EMIL abgeräumt.

Eine Referenz der verfügbaren Funktionen findet sich im folgenden Abschnitt. ITC bietet bei Bedarf Online-Trainings an, um das Entwickeln komplexer Berichte in EMIL zu erlernen.