Posts mit dem Label Reportdesigner werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Reportdesigner werden angezeigt. Alle Posts anzeigen

Freitag, 21. Dezember 2018

Wie erstellt man einen Standardreport mit dem Reportdesigner im SQL-Manager - Beispiel: Personalliste

In diesem Einführungsbeispiel soll Schritt für Schritt die Entwicklung eines einfachen Reports (Personalliste des Call-Centers) im WINcontact-Reportdesigner auf der Grundlage einer Datenbankabfrage im SQL-Manager vorgestellt werden.

Schritte zur Erstellung eines Reports im SQL-Manager
  1. Erstellung einer Datenbankabfrage, welche die Daten für den Report liefert.
  2. Speichern der Abfrage unter einem eindeutigen Namen in der WINcontact–Datenbank
  3. Designen eines Reports zu genau dieser Abfrage (deren Daten als Banddatenquelle bereitgestellt werden) und Speichern der Reportvorlage in der WINcontact–Datenbank
  4. Freigabe des Reports zur allgemeinen Verwendung
Aufgabenstellung

Der Report soll Name und Privatanschriften aller in WINcontact erfaßten Call-Center-Mitarbeiter in Abhängigkeit ihrer Dienststellung ausgeben, wobei die Auswahl der Dienststellung über einen Dialog im Report (und nicht in der Datenbankabfrage) erfolgen soll

Datenbereitstellung über eine SQL-Abfrage im SQL-Manager

Die Stammdaten der Call-Center-Mitarbeiter, wie sie in der Personalverwaltung des Administration-Centers angezeigt werden, sind in der globalen Tabelle NUTZER enthalten. 

1. Datenbankabfrage erstellen

Die Daten, die der Report benötigt, lassen sich schnell mit folgender Abfrage gewinnen:

SELECT
 ISNULL(ANREDE,'')+' '+ISNULL(VORNAME,'')+' '+NACHNAME AS MITARBEITER,
 CASE
  WHEN TYP=1 THEN 'Administrator'
  WHEN TYP=2 THEN 'Supervisor'
  WHEN TYP=3 THEN 'Controller'
  WHEN TYP=4 THEN 'Callagent'
  END AS DIENSTSTELLUNG,
 PPLZ+' '+PORT AS ORT,
 PORTSTEIL AS ORTSTEIL,
 PSTRASSE+' '+ISNULL(PHNR,'') AS STRASSE,
 PTELEFON, PFAX, PEMAIL
FROM TMGLOBAL..NUTZER
WHERE TYP<5
ORDER BY TYP, NACHNAME
(Außendienstmitarbeiter werden in der Abfrage ignoriert)

2. Abfrage testen und speichern

Diese Abfrage muss in der WINcontact–Datenbank unter einem eindeutigen Bezeichner gespeichert werden, da nur für in der Datenbank gespeicherte Abfragen Reporte erstellt werden können.


Anschließend ist in der Werkzeugleiste des SQL-Managers die Druckfunktion freigeschalten. Über dessen Pull-Down-Menü kann dann der Reportdesigner geöffnet werden. Achten Sie aber darauf, dass die Datenbankabfrage immer auch ein paar Datensätze liefert, um beim Reportdesign einige Testdaten zur Verfügung zu haben.

3. Reportdesign

Nachdem Sie den Reportdesigner gestartet haben, sollten Sie ihn erst einmal Ihren Vorstellungen entsprechend anpassen. Wir empfehlen, dass Sie erst einmal die verfügbaren Symbolleisten und Hilfsfenster aufblenden. Dazu brauchen Sie nur im Hauptmenü unter "Ansicht" – "Symbolleisten" alle verfügbaren Einträge markieren. Der Objektinspektor sowie der Daten- und der Reportbaum sind andockbare Fenster. Sie sollten Sie mit der Maus so verschieben, dass am Ende folgende Anordnung der einzelnen Designerelemente erreicht wird:



Ganz links befindet sich die Palette mit den Reportdesignerobjekten, dann folgt der Objektinspektor, der über die <F11>-Taste ein- und ausgeschalten werden kann (ausprobieren!), dann der Reportbaum und schließlich die Arbeitsfläche, auf der der Report entworfen wird. Rechts daneben ist noch der Datenbaum angedockt. Alle diese Einstellungen bleiben auch beim Schließen des Designers erhalten.

Hinweis: Die einzelnen Symbolleisten sind ein- und ausschaltbar und können sowohl im angedockten Zustand aber auch als separate Fenster dargestellt werden.

Achten Sie bitte auf den Datenbaum. Dort finden Sie unter dem Reiter "Daten" alle von der SQL-Abfrage zurückgelieferten Datenfelder in der Banddatenquelle. Weitere Daten aus WINcontact werden über Reportvariablen und über nutzerdefinierte SQL-Variablen zur Nutzung zur Verfügung gestellt, die Sie analog über die Seite "Variablen" im Datenbaum erreichen. Außerdem finden Sie an genau der gleichen Stelle auch noch spezielle Systemvariablen, die vom Reportdesigner selbst angeboten werden.

Nach diesen wenigen Vorarbeiten können wir mit dem Design des Reports beginnen.

Wie bereits erwähnt, werden Reporte aus "Bändern" aufgebaut, die jeweils eine spezifische Funktion haben. Ein Reporttitelband z. B. wird immer nur auf die erste Seite eines mehrseitigen Reports gedruckt während ein Seitenkopfband ("PageHeader") auf jede Seite des Reports an oberster Position gedruckt wird. Daten werden gewöhnlich auf einem Masterdatenband ausgegeben, welches mit einer Datenquelle wie z. B. der Banddatenquelle verbunden ist. 

Die einzelnen Bänder erreichen Sie über die entsprechende Funktion in der senkrechten Leiste der Reportobjekte.


Als erstes fügen wir dem Report ein Masterdatenband hinzu und verbinden es mit der Banddatenquelle. Aufblenden der Reportvorschau zeigt, dass noch keine Daten angezeigt werden. Das ist auch nicht weiter verwunderlich, da das Band noch leer ist. Um den Namen der Callagenten auf dem Band auszugeben, wechseln Sie auf der rechten Seite in den Datenbaum und dort in die Banddatenquelle. Dann markieren Sie mit der Maus den Eintrag "MITARBEITER" und ziehen ihn mit gedrückter rechter Maustaste auf das Masterdatenband:


Wie bei jedem anderen Windows-Control auch können Sie das Textobjekt mit dem Datenfeld mit der Maus verschieben und auch dessen Größe ändern (probieren Sie bitte auch einmal die Kursortasten in Verbindung mit der <Shift> und der <Strg>-Taste aus, das Control muss aber fokussiert sein (Ankerkästchen)). Die Vorschau zeigt das Ergebnis:


Klicken Sie bitte als Nächstes auf den MasterData-Bandheader (worauf das Band fokussiert wird -> Ankerkästchen) und ändern Sie mit der Maus die Bandhöhe. Überprüfen sie danach den Effekt über die Reportvorschau.

Anschließend können Sie das MasterData-Band nach folgender Vorlage selbst gestalten:


Mit Hilfe der Funktionen in der Formatierungsleiste lässt sich jedes Textobjekt individuell formatieren (Mitarbeitername fett, Dienststellung rot und italic etc.).

Wie Sie in der Vorschau sehen können, werden auf dem Ausdruck jeweils in der Bandhöhe genau die Daten eines Datensatzes ausgegeben, für die auf dem Band jeweils ein Textobjekt existiert.


Jetzt führen Sie bitte auf das Textfeld "PTELEFON" einen Doppelklick aus:


Sie gelangen dann in den Textfeldeditor. In diesem Editor können Sie beliebigen Text schreiben und (immer in eckigen Klammern!) Platzhalter für Datenbankfelder und Variablen eintragen, z. B.


Wenn Sie mehrzeiligen Text eintragen, müssen Sie i. d. R. auch die Höhe des entsprechenden Textobjektes auf dem Band (und eventuell die Bandhöhe) anpassen.

Wir haben Ihnen demonstriert, wie man durch "Holen" und "Verschieben" eines Datenbankfeldes aus dem Datenbaum ein Reportband füllen kann. Sie können natürlich auch ein "pures" Textobjekt einfügen, in dem Sie es einfach der Reportobjektpalette entnehmen. Einfach anklicken, dass an der Maus hängende Textobjekt auf dem Band ablegen und in das anschließend aufgeblendete Memo-Objekt (=Textfeldeditor) den gewünschten Text schreiben. Das ist die ganze Vorgehensweise. Mit diesem Wissen können Sie jetzt das Datenband noch etwas schöner gestalten, beispielsweise so:



Die Linie als obere Begrenzung wurde mit dem Linienwerkzeug aus der Reportobjektpalette realisiert.

Kommen wir jetzt zum Objektinspektor. Achten Sie einmal darauf: Immer wenn Sie auf der Arbeitsfläche ein Objekt markieren (sichtbar an den Ankerkästchen), wird dieses Objekt mit all seinen Eigenschaften in den Objektinspektor eingetragen. Wenn Sie z. B. das erste Textfeld ("MITARBEITER") auf dem Masterdatenband markieren, dann finden Sie u. a. folgende Eintragungen im Objektinspektor:


Die Bedeutung der einzelnen Einträge wird Ihnen dabei immer kurz und bündig in der Infobox im unteren Teil des Objektinspektors angezeigt (hier "Align"). Um die Funktionsweise zu verstehen, wählen Sie einfach einmal die Eigenschaft "BrushStyle" aus und aus der Klappbox, die aufgeblendet wird, wenn Sie in das dazugehörige Eingabefeld klicken, den Wert "bsDiagCross". Den Effekt können Sie sowohl im Designer als auch in der Reportvorschau beobachten. Und damit dürfte bereits das Funktionsprinzip des Objektinspektors klar geworden sein. Wir empfehlen Ihnen, dass Sie jetzt noch die eine oder andere Eigenschaft des Textobjektes ändern und den Effekt im Vorschaumodus beobachten.

Neben dem Objektinspektor besitzen die meisten Reportobjekte auch noch ein individuelles Kontextmenü, über das weitere Funktionen zur Verfügung gestellt werden. Es lässt sich nach Fokussierung des Objektes über die rechte Maustaste öffnen.

Was jetzt noch fehlt, ist ein Reporttitel mit ein paar Angaben zum Call-Center und zum Bearbeiter dieses Reports. Sie brauchen dazu erst einmal nur ein Reporttitelband auf die Arbeitsfläche legen. Im Objektinspektor setzen wir dann die Höhe (=Height) des Bandes auf 4 Zentimeter (kleiner Hinweis: im Hauptmenü unter Ansicht – Optionen können Sie festlegen, ob Sie als Längenmaß im Report Zentimeter, Zoll oder Pixel verwenden möchten). Auf dieses Band platzieren wir dann ein Textobjekt aus der Objektpalette und geben als Text "Personalliste Call-Center" ein. Danach ändern wir die Eigenschaft "Align" im Objektinspektor noch auf "baWidth", wodurch das Band über die gesamte Seite gezogen wird. Zum Schluss sollten Sie das Textobjekt noch mit den Funktionen der Formatierungsleiste in Schriftart und Schriftgröße anpassen.

Jetzt wollen wir zum ersten Mal die Reportvariablen verwenden, die von WINcontact zur Verfügung gestellt werden. Dazu legen Sie wieder ein Rechteckobjekt auf das Reporttitelband und tragen als Text "Call-Center:" ein. Achten Sie jetzt bitte einmal auf die Werkzeugleiste des Texteditor bzw. Memofenster. Sie finden dort als erste Funktion "Ausdruck einfügen". Ein Klick darauf öffnet den Ausdruckeditor (er ist weitgehend mit dem Datenbaum am rechten Rand des Designers identisch), in dem Sie auf die Seite "Variablen" wechseln. Dort finden Sie u. a. den Zweig "Auftragnehmer". Der "Auftragnehmer" sind Sie, d. h. hier werden in Form von Variablen die Angaben zur Verfügung gestellt, die Sie im Administration-Center im Hauptmenü unter "Einstellungen Call-Center" eingetragen haben.

Jetzt noch die beiden Textobjekten formatieren und den Report ausprobieren:


Auf die gleiche Weise können Sie jetzt noch weitere Textobjekte im Reporttitelband anordnen, z. B.


Das Reporttitelband wird immer nur auf die erste Seite eines mehrseitigen Reports gedruckt. Möchte man, dass auch auf jeder anderen Seite ein Seitenheader erscheint, dann muss noch zusätzlich ein Seitenkopfband ("PageHeader") in den Report eingefügt und mit Text versehen werden:


Wie die Vorschau zeigt, wird dieser Header überflüssigerweise auch auf der ersten Seite angezeigt. Aber hier hilft der Objektinspektor weiter. Das Band "PageHeader" besitzt nämlich die Eigenschaft "PrintOnFirstPage", die Sie einfach nur auf "False" setzen müssen, um den Druck des Seitenkopfes auf der Titelseite zu unterdrücken.

Jetzt benötigen wir nur noch ein Seitenfußband ("PageFooter") für die Aufnahme der Seitennumerierung:


Dabei wird für die Anzeige der jeweils aktuellen Seitennummer die Systemvariable [Page] verwendet, die zentriert in ein Textobjekt eingetragen werden muß.

Damit ist die Gestaltung des Reports erst einmal abgeschlossen.

Der zweite Teil der Aufgabenstellung besteht darin, dass dieser Report auch in Abhängigkeit der Dienststellung der Mitarbeiter ausgegeben werden soll (also jeweils nur Administratoren, Supervisoren, Controller oder Callagenten). Diese Anforderung wollen wir über einen Dialog im Report lösen, in dem der Anwender die jeweilige Dienststellung auswählen kann, deren Mitarbeiter auszudrucken sind. Wir kommen an dieser Stelle zum ersten Mal mit der Programmierschnittstelle eines Reports in Berührung. 

Ein Dialogfenster in einen Report zu integrieren ist ganz einfach. Setzen Sie den Mauszeiger in die Reiterleiste "Code – Date – Page1" und wählen Sie aus dem Kontextmenü "Neuer Dialog". Als Reaktion darauf wird eine neue Seite "DialogPage1" mit einem leeren Dialogformular im Reportdesigner angelegt.

Beachten Sie auch, dass sich die Objektpalette am linken Rand geändert hat. Dort wird jetzt eine Vielzahl von neuen Dialogelementen (ähnlich wie im Fragenkatalogdesigner) angeboten.

Mit der Maus oder über den Objektinspektor können Sie die Größe des Dialogfensters nach Bedarf verändern. Danach legen Sie bitte zwei Schaltflächen (Buttons) auf den Dialog und ändern deren Beschriftung auf "Weiter" und "Abbrechen" (Objektinspektor, Eigenschaft "Caption"):


Jeder Button besitzt die Eigenschaft ModalResult, welches festlegt, wie und auf welche Weise das modale Dialogfenster geschlossen wird. Die Klappbox im Objektinspektor stellt dafür mehrere Auswahlmöglichkeiten bereit. Der Taste "Weiter" erhält "mrOK", was bewirkt, dass das Dialogfenster geschlossen und anschließend der Report aufgeblendet wird. "mrCancel" bricht dagegen den Dialog und damit auch die Reporterstellung ab. Diesen Eigenschaftswert müssen Sie der Taste "Abbrechen" zuweisen. Anschließend können Sie das Verhalten im Vorschaumodus überprüfen. 

Als Nächstes integrieren wir eine Klappbox (Kombinationsfeld) in den Dialog und beschriften ihn mit einem Textlabel:


Jetzt brauchen wir nur noch die Klappbox mit Vorgaben füllen. Die Vorgabenliste entspricht der Eigenschaft "Items" der Klappbox. Sie ist über den Objektinspektor zugänglich:


Außerdem sollten Sie noch die Eigenschaft "Text" löschen (es sei denn, Sie möchten die Klappbox mit einer Vorgabe belegen).

Damit ist die Erstellung des Auswahldialogs abgeschlossen. Wir müssen jetzt nur noch die Funktionalität des Reports anpassen (d. h., dass er z. B. nur die "Callagenten" auflistet, wenn in der Klappbox "Callagent" ausgewählt wurde). Dazu nutzen wir die Programmierschnittstelle des Reportdesigners aus.

Jedes Reportobjekt besitzt neben seinen "Eigenschaften" auch "Ereignisse", die hinter dem gleichnamigen Reiter im Objektinspektor aufgelistet werden. Solche Ereignisse sind z. B.:
  • OnBeforePrint wird ausgeführt, bevor das Objekt gedruckt wird
  • OnAfterPrint wird ausgeführt, nachdem das Objekt gedruckt wurde
In unserem Fall ist das Ereignis "OnBeforePrint" interessant und zwar das des Hauptdatenbandes "MasterData1". Dieses Band wird für jeden Datensatz der Banddatenquelle mit den darauf liegenden Textobjekten genau einmal ausgegeben. Dabei wird es nur dann gedruckt, wenn es auch sichtbar, d. h. dessen Eigenschaft "Visible" gleich "True" (also "wahr"), ist. Und genau diese Eigenschaft wollen wir ausnutzen, um entsprechend der Klappboxauswahl die auszugebenden Personaldaten nach der Dienststellung zu filtern. Bevor das Masterband gedruckt wird (Ereignis "OnBeforePrint") muss es entweder sichtbar oder unsichtbar geschalten werden je nachdem, ob der jeweils von der Banddatenquelle zurückgelieferte Datensatz im Feld "Dienststellung" den Wert enthält, der auch in der Klappbox des Dialoges ausgewählt wurde oder nicht. Dazu ist ein klein wenig Programmcode notwendig. Zuerst fokussieren Sie bitte das Hauptdatenband "MasterData1" auf der Reportseite und wechseln anschließend im Objektinspektor auf die Ereignisseite. Darin führen Sie einen Doppelklick auf das freie Feld neben dem Ereignis "OnBeforePrint" aus, worauf automatisch eine leere Ereignisbehandlungsroutine auf der Codeseite angelegt wird:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin

end;


Darin muss jetzt lediglich festgelegt werden, dass, wenn der von der Banddatenquelle übergebene Datensatz als "Dienststellung" den gleichen Wert enthält wie die Klappbox im Dialogfenster, das Band "sichtbar" geschalten wird und ansonsten unsichtbar. Wenn die Klappbox dagegen leer ist, dann muß das Masterdatenband immer "sichtbar" sein, damit alle Personaldatensätze im Report ausgegeben werden. In Pascalscript sieht das dann so aus:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
  if ComboBox1.Text<>'' then
   if Trim(<BandDatenQuelle."DIENSTSTELLUNG">)=ComboBox1.Text then
    MasterData1.Visible:=True
   else MasterData1.Visible:=False;
end;


Dazu folgende Anmerkungen: Sie können in einem Script auf jedes Reportobjekt über dessen Namen (so wie er im Kopf des Objektinspektors erscheint) und mit einem Punkt (".") dazwischen auf jede Eigenschaft des Objektes zugreifen, z. B. mit ComboBox1.Text auf den Inhalt der Klappbox im Dialogfenster. Datenbankfelder und Reportvariablen haben die gleiche Syntax wie auf der Reportseite, nur dass die eckigen Klammern durch spitze Klammern ersetzt sind, z. B. <BandDatenQuelle."DIENSTSTELLUNG">.

Und damit ist der Report fertig. Wenn Sie möchten, können Sie sich noch etwas mit dem Codeeditor beschäftigen. Er erlaubt z. B. das Setzen von Haltepunkten und das Anzeigen von Variableninhalten zur Laufzeit, was bei einem sehr umfangreichen Scriptcode sehr beim Debugging helfen kann.

Jetzt brauchen Sie nur noch das SQL-Script im SQL-Manager global freigeben und Sie können die Personalliste im Administration-Center jederzeit unter "Auswertung" (Projektbaumeintrag "Administrator") anzeigen und ausdrucken lassen.

Donnerstag, 20. Dezember 2018

Wie designt man einen Report so, dass er sich optimal in ein Format Ihrer Wahl exportieren lässt

Die Qualität der Umsetzung eines Reports in Wysiwyg-fähige Formate (XLS, PDF, RTF und HTML) hängt entscheidend vom Design der dazugehörigen Reportvorlage ab. Ziel ist es, dass ein Ausdruck sowie eine Exportdatei den Report möglichst genauso wiedergibt, wie ihn auch die Vorschau darstellt.

Vermeiden Sie Überlagerungen und richten Sie Reportobjekte genau zueinander aus

Beim Export werden die einzelnen Bestandteile i. d. R. in Tabellenfelder oder Gitter aufgelöst. Zwei sich nicht überlagernde Textfelder ergeben zwei Tabellenzellen, während bei Überlappung insgesamt 7 Zellen entstehen:


Überlappungen können bei der Umsetzung zu Ungenauigkeiten, zu langen Exportzeiten und zu komplizierten MS Excel - Spreadsheets führen.

Hinweis: Nutzen Sie die Ausrichtmöglichkeiten im Reportdesigner, um Überlappungen möglichst zu vermeiden (z. B. Ausrichtungspalette, Hilfsgitter mit Align-Funktion, Guidelines bei der Objektpositionierung).

Verwenden Sie zum Einrahmen von Texten die Rahmeneigenschaften

Es ist nicht günstig, grafische Objekte Textobjekten zu unterlegen, nur weil man damit einen Rahmen oder eine Füllung erreichen möchte. Nutzen Sie für diesen Zweck die Eigenschaften, welche die Textobjekte im WINcontact - Reportdesigner nativ zur Verfügung stellen (Frame, Brushstyle, Color).

Im Reportdesigner Reporte mit Geschäftsgrafiken erstellen

Zur Visualisierung von Kampagnenergebnissen werden gern graphische Darstellungen in Form von Geschäftsgrafiken verwendet. Der Reportdesigner von WINcontact stellt zu diesem Zweck ein spezielles Objekt zur Verfügung, mit dessen Hilfe sich eine große Zahl verschiedener Geschäftsgrafiktypen in einen Report integrieren lassen. Das können Balkendiagramme, Tortendiagramme aber auch Linien- und Flächendiagramme sein. Sie lassen sich "flach"  oder in 3D-Darstellung  in Farben und Musterungen ihrer Wahl ausgeben. Dabei sind die Variationsmöglichkeiten in punkto Gestaltung sehr vielfältig wie ein Blick auf die Eigenschaften dieses Objektes im Objektinspektor beweist. 

Das folgende Beispiel zeigt, wie sich mit wenigen Einstellungen ein Balkendiagramm erzeugen lässt, in dem die Anzahl der Stimmen in Bezug auf eine Partei (Projekt 1 im Testmandanten, Frage: "Welche von den Volksparteien mögen Sie?") ausgegeben werden. Man kann in diesem Fall übrigens auf Bänder im Report verzichten.

Ausgangspunkt:  
Diese SQL-Anweisung  gibt jeweils die Anzahl der Stimmen pro Partei im gesamten Projekt zurück. Sie müssen sie im SQL-Manager unter dem Namen "Statistik Stimmenanzahl Parteien" speichern.

SELECT 'Die Linke' AS Partei, COUNT(*) AS Anzahl FROM WAHL2002 
WHERE VOLKSPARTEI_5=1
UNION
SELECT 'Grüne', COUNT(*) FROM WAHL2002 WHERE VOLKSPARTEI_6=1
UNION
SELECT 'FDP', COUNT(*) FROM WAHL2002 WHERE VOLKSPARTEI_4=1
UNION
SELECT 'NPD', COUNT(*) FROM WAHL2002 WHERE VOLKSPARTEI_7=1
UNION
SELECT 'CSU', COUNT(*) FROM WAHL2002 WHERE VOLKSPARTEI_2=1
UNION
SELECT 'CDU', COUNT(*) FROM WAHL2002 WHERE VOLKSPARTEI_1=1
UNION
SELECT 'SPD', COUNT(*) FROM WAHL2002 WHERE VOLKSPARTEI_3=1

Auf der Grundlage dieser Abfrage soll ein entsprechendes Balkendiagramm im Reportdesigner entworfen werden. Sie benötigen dazu nur zwei Textobjekte für die Titelzeilen und ein Diagrammobjekt, welches aus der Objektpalette entnommen und auf der Arbeitsfläche positioniert wird. Dabei wird der Diagramm-Assistent aufgeblendet (er öffnet sich auch bei einem Doppelklick auf das Objekt). In ihm ist zugleich der Objektinspektor für das Chart-Objekt (welches Bestandteil des Diagramm-Objektes ist) integriert.

Als Erstes müssen Sie den Diagrammtyp festlegen. Klicken Sie dazu im oberen Teil des Assistenten auf das entsprechende Icon, worauf sich die Diagrammauswahl öffnet. Dort  wählen wir ein farbiges Balkendiagramm mit vertikalen Balken aus.

Im nächsten Schritt ändert sich der Assistent dahingehend, dass Sie jetzt die Daten spezifizieren müssen, die im Diagramm dargestellt werden sollen. Dafür ist ein Series-Objekt zuständig. Hier müssen Sie einige Einstellungen vornehmen, die sich auf  die Datenquelle und die Werte beziehen, die im Balkendiagramm dargestellt werden sollen.  Als Datenquelle verwenden wir die Banddatenquelle, die von unserer SQL-Anweisung mit Daten versorgt wird:


Anschließend können Sie bereits im Vorschaumodus einen Blick auf das Diagramm werfen.  An diesem Punkt empfehlen wir Ihnen, dass Sie jetzt etwas mit diesem Diagramm spielen, in dem Sie im Objektinspektor des Assistenten die eine oder andere Eigenschaft des Chart- und des Series-Objekts verändern und in der Vorschau das Resultat begutachten. Auf diese Weise bekommen Sie ein Gefühl dafür, an welchen "Schrauben"  man drehen muss, damit am Ende die Geschäftsgrafik genau dem entspricht, wie Sie es sich vorgestellt haben.


Leistungsmerkmale des WINcontact - Reportdesigners

Der in WINcontact integrierte Reportgenerator besteht aus einem für den Nutzer nicht sichbaren Kernel, einem leistungsfähigen und programmierbaren visuellen Reportdesigner sowie einer Reportvorschau mit vielfältigen Exportfunktionen (z. B. PDF, MS Excel  etc.). Die erstellten Reportvorlagen werden standardmäßig in der WINcontact–Datenbank gespeichert, können aber auch als separate XML-Dokumente abgelegt (und weitergegeben) werden.

Die wichtigste Nutzerschnittstelle ist der Reportdesigner. Er steht überall dort im AdministrationCenter zur Verfügung, wo auch die Druckfunktion angeboten wird (z. B. Adressenzuweisung, Serienbrieffunktion, Statistikausdruck, SQL-Manager).

Im Clientprogramm steht bei bestimmten Funktionen die Reportvorschau zur Verfügung. Der Callagent kann aber – und zwar auch zur Laufzeit und wenn die Reportvorlage es zulässt – manuell durchaus noch Ergänzungen am Ausdruck vornehmen. In der Druckvorschau steht die dazu notwendige Funktionalität zur Verfügung.

Im SQL-Manager kann zu jedem SQL-Script, der eine Ergebnismenge (auch eine leere) zurückliefert, ein Report erstellt und zur weiteren Verwendung in der WINcontact–Datenbank abgelegt werden. Derartige Scripte mit ihren zugeordneten Reportvorlagen lassen sich freigeben und  – z. B. von einem Mitarbeiter mit Controller-Rechten – im Rahmen eines täglichen Reportings abarbeiten.
Der WINcontact–Reportdesigner zeichnet sich u. a. durch folgende Leistungsmerkmale aus:
·Arbeitet mit Bändern zur Darstellung und Anordnung der Daten auf dem Druckbeleg
·Objektorientiert  – verwendet einen Objektinspektor zum Festlegen der Eigenschaften der einzelnen Reportobjekte
·Ausrichthilfen, Ausrichtgitter, Werkzeugleisten
·Reportvorschau ähnlich MS Word; erlaubt nachträgliche Eintragungen zur Laufzeit
·Unterstützt mehrseitige Reporte (d. h. in einer Reportvorlage können mehrere unterschiedliche Reports integriert werden)
·Unterstützt eine große Zahl unterschiedlicher Reporttypen, z. B. tabellarische Reports, zusammengesetzte Reports, Master-Detail-Reports, Gruppenbildung, Kreuztabellenreports, Reports mit Geschäftsgrafiken und Barcodes, Etikettendruck, Serienbriefdruck etc.
·Leichte Einbindung beliebiger weiterer Datenquellen über ADO
·Bereitstellung spezieller Reportobjekte zum Einfügen von Grafiken, Barcodes, formatierten Texten (RTF), OLE-Objekten und Diagrammen.
·Report- und Datenbaum zur schnellen Anwahl von Reportobjekten und zur schnellen Auswahl von Datenbankfeldern, Variablen und Funktionen mit der Maus.
·Unterstützung von Styles
·Scriptprogrammierung in Pascal-Script (Standard), Basic-Script, Java-Script und C++-Script
·Programmierschnittstelle mit integrierten Debugger
·Speicherung fertiger Reports in einer Vielzahl von Formaten in der Reportvorschau
·Designer zur Erstellung von Reportvorlagen, der in einem eingeschränkten Umfang in der Reportvorschau zur Verfügung steht

Ein erster Blick auf den Reportdesigner

Der Reportdesigner steht nur im Administration-Center von WINcontact zur Verfügung. Wenn Sie ihn jedoch im Hauptmenü des Programms suchen, werden Sie nicht fündig werden. Er ist aber immer an den Stellen im Programm verfügbar, wo auch Reporte generiert und ausgegeben werden. Das ist dann der Fall, wenn Sie auf irgendeiner Schaltfläche ein Druckersymbol bemerken. Solch eine Schaltfläche besitzt meistens ein Pull-Down-Menü, über den sich der Reportdesigner direkt starten lässt:


Zum Ausprobieren wechseln Sie am besten in das erste Projekt des Testmandanten und dort in den Bearbeitungsmodus "Adressenzuweisung". Auf der rechten Seite (Abarbeitungsliste) finden Sie in der Werkzeugleiste das Druckersymbol und das dazugehörige Pull-Down-Menü. Damit können Sie den Reportdesigner öffnen:


Standardmäßig wird er bereits ein Reporttemplate öffnen, welches von WINcontact zur Verfügung gestellt wird. Sie erkennen auf dem Screenshot neben dem Hauptmenü verschiedene Werkzeugleisten, dann den Objektinspektor sowie den Report- und den Datenbaum. Die Arbeitsfläche besteht standardmäßig aus einer Reportseite ("Page 1") sowie einer Datenseite ("Data") und einer Codeseite ("Code"). Letztere kann bei Bedarf Programmcode in Pascalscript, Basicscript, Javascript oder C++-Script aufnehmen.

Die Daten, die ein Report ausgeben soll, erhält er in WINcontact über eine spezielle "Banddatenquelle". Was das konkret für Daten sind, ist abhängig von dem Programmteil, wo der Report angesiedelt ist. Ein Report wie hier bei der "Adressenzuweisung"  wird in seiner Banddatenquelle andere Daten zur Verfügung gestellt bekommen als z. B. ein Report im Bereich des Gesprächsleitfadens oder des Fragenkatalogs. Welche Daten das konkret sind, sehen Sie auf der ersten Seite des Datenbaums (wenn er nicht, wie im Screenshot zu sehen, angezeigt wird, dann können Sie ihn über den Hauptmenüpunkt "Ansicht  – Symbolleisten" sichtbar machen). Neben diesen "Banddaten" stellt WINcontact auch noch spezielle Reportvariablen zur Verfügung, deren Verfügbarkeit aber in der gleichen Weise kontextabhängig ist wie die Daten der Banddatenquelle.

Der Name "Banddatenquelle" suggeriert bereits, dass im WINcontact–Reportdesigner Reporte aus sogenannten "Bändern" bestehen, die jeweils eine unterschiedliche Bedeutung haben bzw. Funktionalität aufweisen. Ein einfacher Standardreport besteht z. B. aus einem Reporttitelband ("ReportTitle"), dem Seitentitelband ("PageHeader"), einem Datenband ("MasterData") und einen Fußband ("PageFooter"),  wobei das Datenband mit der Banddatenquelle verknüpft ist und das Fußband gewöhnlich die Seitennumerierung enthält.

Die Reportentwicklung besteht nun darin, die Arbeitsfläche mit funktional abgestimmten Bändern und die Bänder wiederum mit Objekten zu belegen, welche die gewünschten Daten (Texte, Inhalte von Datenbankfeldern, Inhalte von Reportvariablen, Bilder, Barcodes, Diagramme, Grafikelemente etc.) zur Anzeige bringen. In den meisten Fällen werden für diesen Zweck Textobjekte verwendet. Welche konkreten Eigenschaften derartige Objekte im Report besitzen, können Sie mit Hilfe des Objektinspektors bzw. über die Funktionen der Werkzeugleisten für jedes Objekt individuell festlegen. Diese ganzen Arbeiten führt man bei der praktischen Arbeit, dem Reportdesign,  quasi iterativ aus, denn ein Klick auf das Icon  zeigt sofort in der Reportvorschau das Ergebnis:


Die Reportvorlagen selbst werden im XML-Format in der WINcontact–Datenbank gespeichert. Sie können aber auch als separate Datei in ein Verzeichnis Ihrer Wahl auf die Festplatte oder einem anderen Datenträger abgelegt werden.

Fertige Reportvorlagen lassen sich im Administration-Center durch einen Klick auf das Druckersymbol mit Daten füllen und in der Reportvorschau anzeigen. Aus dieser Vorschau heraus erfolgt dann auch der eigentliche Ausdruck oder der Export in ein anderes Format (z. B. PDF oder MS Excel).

Montag, 10. Dezember 2018

Wie mache ich einen vorhandenen Report einen anderen Mandanten zugänglich?

Voraussetzungen
Damit ein Report ohne Änderungen in allen Mandanten / Projekten funktioniert, darf er keine absoluten Datenbankbezüge (es sei denn, es ist gewollt) enthalten. Er kann dann in allen Projekten eines Mandanten verwendet werden.
Welche Arbeitsschritte sind dafür notwendig?
Der Report wurde in einem Projekt des Mandanten entwickelt und ausgetestet und ist in der WINcontact – Datenbank unter einem sinnvollen Namen gespeichert. 
Die dazugehörige SQL-Abfrage wird im globalen Kontext ausgeführt und enthält nur relative Datenbankbezüge.
Beim Speichern der Abfrage im SQL-Manager muss das Markierungsfeld „projektübergreifend“ gesetzt sein:
Der Report lässt sich dann über die Freigabe im SQL-Manager allen anderen Projekten im gleichen Mandanten zugänglich machen:

Die Übernahme in einen anderen Mandanten ist ein klein wenig aufwendiger und besteht aus folgenden Arbeitsschritten, die alle im Auswertungsmodul eines Projektes im betreffenden Mandanten auszuführen sind.
  1. Übernahme des zum Report gehörenden Abfrageskriptes und speichern unter einem sinnvollen Namen (eventuell dabei gleich projektübergreifende Verfügbarkeit festlegen)
  2. Übernahme der Reportvorlage des Ausgangsreports in den Reportdesigner
  3. Austesten und freigeben
Übernahme der Abfrage
Sie sind in einem Projekt des neuen Mandanten. Öffnen Sie dort im Auswertungsmodul den SQL-Manager.
Dort wählen sie in der Werkzeugleiste „SQL-Skripte aus anderen Projekten übernehmen". Es öffnet sich ein Auswahlfenster, wo Sie im Projektbaum das Projekt auswählen, in dem sich die Reportabfrage befindet. Auf der rechten Seite werden im oberen Fensterbereich alle verfügbaren Skripte angezeigt. Dort markieren Sie das zum Report gehörende Skript, um es in den SQL-Manager zu übernehmen:

Anschließend können Sie es wie gewohnt ausprobieren und unter einem sinnvollen Namen in der WINcontact – Datenbank speichern.
Jetzt benötigen wir noch eine Kopie der zum Skript gehörenden Reportvorlage. Dazu müssen Sie in das Ausgangsprojekt gehen und dort im SQL-Manager die Reportvorlage öffnen. Wenn das geschehen ist, speichern Sie diese Vorlage in einen Ordner ihrer Wahl auf ihrem Computer. Dazu müssen Sie das „Speichern“-Icon aktivieren (z. B. in dem Sie im Report eine unwesentliche Änderung, beispielsweise Verschieben eines Bandes). Wenn das der Fall ist, dann klicken Sie mit der Maus bei gedrückter Steuerungs-Taste auf das „Speichern“-Symbol, wobei sich ein entsprechender Dialog öffnet und über den Sie die Reportvorlage (Extension .fr3) speichern können. Merken Sie sich den Namen und den Ort.
Danach wechseln Sie wieder in das Projekt des neuen Mandanten, wo die zum Report gehörende Abfrage bereits gespeichert ist. Wählen sie im SQL-Manager die entsprechende Abfrage aus und wechseln Sie in den Reportdesigner. Er öffnet sich mit einer leeren Seite.
Dort können Sie jetzt die im .fr3 –Format gespeicherte Reportvorlage öffnen. Klicken Sie dazu bei gedrückter Steuerungstaste auf das „Öffnen“-Icon (bitte -Taste auch bei Erscheinen des Zwischendialogs „Aktuelle Änderungen werden verworfen“ gedrückt halten). Nach dem Schließen des Zwischendialogs wird ein Datei-Öffnen-Dialog aufgeblendet, mit dem Sie die zuvor gespeicherte Reportvorlage in den Reportdesigner laden können:

Anschließend sollte der Report geladen werden und auch gleich funktionieren.

Ausgabeformat für einen WINcontact Report festlegen

Wenn in WINcontact das „Drucker-Icon“ angeklickt wird, öffnet sich i. d. R. die Reportvorschau und der Report kann angezeigt, ausgedruckt oder in ein anderes Datenformat (z. B. „PDF“) exportiert werden. Durch einen Eintrag in die Eigenschaft  ReportOption.Description des TfrxReport-Objektes im Reportdesigner lässt sich aber auch sofort (also ohne Aufblenden der Reportvorschau) ein Export in ein bestimmtes Dateiformat anstoßen. Wird als Ausgabe z. B. eine genauso wie der Report formatierte MS Excel-Datei benötigt, dann muss im Reportdesigner in die Eigenschaft  ReportOption.Description lediglich XLS eingetragen werden. 
Telefonmarketing WINcontact Administration-Center  Reportdesigner Ausgabeformat festlegen
Ein „Druckvorgang“ führt in diesem Fall sofort zu der Erzeugung einer MS Excel-Datei, auf die aber der Nutzer durch das Aufblenden eines speziellen Einstellungsdialogs noch Einfluß nehmen kann, beispielsweise 
Telefonmarketing WINcontact Administration-Center Reportvorschau Excel-Export
Weitere auf diese Weise unterstützte Importformate sind „PDF“, „RTF“ und „HTML“.