2. Parametereigenschaften
In der Praxis gibt es relativ wenige Fälle, in denen Abfragen so formuliert werden können, dass keine Eingabe von Parametern durch den Benutzer mehr erforderlich ist.
Wie Abfragen mit Datenpickern funktionieren, haben Sie bereits weiter oben in dieser Doku gezeigt bekommen. Hier zeigen wir Ihnen nun noch weitere Möglichkeiten in AnSyS.B4C, wie Sie mit Parametereigenschaften Abfragen gestalten können.
Folgend eine Übersicht, welche Parametereigenschaften möglich sind:
Name | Gültige Werte | Bedeutung |
---|---|---|
COLUMNS | Ganzzahl | Positive Breite des Eingabefeldes. |
LABELCOLUMNS | Ganzzahl | Positive Breite des Labels (Beschriftung). |
NEWCOLUMN | "true" oder "false" | Es entsteht eine neue Spalte im Reporterzeugungsdialog. |
FULLCOLUMN | "true" oder "false" | Legt fest, ob die gesamte Fensterbreite genutzt wird. |
WEIGHT | positive Gleitkommazahl | Gewichtung in horizontaler Ausrichtung. Kommawerte müssen "mit Punkt" eingetragen werden! |
SAMELINE | "true" oder "false" | Legt fest, ob der Parameter in der selben Zeile, wie der Vorhergehende erscheinen soll. |
NULLVALUE | z.B.: 1900-01-01 oder 2100-12-31 | Für eine Datumsabfrage, mit von/bis kann das Datumsfeld im Reporterzeugungsdialog so auch leer bleiben. Es wird dann dieses Datum standardmäßig verwendet! |
COMBOBOX | {AnzeigeText1, Wert1} | Beispiel Belegstatus: Ist im Reporterzeugungsdialog dann auswählbar > Vorbereitet, Gedruckt..usw.. |
PICKER | Pickerklasse z.B: Parts | Auswahl eines Artikels, Kunden etc., je nachdem welcher Picker verwendet wird. |
Folgend nun einige Muster-Parameter auf der Grundlage unserer Beispielabfrage der 'Ausgangsrechnungen und Ausgangsgutschriften'. Dieses SQL-Statement haben wir etwas erweitert bezüglich der Definierung in der Where-Klausel und den damit verbundenen Variablen die hier eingesetzt werden, die ja die Parameter spiegeln, die man dann später im Reporterzeugungsdialog ansteuern und so eine entsprechende Auswahl=Filterung für die Abfrage vornehmen kann.
In unserem Beispiel finden Sie insgesamt fünf angelegte Parameter mit Eigenschaften:
- DATUM_VON
- DATUM_BIS
- IDADDRESS
- STATE
- SORT
Diese sehen Sie in unserer Abfrage im folgenden Screenshot in dem Bereich 'Parameter':
Wie Sie nun der Abbildung entnehmen können, finden sich alle Parameter auch als Variablen in dem SQL-Statement in der Where-Klausel wieder (SQL-Bereich).
Jeder Parameter ist also in einer Variable wieder zu finden und diese in die Abfrage integriert worden.
Wir werden Ihnen nun von jedem Parameter die Eigenschaften öffnen, damit Sie sehen können, wie diese in unserem Beispiel angelegt wurden.
Bis auf die Parametereigenschaften 'SAMELINE' und 'FULLCOLUMN' finden Sie alle Eigenschaften, wie sie oben in der Tabelle stehen, in den folgenden Beispielparametern wieder. Hier bedarf es aus unserer Sicht keine weiteren Erklärungen, da dies in der Tabelle bereits beschrieben und selbsterklärend ist.
Bei Verwendung der Parametereigenschaft 'NULLVALUE' müssen Sie im Reporterzeugungsdialog kein Datum auswählen, wenn Sie das nicht möchten. Dann bringt Ihnen die Abfrage (normalerweise) alle Daten, da ja keine Datumseinschränkung vorgenommen wurde.
Der eingetragene Wert '1900-01-01' in der Parametereigenschaft wird quasi dann als Standardwert benutzt. Das heisst, das alle Daten ab den 01.01.1900 berücksichtigt werden, was in der Regel bedeutet, das bei den meisten Unternehmen alle Daten abgefragt werden die in der Datenbank vorliegen.
Mit den Parametereigenschaften 'COLUMNS' und 'LABELCOLUMNS' wird das Erscheinungsbild des Parameters beeinflusst und zwar die Breite des Auswahl-/Eingabefeldes und die Breite der individuellen Beschriftung im Reporterzeugungsdialog.
Hier verhält es sich genauso wie in dem Parameter 'DATUM_VON', nur mit dem kleinen Unterschied, das hier der eingetragene Standardwert das Datum in der Zukunft zeigt und bei einer nicht Auswahl im Reporterzeugungsdialog des Datums, bei diesem Parameter die Datenabfrage bis dorthin einschränkt - also bis zum 31.12.2100 – falls man hier überhaupt von einer Einschränkung sprechen kann. Somit kommen auch hier in der Regel wieder alle Daten ohne Einschränkung in dem Abfrageergebnis vor.
In Ihrem SQL Statement sollte das dann z.B. so aussehen, wenn Sie nach Datum abfragen: WHERE(registerdate BETWEEN $P{DATUM_VON} AND $P{DATUM_BIS})
Hinweis: Verwenden Sie den Parameter 'NULLVALUE' mit den Ihnen oben gezeigten eingetragenen Werten, werden in der Regel alle Daten abgefragt, wenn kein Datum ausgewählt wird im Reporterzeugungsdialog. Um bei unserem o.g. Beispiel zu bleiben, würden so alle Ausgangsrechnungen und Ausgangsgutschriften bei keiner Datumseinschränkung im Reporterzeugungsdialog abgefragt und im Abfrageergebnis erscheinen. Lassen Sie diese Parametereigenschaft ganz weg, muss auf jeden Fall immer ein Datum ausgewählt werden, um ein Ergebnis zu erhalten.
Die Pickerverwendung in unserem Abfragetool haben wir Ihnen bereits in einem Beispiel weiter oben erklärt (siehe: Abfragen mit Datenpickern für die Parametereingaben), mit einer Artikelauswahl, wo wir einen Artikelpicker in den Parametereigenschaften hinterlegt haben.
Hier sehen Sie jetzt noch ein anderes Beispiel für einen Kundenpicker. Bei Wert muss der richtige Klassennamen eingetragen sein und bei Verwendung von Datenpickern ist hier ganz besonders auf die Schreibweise des Klassennamens zu achten. Wird der Klassenname falsch geschrieben, funktioniert später der Picker im Reporterzeugungsdialog nicht.
Mit der Eigenschaft 'NEWCOLUMN' entsteht eine neue Spalte. Ab da werden die folgenden Parameter wieder untereinander aufgelistet.
Und das 'WEIGHT' legt fest, wie die Aufteilung erfolgen soll. Mit '0.5' erfolgt dies jeweils zur Hälfte. Man 'gewichtet' hier die Breite mit Kommazahlen. Insgesamt muss sich dann immer '1' ergeben, bei Verwendung von mehreren Parametern, wo das 'WEIGHT' als Eigenschaft hinterlegt ist. Kommawerte müssen mit Punkt eingetragen werden!
Im SQL Statement, sollte dann die Variable z.B. so aussehen: WHERE (id_address= $P{IDADDRESS} OR $P{IDADDRESS}=0)
Hier wird auch gleich noch ein kleiner Trick angewandt. Mit dem Teil 'OR $P{IDADDRESS}=0' wird erreicht, das man nicht unbedingt eine Auswahl im Reporterzeugungsdialog vornehmen muss, es werden eben dann alle Kunden abgefragt.
Hinweis: Unter Parameter bei 'Typ' muss 'Integer' hinterlegt sein.
Bei diesem Parameter 'STATE' ist eine 'COMBOBOX' als Eigenschaft hinterlegt. In unserer Beispielabfrage mit den Ausgangsrechnungen und Ausgangsgutschriften kann man somit den Belegstatus abfragen, indem nach 'Vorbereitet', 'Gedruckt', 'Storniert' oder einfach nach 'Alle' Belege selektiert werden kann.
Die Beschriftung der Auswahlbox ist individuell definierbar und muss in der Form {AnzeigeText1, Wert1} eingetragen sein. Die Werte werden durch ein Komma getrennt, dann folgt der nächste Wert nach dem gleichen Muster. Bei unserem Beispiel ist somit bei 'Wert' eingetragen: {Vorbereitet,0},{Gedruckt,1},{Storniert,2},{Alle,-1}
Hinweis: Unter Parameter bei 'Typ' muss 'Integer' hinterlegt sein.
Der Status für diese Belege ist in der Datenbank abgespeichert mit 0=Vorbereitet,1=Gedruckt oder 2=Storniert. Mit -1 kann man sich – unabhängig vom Status – alle Belege ausgeben lassen.
In dem SQL-Statement kann das dann so aussehen: WHERE (state=$P{STATE} OR $P{STATE}=-1)
Im Reporterzeugungsdialog zeigt sich die Auswahlbox wie unten abgebildet: (in der Abbildung ist diese auf der rechten Seite aufgeklappt)
Mit einem Mausklick auf die Auswahlbox (Combobox) ist der Belegstatus jetzt wählbar und ist somit nun in der Lage nach den Belegen zu selektieren, die im Abfrageergebnis erscheinen sollen.
Oft möchte man seine Abfrageergebnisse in irgendeiner Art und Weise sortiert haben, hierzu gibt es bei AnSyS.B4C die Möglichkeit dies mit der 'Combobox' zu tun.
Die Feldnamen nach denen sortiert werden soll, gibt man mit 'Hochkommas' ein, ansonsten verhält es sich hier genauso wie bei einer 'normalen' Combobox.
Die Form der Eingabe ist dann wie folgt vorzunehmen: {AnzeigeText1, 'Feldname1'}. Auch hier werden mehrere Werte durch ein Komma wieder getrennt und dann folgt der nächste Wert. Mit 'ASC' oder 'DESC' hinter dem Feldnamen kann man noch bestimmen, ob auf- oder absteigend sortiert werden soll. . Hinweis: Unter Parameter bei 'Typ' muss 'Stringbuilder' ausgewählt sein!
Die Eingabe im SQL-Statement sollte dann so aussehen: ORDER BY $P{PARAMETER}
Im Reporterzeugungsdialog stellt sich die Auswahlbox für die Sortierfunktion dann so dar:
Mit einem Mausklick auf die Auswahlbox (Combobox) ist die Sortierung jetzt wählbar und somit nun in der Lage eine Sortierung vorzunehmen die man sich wünscht.
Der ganze Reporterzeugungsdialog mit den Einstellungen, Feldeigenschaften und Parametern, wie wir es Ihnen hier als Beispiel gezeigt haben, würde dann so aussehen:
Um es anschaulicher demonstrieren zu können, haben wir hier in unserer Beispielabfrage keinen Kunden ausgewählt, somit kommen alle Belege in dem ausgewählten Zeitraum, wo die Belege 'Vorbereitet' sind und nach dem Kundennamen aufsteigend sortiert in der Tabellenansicht nun zu sehen sind.