Abfrage-Center mit SQL
Abfrage-Center mit SQL
Über den Button Auswertungen und dem dann erscheinenden Unterpunkt Abfrage-Center erreicht man den Bereich der Abfragen. In diesem Programmodul können per SQL eigene Abfragen und Auswertungen geschrieben werden. Diese können dann direkt gedruckt oder an Excel/Calc oder als ASCII-Datei ausgegeben werden.
Zur Erstellung dieser Abfragen sind Kenntnisse der Datenbankabfragesprache SQL notwendig.

Schauen wir uns die Eingangsmaske einmal an:

Auf der linken Seite befinden sich die unterschiedlichen Zugehörigkeiten, in die jede Liste einsortiert werden kann.
Im oberen Bereich kann über die Beschreibung nach den vorhandenen Abfragen gesucht werden und eine Selektion nach Abfrage-Nummer von/bis ist ebenfalls möglich. Im mittleren Bereich werden alle bereits vorhandenen Abfragen angezeigt.

Das Stern-Symbol wird blau, sobald eine Abfrage als Favorit gekennzeichnet wurde. Dieses Kennzeichen kann allerdings nicht angezeigt werden, wenn mehrere Abfragen auf einmal markiert werden. Im Menü Links unter Favoriten werden die so gekennzeichneten Abfragen aufbereitet.

Um eine neue Abfrage zu erstellen, klickt man einfach im unteren Bereich der Maske auf den Button Neu.

Bei der Neuanlage von Abfragen muss eine Nummer vergeben werden

Passwort „Ändern": Ist hier ein Passwort hinterlegt, können nur Bediener eine Änderung an der Abfrage selbst vornehmen, wenn sie im Besitz des Passwortes sind.
Passwort „Aufruf": Dieses Passwort wird abgefragt, wenn man die Abfrage anzeigen lassen möchte in der Vorschau.
Für jede Abfrage können entsprechende Zugriffsrechte vergeben werden.
Die Rechte können für komplette Geschäftsstellen, Bedienergruppen oder einzelne Bediener vergeben werden.

Sobald ein angemeldeter User nicht zu einer der gewählten Kategorien gehört, ist die komplette Auswertungen für diesen User nicht mehr sichtbar.
In der neuen Abfrage tragen Sie zuerst eine neue Abfrage-Nummer, eine Beschreibung und evtl. eine ausführlichere Information ein. Über SQL-Statement wird direkt mit SQL-Befehlen gearbeitet.

Über die Registerkarte Procedure bzw. Procedure 2 kann darüber hinaus mit selbstgeschriebenen Prozeduren gearbeitet werden. Eine Erläuterung dazu, die schon sehr in Richtung Programmierung ginge, würde den Umfang hier bei weitem sprengen. Falls Interesse an diesem Thema besteht, so gibt es im Fachhandel entsprechende Fachliteratur über den Bereich Prozeduren in SQL.
Wichtig sind dagegen noch die Einstellungen. Nach Klick darauf öffnet sich folgendes Bild:

Es kann entweder mit Exel/Calc oder mit Direktdruckvorlagen gearbeitet werden. Werden hier keine selbstdefinierten Vorlagen angegeben, erzeugt die Abfrage eine Temporäre Druckdatei während des Druckjobs.
Falls mit einer vorher erstellten Excel-/Calc-Vorlage gearbeitet werden soll, so muss der Ziel-Pfad im Bereich Übergabe an Excel/Calc unter Vorlage eingetragen werden. Dies ist zwar nicht zwingend erforderlich, hat aber den Vorteil, dass in dieser Vorlage die Überschriften und alle Formatierungen bereits hinterlegt werden können, so dass die Liste bereits mit der Übergabe an Excel fertig ist! Wird keine Vorlage eingetragen, werden die Daten ebenfalls zu Excel/Calc übergeben, allerdings muss das Layout nach der Übergabe selbst angepasst werden. Die Parameter Startzeile und Startspalte sind dann wichtig, wenn auf eine vorformatierte Excel-/Calc-Vorlage zugegriffen wird. Stehen die Überschriften in dieser Vorlage beispielsweise in Zeile 1, muss die Startzeile, ab der Daten von L3 übertragen werden, mindestens Zeile 2 sein, da die Überschriften ansonsten überschrieben würden.
Im Bereich Mandantenauswahl für Übergabe an Excel/Calc können Sie entscheiden, ob die Liste nur für den angemeldeten Mandanten ausgeführt werden soll, oder für mehrere Mandanten. Im letzteren Fall bekommen Sie über den Button Auswahl Mandanten eine Liste der Mandanten. Hier können Sie einzelne Datenbanken auswählen, in dem Sie diese markieren und mit dem Button > in das Fenster gewählte Mandanten ziehen, oder aber alle mit dem >> Button in das Fenster Gewählte Mandanten transferieren. Mit dem Button < können Sie einzelne Mandanten bzw. mit dem Button << die gesamte Auswahl unter Gewählte Mandanten wieder in das Fenster Verfügbare Mandanten zurück transferieren.
Falls die Ausgabe nicht über Excel/Calc laufen soll, sondern die Daten sofort ausgedruckt werden sollen, so ist der Bereich Direktdruck relevant. Auch hier kann -- allerdings nicht zwingend - eine Direkt-Druckvorlage angegeben werden, die vorher manuell erstellt wurde. Ein solcher Ausdruck kann auch aus mehreren Druckdateien bestehen. Es ist auf jeden Fall zu beachten, dass die erste Druckdatei als Vorlage eingetragen wird. Diese muss im Format „xx_1.dat" gespeichert sein, eine eventuelle zweite Datei für diesen Ausdruck im Format „xx_2.dat", wobei „xx" ein frei vergebener Dateiname ist. In dieser Datei werden die entsprechenden Feldbezeichner (gleiche Namen wie in der Datenbank selbst) sowie die Formatierungen eingegeben.
Befehlserweiterungen für Druckdat-Dateien, die als Vorlage eingetragen ist:
[Heute X]: Bewirkt den Ausdruck des aktuellen Tagesdatums auf der Liste
[Eingabe1 X]: Bewirkt den Ausdruck der 1. eingetragenen Variablen, falls beim Abfrage-Aufruf Variablen abgerufen werden. Die zweite Variable würde in der Druckdatei wie folgt stehen:
[Eingabe2 X] usw.
„X" bedeutet die jeweilige X-Position in 10tel mm.
Ist keine Datei unter Vorlage eingetragen, werden Standardeinstellungen verwendet. Die vorgeschlagene Zeichenweite können Sie in diesem Fall ändern.
Information
Die Zeichenweite wird immer in 10tel mm angegeben. Ein Durchschnittswert ist der Eintrag „13". Der Wert „23" gibt immer den gesamten Text aus.
Als Alternative kann hier genaue Längenermittlung angehakt werden. Dann wird die Breite jeder Spalte genauestens aufgrund des längsten Feldinhaltes der jeweiligen Spalte ermittelt. Bei größeren Abfragen kann es bei der genauen Längenermittlung zu zeitlichen Verzögerungen kommen. Ferner kann noch der obere und linke Rand in 10tel mm sowie der Querdruck eingestellt werden.
Über das Feld Quelldatenbank kann ausgewählt werden, ob die Liste auf die Global- oder Mandantendatenbank ausgeführt werden soll. Ein gleichzeitiger Zugriff auf beide Datenbanken ist nicht möglich.
Ist die Erstellung der Abfrage fertig, so wird diese über den Button OK gespeichert.
Wichtig
Es ist nicht möglich, die folgenden Befehle innerhalb einer Erweiterten Liste zu nutzen:
INSERT / UPDATE / DELETE / ALTER / DROP /CREATE
Es handelt sich hierbei um SQL-Befehle, mit denen Daten innerhalb der Datenbank manipuliert werden können. Sollte ein solcher Befehl in einer Liste genutzt werden, erscheint eine Meldung beim Aufruf der Liste:

Information
In den Abfragen kann der Parameter [Bediener] genutzt werden. Damit wird dann auf den angemeldeten Bediener abgefragt. Z.B.
select * from kontakte where bediener = [Bediener]
Mit dieser Abfrage werden nun alle Kontakte angezeigt die als Bediener den angemeldeten Bediener eingetragen haben.
Die einzelnen Buttons der Eingangsmaske
Soll eine bestehende Liste geändert werden, so wird im oberen Bereich auf den entsprechenden Eintrag und dann im unteren Bereich auf den Button Ändern geklickt. Soll eine Liste ganz gelöscht werden, geschieht dieses über Löschen. Wenn Sie auf den Button Neu klicken, legen Sie eine neue Liste an.
Falls eine Liste auf eine andere L3 Datenbank überspielt werden soll, so geschieht dieses über Export (die Abfrage werden als ZIP-Datei exportiert). Soll eine neue Liste aus einer anderen Datenbank oder z.B. von ServiceERP in ein bestehendes System übernommen werden, erfolgt dies über den Button Import. Bei beiden Varianten vom Import/Export öffnet sich der Windows Dateiexplorer und Sie wählen dort die Datei aus dem Pfad aus, indem die Datei abgelegt wurde oder werden soll, sowie dem Dateinamen.
Sie können für den Export auch mehrere Abfragen gleichzeitig markieren und dann exportieren. Diese Abfragen werden dann in einer Datei zusammengefasst.
Über den Button Vorschau oder einen Doppelklick auf die entsprechende Liste, erscheint eine Vorschau der Liste. Über den Button Drucken kann die Liste auch direkt ausgedruckt werden.
Über Ausgabe bieten sich zwei Exportmöglichkeiten:
Ausgabe als ASCII-Datei oder Übergabe an Excel/Calc.
Nutzungsstatistik
Die Nutzung der Abfragen wird im Hintergrund protokolliert.
Für die Anzeige der Nutzung kann innerhalb der Abfragen die Auswertung Nutzungsstatistik aufgerufen werden. Hier wird die Nutzung der Abfragen dargestellt.
Damit der Aufruf der Statistik möglich ist, muss in den Bedienerberechtigungen die Berechtigung „Abfragen Nutzungsstatistik" aktiviert sein.

**
**
Feld-Überschriften bei Direktdruck ohne Vorlage
Falls beim Direktdruck einer Liste keine Vorlage angegeben wurde, werden Standardeinstellungen verwendet, d.h. die Überschriften haben die gleiche Bezeichnung wie das Feld in L3 intern heißt (z.B. „Kundname"). Die Überschriften können beeinflusst werden durch die Vergabe eines Überschriftenbezeichners innerhalb des SQL-Befehls. Dieser wird nach dem Feldbezeichner in geschweiften Klammern gesetzt, wie man in der unteren Abbildung erkennen kann:

Platzhalter für Variablen
Erlaubt sind hier die Datentypen „1" = Text, „2" = Zahl, „3" = Datum und „4" = Auswahlmenü. Das Auswahlmenü funktioniert nur bei einigen, von der Programmierung vorgesehenen Tabellen. Da wären z.B. der Status der Kunden und des Personals. Branchen, Qualifikationen und Berufe stehen auch zur Verfügung. Alle Stammtabellen hier aufzuführen wäre ein bisschen viel. Hier hilft auch manchmal das Ausprobieren innerhalb der Liste. Sollte eine Tabelle nicht für die Auswahl indiziert sein, quittiert das Abfrage-Center dieses mit einer entsprechenden Meldung.
Am Beispiel oben erkennt man die genaue Syntax: z.B. kundennr < [KundenNr kleiner]. Bei der Variablen handelt es sich um eine Zahl, daher die „2". Der Text dahinter ist frei wählbar und erscheint beim Ausführen der Liste.
Ein weiterer Platzhalter [Heute] wird automatisch durch das aktuelle Tagesdatum ersetzt.
Wenn in einem SQL Statement eine 5 vor das Auswahlfeld gesetzt wird, können in dem Feld Aufzählungen eingetragen werden. Hier ein Beispielstatement:
Select * from Kunden where Kundennr in ([5Kundennr. (z.B. 1,2,3):])
Die möglichen Platzhalter in den Abfragen
[HEUTE] = Aktuelles Tagesdatum
[FIL_NR] = Angemeldete Filiale
[MAND_NR] = Angemeldeter Mandant
[BEDIENER] = Angemeldeter Bediener
[BEDIENERGST] = Berücksichtigung aller Geschäftsstellen, für die der angemeldete Bediener die Rechte hat
[BEDIENERGESCHST] = Der Parameter muss in runde Klammern gesetzt werden. Relevant für die Ermittlung der Daten sind die Eintragungen im Bedienerstamm in Bezug auf die Option Berechtigung für alle Mandanten/Geschäftsstellen und der Maske Mandanten/Geschäftsstellen unter Berechtigungen.
Wenn der Bediener die Option Berechtigung für alle Mandanten/Geschäftsstellen gesetzt hat, werden alle Daten ungeachtet der Geschäftsstelle aufbereitet.
Wenn der Bediener die Option nicht gesetzt hat, und unter Berechtigungen Mandanten/Geschäftsstellen ist ein Mandant und Geschäftsstellen hinterlegt, werden nur die Daten der Geschäftsstellen aufbereitet, die hier hinterlegt sind.
Wenn der Bediener die Option nicht gesetzt hat, und unter Berechtigungen Mandanten/Geschäftsstellen ist ein Mandant und keine Geschäftsstellen hinterlegt, werden keine Daten ausgegeben.
Beispiel für ein Statement:
select * from personal p where p.geschst in ([BEDIENERGESCHST])
Auswahltabellen in den Erweiterten Liste
Über die Variable „4" öffnet sich für die nachfolgenden Felder eine Auswahlmaske. Diese sind allerdings fix und können nicht variiert werden:
[4BANKEN] = Auswahl aus Bankenstamm
[4STAATEN] = Auswahl aus Staatenstamm
[4BERUFE] = Auswahl aus Berufe-/Selektionenstamm
[4BRANCHEN] = Auswahl aus Branchenstamm
[4QUALIF] = Auswahl aus Qualifikationsstamm (Personal)
[4BUNDLAND] = Auswahl aus Bundeslandstamm
[4VERBEAUF] = Auswahl aus Vertreterstamm
[4GEBIETE] = Auswahl aus Gebietestamm
[4DISPONEN] = Auswahl aus Disponentenstamm
Flexible Auswahl- und Suchfunktion
Bei der Verwendung von Variablen können auch selbstdefinierte Auswahl- und Suchfunktionen verwendet werden. Hierbei wird ein weiteres SQL-Statement verwendet.
Diese Funktion wird nun anhand eines Beispiels genauer beschrieben.
Beispiel
In dem nun beschriebenen Beispiel können Artikel nach einer gewünschten Mengen-Einheit ausgegeben werden. Der Aufruf der Abfrage sieht dann wie Folgt aus:

Um nun ein entsprechendes Ergebnis zu erhalten, muss nun der Schlüssel der Mengeneinheit eingetragen werden. In diesem Beispiel wäre es die 1, um alle Artikel mit der Mengen-Einheit „kg" (Kilogramm) zu erhalten:

Ergebnis:
Vorrausetzung bei diesem Beispiel ist nun, dass die einzelnen Schlüssel der jeweiligen Mengen-Einheiten bekannt sein müssen, um ein entsprechendes Ergebnis zu erhalten.
Genau für solche Konstellation wurden nun weitere Optionen integriert, um die Abfragen bzw. Filterung zu vereinfachen. Die neuen Möglichkeiten werden an dem zuvor beschriebenen Beispiel genauer erläutert.
Auswahlmenü
Das Auswahlmenü zeigt die zu filternden Möglichkeit aus einer fest definierten Liste an. Anhand des Beispiels mit der Filterung nach einer Mengen-Einheit, könnte das Ergebnis dann wie Folgt aussehen:

Gefiltert wird weiterhin nach dem Schlüssel der Mengen-Einheit, wie z.B. 1 für Kilogramm, allerdings ist es so nun einfacher zu erkennen, welcher Schlüssel für welche Mengen-Einheit steht.
Um das beschriebene Ergebnis zu erhalten, muss das SQL-Statement der Abfrage entsprechend angepasst werden.
Um diese Möglichkeit besser zu beschreiben, wird die unter Punkt 2.2. Beispiel aufgeführte erweiterte Liste mit der manuellen Eingabe des Schlüssels für die Mengen-Einheiten zunächst erklärt.
Das entsprechende SQL-Statement sieht für diese Filterung wie Folgt aus:

Als WHERE Bedingung wurde folgender Parameter angegeben:
ME1=[2Mengen-Einheit: ]
Das Feld ME1 beinhaltet den Schlüssel der Mengen-Einheit jedes einzelnen Artikels in der Tabelle WWS_ARTIKEL.
Mit = wird in dem SQL-Statement nun definiert, dass nur die Artikel (Datensätze) mit dem eingetragenen Schlüssel für die Mengen-Einheit ermittelt und als Ausgabe zurückgegeben werden sollen.
Würde man grundsätzlich nur Artikel mit dem Schlüssel 1 (für „Kilogramm"), ohne dass beim Aufruf ein Schlüssel eingetragen werden kann, würde die Abfrage wie Folgt lauten:
ME1=1
Jedoch wurde in diesem Beispiel anstelle des festen Werts 1 folgender Parameter angegeben:
[2Mengen-Einheit: ]
Dieser Parameter teilt der Abfrage beim Aufruf mit, dass hier eine Eingabemöglichkeit vorhanden sein soll. Dies Angabe solcher Paramater ist eine für L3 definierte Funktion und keine grundlegende Funktion von SQL.
Um nun beim Aufruf der Abfrage nicht die manuelle Eingabe zu erhalten, sondern das Auswahlmenü, muss der Parameter in dem SQL-Statement innerhalb WHERE Bedingungen für das Feld ME1 angepasst werden.
Der Paramater für die manuelle Eingabe („[2Mengen-Einheit: ]") wird zunächst entfernt:

Nun kommt die Eingabe des Parameters für die neue Möglichkeit eines Auswahl-Menüs.
Zunächst muss definiert werden, ob es bei dem Datenbank-Feld (ME1), welches für die Filter verwendet werden soll, um ein reines Zahlenfeld (INTEGER) oder ein alphanumerisches Feld (z.B. CHAR) handelt.
Denn je nachdem um welchen Typ von Datenbankfeld es sich handelt, muss der nun beschriebene Parameter unterschiedlichen angegeben werden.
Der neue Parameter für das Auswahlmenü beginnt somit mit folgender Angabe:
[SQL1: = Alphanumerisch
[SQL2: = Numerisch
In dem Beispiel handelt es sich bei dem Datenbankfeld Feld ME1 um ein INTEGER Feld, also numerische Werte. Daher wird hier [SQL2: verwendet:

Der Parameter wird als nächstes um die Bezeichnung erweitert. Die Bezeichnung kann beliebig gewählt werden. Da es sich in dem Beispiel um Mengen-Einheiten handelt, wird „Mengen-Einheit:" gewählt. Der Parameter sieht dann wie Folgt aus:
[SQL2:Mengen-Einheit:
In der erweiterten Liste wird das SQL-Statement entsprechend erweitert:

Es wurde nun der Typ sowie die Bezeichnung vergeben.
Was nun noch fehlt ist die eigentliche Auswahl. Hierzu wird nun ein weiteres, eigenes SQL-Statement verwendet.
In dem Beispiel soll nach den Mengen-Einheiten gefiltert werden können. Diese Mengen-Einheiten werden grundsätzlich in L3 unter Datei Stammdaten Artikel Mengen-Einheiten gepflegt:

Diese Stammdaten können nun mit einem eigenen SQL-Statement ermittelt und als Auswahlmenü dargestellt werden.
Dieses SQL-Statement könnte dann wie Folgt aussehen:
SELECT MENR, MENR SCHLUESSEL, MELANG
FROM WWS_MENGENEINH
WHERE GEBINDE=""
ORDER by SCHLUESSEL asc
Das SQL-Statement ermittelt somit die Stammdaten für die Mengen-Einheiten. Einzeln in einer eigenen Abfrage ausgeführt, würde folgendes Ergebnis herauskommen:

Zu erkennen ist, dass die Nummer bzw. der Schlüssel der Mengen-Einheit zweimal ausgegeben wird. Würde man dieses SQL-Statement in dem Beispiel für das Auswahlmenü verwenden, so wird immer die erste Spalte zur Filterung verwendet, aber nie in dem Auswahlmenü angezeigt. Aller weiter Spalten aus dem SQL-Statement werden in dem Auswahl-Menü angezeigt.
Um in dem Beispiel auch die Nummer bzw. der Schlüssel der Mengen-Einheit sehen zur können, wurde diese nochmal aufgeführt.
Der Parameter für das Auswahlmenü wird nun um das SQL-Statement ergänzt. Vor dem SQL-Statement muss ein | (Alt Gr + >) und danach, um den Parameter dann abzuschließen, ein ] eingetragen werden.
Der Parameter sieht dann wie Folgt aus:
[SQL2:Mengen-Einheit:|SELECT MENR, MENR SCHLUESSEL, MELANG FROM WWS_MENGENEINH WHERE GEBINDE="" ORDER by SCHLUESSEL asc]
In der Abfrage sieht es wie Folgt aus:

Mit OK kann dann die Bearbeitung der Abfrage abgeschlossen und gespeichert werden.
Beim Aufruf der Abfrage erhält man nun folgende Filter-Abfrage:

Man kann nun die gewünschte Mengen-Einheit wählen und die Abfrage wie gewohnt ausführen.
Suchfenster
Das Suchfenster zeigt die zu filternden Möglichkeiten in einem separaten Fenster an. In diesem kann nach einzelnen Werten gesucht und für die Filterung ausgewählt werden. Anhand des Beispiels mit der Filterung nach einer Mengen-Einheit, könnte das Ergebnis dann wie Folgt aussehen:

Wird die Abfrage ausgeführt, erscheint zunächst wie gewohnt ein Feld, um eine manuelle Eingabe für die Filterung vornehmen zu können.
Zusätzlich wird jedoch rechts neben dem Eingabefeld eine Lupe angezeigt. Mit einem Klick der linken Maus-Taste auf diese Lupe öffnet sich ein Suchfenster. In dem hier angegeben Beispiel werden nun die einzelnen Mengen-Einheiten angezeigt. Hier kann dann über das Suchfeld auch gesucht werden:

Wie beschrieben kann in diesem Suchfenster auch nach allen Felder gesucht werden:

Der gewünschte Wert (als Beispiel 1) kann dann mit einem Doppelklick der linken Maus-Taste oder mit OK in den Filter übernommen werden:

Gefiltert wird weiterhin nach dem Schlüssel der Mengen-Einheit, wie z.B. 1 für Kilogramm, allerdings ist es so nun einfacher zu erkennen, welcher Schlüssel für welche Mengen-Einheit steht.
Um das beschriebene Ergebnis zu erhalten, muss das SQL-Statement der Abfrage entsprechend angepasst werden.
Um diese Möglichkeit besser zu beschreiben, wird die unter Punkt 2.2. Beispiel aufgeführte erweiterte Liste mit der manuellen Eingabe des Schlüssels für die Mengen-Einheiten zunächst erklärt.
Das entsprechende SQL-Statement sieht für diese Filterung wie Folgt aus:

Als WHERE Bedingung wurde folgender Parameter angegeben:
ME1=[2Mengen-Einheit: ]
Das Feld ME1 beinhaltet den Schlüssel der Mengen-Einheit jedes einzelnen Artikels in der Tabelle WWS_ARTIKEL.
Mit = wird in dem SQL-Statement nun definiert, dass nur die Artikel (Datensätze) mit dem eingetragenen Schlüssel für die Mengen-Einheit ermittelt und als Ausgabe zurückgegeben werden sollen.
Würde man grundsätzlich nur Artikel mit dem Schlüssel 1 (für „Kilogramm"), ohne dass beim Aufruf ein Schlüssel eingetragen werden kann, würde die Abfrage wie Folgt lauten:
ME1=1
Jedoch wurde in diesem Beispiel anstelle des festen Werts 1 folgender Parameter angegeben:
[2Mengen-Einheit: ]
Dieser Parameter teilt der erweiterten Liste beim Aufruf mit, dass hier eine Eingabemöglichkeit vorhanden sein soll. Dies Angabe solcher Paramater ist eine für L3 definierte Funktion und keine grundlegende Funktion von SQL.
Um nun beim Aufruf der erweiterten Liste nicht die manuelle Eingabe zu erhalten, sondern das Suchfenster, muss der Parameter in dem SQL-Statement innerhalb WHERE Bedingungen für das Feld ME1 angepasst werden.
Der Paramater für die manuelle Eingabe („[2Mengen-Einheit: ]") wird zunächst entfernt:

Nun kommt die Eingabe des Parameters für die neue Möglichkeit eines Suchfensters.
Zunächst muss definiert werden, ob es bei dem Datenbank-Feld (ME1), welches für die Filter verwendet werden soll, um ein reines Zahlenfeld (INTEGER) oder ein alphanumerisches Feld (z.B. CHAR) handelt.
Denn je nachdem um welchen Typ von Datenbankfeld es sich handelt, muss der nun beschriebene Parameter unterschiedlichen angegeben werden.
Der neue Parameter für das Suchfenster beginnt somit mit folgender Angabe:
[SQL3: = Numerisch
[SQL4: = Alphanumerisch
In dem Beispiel handelt es sich bei dem Datenbankfeld Feld ME1 um ein INTEGER Feld, also numerische Werte. Daher wird hier [SQL3: verwendet:

Der Parameter wird als nächstes um die Bezeichnung erweitert. Die Bezeichnung kann beliebig gewählt werden. Da es sich in dem Beispiel um Mengen-Einheiten handelt, wird „Mengen-Einheit:" gewählt. Der Parameter sieht dann wie Folgt aus:
[SQL3:Mengen-Einheit:
In der Abfrage wird das SQL-Statement entsprechend erweitert:

Es wurde nun der Typ sowie die Bezeichnung vergeben.
Was nun noch fehlt ist die eigentliche Auswahl. Hierzu wird nun ein weiteres, eigenes SQL-Statement verwendet.
In dem Beispiel soll nach den Mengen-Einheiten gefiltert werden können. Diese Mengen-Einheiten werden grundsätzlich in L3 unter Datei Stammdaten Artikel Mengen-Einheiten gepflegt:

**
**
Diese Stammdaten können nun mit einem eigenen SQL-Statement ermittelt und in dem Suchfenster dargestellt werden.
Dieses SQL-Statement könnte dann wie Folgt aussehen:
SELECT MENR, MENR SCHLUESSEL, MELANG
FROM WWS_MENGENEINH
WHERE GEBINDE=""
ORDER by SCHLUESSEL asc
Das SQL-Statement ermittelt somit die Stammdaten für die Mengen-Einheiten. Einzeln in einer eigenen Abfrage ausgeführt, würde folgendes Ergebnis herauskommen:

Zu erkennen ist, dass die Nummer bzw. der Schlüssel der Mengen-Einheit zweimal ausgegeben wird. Würde man dieses SQL-Statement in dem Beispiel für das Suchfenster verwenden, so wird immer die erste Spalte zur Filterung verwendet, aber nie in dem Suchfenster angezeigt. Alle weiter Spalten aus dem SQL-Statement werden in dem Suchfenster angezeigt.
Um in dem Beispiel auch die Nummer bzw. der Schlüssel der Mengen-Einheit sehen zur können, wurde diese nochmal aufgeführt.
Der Parameter für das Suchfenster wird nun um das SQL-Statement ergänzt. Vor dem SQL-Statement muss ein | (Alt Gr + >) und danach, um den Parameter dann auch abzuschließen, ein ] eingetragen werden.
Der Parameter sieht dann wie Folgt aus:
[SQL3:Mengen-Einheit:|SELECT MENR, MENR SCHLUESSEL, MELANG FROM WWS_MENGENEINH WHERE GEBINDE="" ORDER by SCHLUESSEL asc]
In der Abfrage sieht es wie Folgt aus:

Mit OK kann dann die Bearbeitung der erweiterten Liste abgeschlossen und gespeichert werden.
Beim Aufruf der Abfrage erhält man nun folgende Filter-Abfrage:

Man kann nun die gewünschte Mengen-Einheit weiterhin manuell eingeben oder mit einem Klick der linken Maus-Taste auf die Lupe aus dem Suchfenster wählen und die erweiterte Liste wie gewohnt ausführen.
Änderungen
db34e-am6fa64-am90571-am