Menü

{ReportsNamen} (SQL-Registry)

Zurück | Ebene zurück

\ROOT\OBJECTS\DATAOBJECTS\{DataobjectsNamen}\Reports\
{ReportsNamen}\

{DatenPipelines} (SQL-Registry)
.parameters\{ParameterName} (SQL-Registry)

Für jeden Druck-Report wird ein eigener Ordner mit einem Report-Namen angelegt. Dieser Ordnername ist eine rein interne Benennung. Im Druckmenü wird immer die Eigenschaft Title angezeigt.

Folgende Eigenschaften werden unterstützt:

Category=
{ Zeichenfolge }

Über diese Eigenschaft lassen sich im Druckmenü Berichte strukturiert darstellen.

Um Druckmenüs zu strukturieren können die Reports in Kategorien unterteilt werden. Dabei können Kategorien in mehreren Ebenen aufgebaut sein. Die einzelnen Ebenen werden durch Dezimalpunkte getrennt. Die Ebenennamen selbst dürfen nur aus Buchstaben und Ziffern bestehen und keine Sonderzeichen (auch kein Leerzeichen) oder Umlaute enthalten. Diese Einschränkung ist aber nicht weiter problematisch, da die Ebenennamen nicht im Menü angezeigt werden. Für Berichte muss die Hauptebene stets „print“ lauten.

Alle Berichte innerhalb einer Kategorie werden im Menü zusammengefasst und mit einem Trennstrich von anderen Kategorien abgegrenzt. Innerhalb der Trennstriche werden die Menüeinträge jeweils sortiert angezeigt.

Möchten Sie eine Kategorie in einem eigenen aufklappbaren Untermenüpunkt darstellen, so müssen Sie diese in der SQL-Registry unter \root\objects\actions\categories definieren. Im wesentlichen wird dort ein Ordner mit dem Namen der Kategorie angelegt und mit der Eigenschaft des Menütitels.

Beispiel 1:
Category=print.label
oder

Beispiel 2:
Category=print.stat.erloes.diagramm

Standardmäßig werden in Beispiel 1 alle Etiketten in diese Kategorie gestellt. Wenn diese Kategorie auch unter \root\objects\actions\categories definiert ist, werden Etiketten in einem Untermenü dargestellt.

Data=
{ Binärdaten }

Enthält die Definition des Reports, also der Daten, die vom Formular-Editor verwaltet werden. Die Daten werden im Formularsystem als Binärdaten gespeichert. Mit der rechten Maustaste kann man diesen Eintrag in Hexform anzeigen lassen. Der Wert der Eigenschaft Data lässt sich als ASCII-Datei mit der rechten Maus unter „Wert speichern“ exportieren. Der gespeicherte Wert ist der Pascal-Quelltext eines Delphi-Formulars, der extern nicht geändert werden sollte.

Beispiel:
Data=(Nicht darstellbar)

Hidden=
{ Integer }
Kann auch über die Benutzereinstellung im vorher angezeigten Dialog geändert werden. Hierüber wird festgelegt, ob das Formular im Druckmenü angezeigt wird, oder nicht. Hat „Hidden“ den Wert=0, so wird der Menüeintrag angezeigt; hat er de Wert=1 wird er nicht angezeigt. Über diesen Eintrag lassen sich zum Beispiel Vendor-Formulare, die durch den Benutzer kopiert und geändert wurden, verstecken, da diese ja nicht mehr benötigt werden.

Beispiel:
Hidden=1

IsDefault=
{ Integer }
Legt fest, welches der Formulare dieser Gruppe bei STRG+P im Programm als Standard benutzt werden soll. Wird kein Default hinterlegt, so wird ein Dialog mit allen Formularen der Gruppe eingeblendet. Hat IsDefault den Wert=1 so ist dies das Standard-Formular. Haben mehrere Formulare dieser Gruppe die Default-Eigenschaft, so wird ein zufälliges Formular, das diese Eigenschaft gesetzt hat, benutzt. Die Eigenschaft kann auch vom normalen Benutzer im Dialog zuvor gesetzt werden.

Beispiel:
IsDefault=1

Profile=
{ Zeichenfolge }
Über das Profil wird die Druckergruppe bestimmt zu der das Formular gehört. Dieser Text kann frei eingegeben werden. Entweder über den Daten-Konfigurator, oder über den vereinfachten Dialog in der vorhergehenden Maske. Formulare innerhalb einer Gruppe, also eines Profils, kann man einen Drucker und die Schächte zuordnen. Dies erfolgt in der normalen Druckbox. Dort befindet sich eine Checkbox zum Setzen des Standards für die entsprechende Gruppe.

Beispiel:
Profile=Vorgang

SelectFields=
{ Zeichenfolge }

Die Eigenschaft kann entweder Fast, oder Slow sein und bestimmt ob ein Formular mit allen Tabellenfeldern (Slow) oder mit einer optimierten Feldauswahl aufgerufen werden soll.

Fast Über den Reportdialog kann diese Eigenschaft gesetzt werden. Hierüber wird bestimmt, ob der SQL-Befehl, der die Daten für den Report bereit stellt nur die absolut notwendigen Felder vom SQL-Server abruft, oder ob alle Felder abgerufen werden sollen. Fast ruft nur bestimmte Felder ab. Die Feldliste wird in den jeweiligen Datenquellen (=Datapipes), den Subeinträgen angegeben.
Slow Steht die Eigenschaft auf Slow, so werden alle Felder zu der Tabelle oder der View vom Server abgerufen. Verwenden Sie diese Option wenn sie neue Formulare erstellen möchten und beim Design auf alle Felder zugreifen möchten. Anschließend können Sie die im Formular wirklich benutzten Felder in der Datenquelle (=Datapipe) eingeben und die Eigenschaft auf Fast setzen.

Beispiel:
SelectFields=Fast

SubType=
{ Zeichenfolge }
Der SubType legt eine Eigenschaft für den Daten-Konfigurator fest, die den Unter-Typ des Reports und damit das Verhalten beeinflusst. Speziell geht es bei dieser Eigenschaft um das Verhalten, ob der am Datencursor befindliche Datensatz benutzt werden soll, die komplette Treffermenge oder eine intern erzeugte Treffermenge.

 

List Wird standardmäßig für Stammdaten-Ausdrucke benutzt. Hier werden Daten der aktuellen Selektionsmenge, also die Treffer der Stammdatenmaske an den Daten-Konfigurator übergeben. Der Menüeintrag im Druckmenü wird nur aktiviert wenn Daten selektiert sind. Um im Berichts-Designer mit Echtdaten arbeiten zu können, wird beim Aufruf des Berichts-Designers eine Selektionsmenge simuliert. Dieser wird aus dem TestData-Select-Befehl erzeugt.
SingleObject Wird bei allen Vorgängen benutzt, wie zum Beispiel den Rechnungen, Angeboten usw. Hier wird nur der aktuell am Datencursor befindliche Datensatz vom Daten-Konfigurator übernommen. Wird hingegen der Formulargenerator aus der Systemverwaltung gestartet, so können dort über den Select-Befehl mehrere Vorgänge selektiert werden. Also z.B. Rechnungen eines Monats usw. als eine Anweisung ausgegeben werden. 
StandAlone Wird benutzt, wenn EULANDA® zur Darstellung des Formulars keine selektierten Daten benötigt, also keine Treffer in den Stammdatenmasken usw. notwendig sind.  Dies ist zum Beispiel bei der Warengruppenstatistik oder den Offenen-Postenliste der Fall. Die Eigenschaft TestData wird dementsprechend bei diesem SubType nicht ausgewertet.

Beispiel:
SubType=StandAlone

SqlConfirmation=
{ Zeichenfolge }
Hier kann eine Bedingung hinterlegt werden, die angeben kann, ob ein Formular druckfähig ist. Zusätzlich kann angegeben werden ob ein nicht druckfähiges Formular über eine Benutzereingabe trotzdem gedruckt werden darf. Die hier hinterlegte SQL-Bedingung muss zwei Werte zurückgeben. Einen Text mit dem Feldnamen msg und einen ganzzahligen Wert mit dem Namen buttons. Es werden insgesamt drei Fälle unterschieden. 

 

1 Das Formular ist druckfähig. In diesem Fall muss SqlConfirmation eine leere Datenmenge liefern, also keine Daten.
2 Das Formular ist nicht druckfähig. Zum Beispiel eine Rechnung ohne Positionen. In diesem Fall wird als msg, der Fehlertext erzeugt und in buttons die Ziffer 1. In diesem Fall wird eine Fehlerbox angezeigt, die der Benutzer bestätigen kann und der Ausdruck wird unterdrückt. Nachfolgendes Beispiel würde verhindern, dass ein Auftrag gedruckt wird, der noch nicht gebucht wurde:

IF EXISTS ( SELECT * FROM Auftrag
WHERE id in (%IdList%) AND Status = 0 )
SELECT 'Der Auftrag muss vor dem Drucken gebucht werden ' msg,
2 buttons

3 Das Formular ist nicht druckfähig, aber der Benutzer kann entscheiden, ob er trotzdem einen Ausdruck abrufen möchte. In diesem Fall muss in buttons die Ziffer 3 zurückliefern.
IF EXISTS (SELECT * FROM Artikel 
  WHERE id in (%IdList%) AND 
  ArtMatch in ( 'APFEL','BIRNE') )
SELECT 'Vorsicht Obst' msg, 
       3 buttons

Dieses Beispiel prüft, ob einer der Matchcodes der selektierten Artikelmenge den Inhalt Apfel oder Birne hat und liefert in diesem Fall eine Fehlermeldung mit dem Wert buttons=1. Der Benutzer kann hierbei die Meldung nur bestätigen; es wird kein Ausdruck erzeugt.

Beispiel:
SqlConfirmation=IF (SELECT COUNT(*)
FROM dbo.Rechnung WHERE 
DATEPART(qq,DATEADD(qq,1,Datum))=
DATEPART(qq,GETDATE()) AND DATEPART(YEAR,DATEADD(qq,1,Datum))=
DATEPART(YEAR,GETDATE()) AND UstId>'' AND 
Land <> (SELECT TOP 1 Land 
FROM dbo.Intern_Konst))=0 
SELECT 'Es sind keine Einträge (Rechnungen zu 
EU-Kunden mit UStID) für den Meldezeitraum 
des Vorquartals vorhanden!' msg, 1 buttons

In diesem Beispiel wird vor Aufruf des Formulars geprüft, ob es Daten im entsprechenden Zeitraum gibt, die auch ausgegeben werden können. Ist dies nicht der Fall, so wird der Fehlertext ausgegeben und der Druck wird abgebrochen.

TestData=
{ Zeichenfolge }

Enthält einen SQL-Select-Befehl, der Testdaten aus der Original-Datenbank auswählt. Wenn der Formular-Generator aus einer Anwendungsmaske und über die Druckvorschau gestartet wird, werden die dort benutzten Daten verwendet.

Für die Artikelstammdaten könnte der Select-Befehl wie folgt aussehen: „SELECT TOP 100 id FROM Artikel ORDER BY id DESC“. Der Select-Befehl selektiert nur die Spalte IDs der Testdaten. Diese IDs werden dann als Datenmenge an die Datenquellen übergeben, indem dort der Variablen-Platzhalter „%s“ bzw. „%:0s“ gegen die ID-Menge ausgetauscht wird. Dazu später mehr.

Beispiel:
TestData=SELECT TOP 3 id FROM dbo.Rechnung

In diesem Beispiel werden die ID-Nummern zu drei beliebigen Rechnungen herausgesucht.

Title=
{ Zeichenfolge }
Ist der sichtbare Eintrag im Druckmenü. Es dürfen hier nur Zeichen benutzt werden, die als Windows-Resource für solche Menüeinträge gültig sind.

Beispiel:
Title=Rechnung Drucken

Type=
{ Zeichenfolge }
Normalerweise enthalten die Berichte die Eigenschaft „MULTI“. Ältere Berichte haben hier andere Werte stehen, die jedoch nur bis zu EULANDA® 1.50 unterstützt werden und auf die hier nicht mehr eingegangen wird.

Neben MULTI gibt es einen weiteren neuen Wert. EMBEDDED. Dieser Wert bezeichnet Berichte mit eingebetteten Datenquellen. Diese unterstützen keine im Datenkonfigurator definierten Datenquellen, keine Testdaten. Es werden beim Type Embedded nur der Titel, DATA, Hidden, IsDefault und Profil unterstützt. Bei Berichten vom Type Embedded kann im Berichts-Designer auf einer eigenen Karte „Daten“ die Datenquelle erzeugt werden. Berichte vom Type Embedded sind immer Standalone, werden also keine aktuell angezeigten Daten oder Selektionen aus.

Beispiel:
Type=Multi

oder

Beispiel:
Type=Embedded

Others=
{ Integer }

Dieser Eintrag wird nicht mehr unterstützt.