Für Abfragen aus der mention-Datenbank, die über die Feldauswahl und die Funktionen des Infosystems nicht erstellbar sind, können eigene SQL-Abfragen (nur SELECT-Befehle) zusammengestellt werden, die wie 'normale' Infoauswertungen verwendet werden können. Um ohne Spaltenauswahl direkt auf die Registerkarte Beenden zu gelangen, aktivieren Sie nach Auswahl der Funktion Auswertung / Neu auf Registerkarte Auswahl die Option SQL-Befehl. Der Auswertung sind Kategorie und Bezeichnung zuzuordnen, bei Bedarf auch Benutzer und/oder Benutzergruppen (Registerkarte Benutzer). Der Befehl wird in das Feld Notizen auf Registerkarte Beenden eingetragen, er muss mit SELECT beginnen (auch keine Kommentare davorsetzen).
Um solche Auswertungen bei der Belegsuche in der Warenwirtschaft verwenden zu können (Registerkarte Beenden, Auswahl im Listenfeld Beim Suchen verwenden), sind die Belegnummer und der Belegtyp mit auszugeben. Verwenden Sie die beiden Felder zum Belegkopf (z.B. für VK-Rechnungen rechkk.bsbelnr und rechkk.bsbeltyp oder für VK-Bestellungen bestkk.bsbelnr und bestkk.bsbeltyp) und geben diesen beiden Spalten keine eigenen Beschriftungen, damit die Belege über die Suchmaske (z. B. aus Stapelarbeit Verkauf in der Verkaufsabwicklung) geöffnet bzw. diese Auswertungen im Zusatzmodul mention Automailer für den Belegversand an Ihre Kunden verwendet werden können.
Um beim Ausführen im Batchmodus eigene Spaltenbezeichnungen mit Leerzeichen zu übergeben, setzen Sie die Bezeichnungen in [] - Klammern. Standardmäßig werden Leerzeichen werden durch _ (Unterstrich) ersetzt.
Achtung: Soweit Sie SQL-Abfragen mit benutzerdefinierten Feldern verwenden, müssen Sie nach dem Update auf Version V2023.3 bzw. V2024 diese gemäß der Umstrukturierung in der mention-Datenbank auf die neuen Tabellen anpassen (siehe auch SQL-Auswertungen suchen im Menü Auswertung).
In den Abfragen können auch Filter definiert werden, um beim Ausführen der Auswertung einzelne Werte vorgeben zu können. Der Filter muss in der Select-Abfrage in ?{.....} eingeschlossen sein. Dabei sind folgende Parameter zu verwenden:
t= für Parametertyp (erlaubte Werte: N - numerisch, C - Zeichen, D - Datum, L - Ja/Nein) - Pflichtangabe
b= für Parameterbezeichnung (erlaubte Länge: bis 200 Zeichen) - Pflichtangabe
Es wird empfohlen, nicht nur den Feldnamen, sondern auch den Operator anzugeben (z.B. Mandant GLEICH).
w= voreingestellter Standardwert
dec= Anzahl Dezimalstellen
len = Länge
Als Trennzeichen wird Semikolon verwendet. Klein-/Großschreibung wird nicht berücksichtigt; die Namen müssen nicht, können aber in Hochkommas eingeschlossen sein. Die Reihenfolge der Eingaben (Typ, Bezeichnung, Wert, Dezimalstellen, Länge) ist nicht vorgegeben.
Für Zeichenketten (Namen) kann man * als Platzhalter benutzen (funktioniert wie bei Filtern zu 'normalen' Infoauswertungen). Wenn man bei Zeichenketten keinen Filter angeben möchte (für alle), dann soll ein * eingegeben werden (** kann nicht verwendet werden).
Der Datum-Wert wird in einem gewöhnlichen Format angegeben, z.B. w= 01.09.2014. Felder mit dem Typ = 'L' bekommen den voreingestellten Wert = J oder N (automatisch N - Nein).
Wenn keine Standardwerte angegeben werden, dann wird voreingestellt:
1. numerische Werte - 0
2. Zeichenketten - leer
3. Datum - leeres Datum
4. Logisch -- Nein
Für den Standardwert heute zu einem Datum-Filter verwenden Sie: W= heute
Um Filter ohne Angabe eines Wertes (leer oder 0) ignorieren zu können, müssen die Filter zusätzlich in {{...}} eingeschlossen werden (Beschriftung wird in der Filtermaske grün angezeigt). Das muss für jeden dieser Filter einzeln erfolgen. Filter, die aus mehreren Teilen bestehen oder Filter mit Verschachtelung können nicht ignoriert werden. Allerdings ist das Freilassen von Filterwerten nicht für alle Felder möglich, in diesem Fall müssen die Filter bereits in der Abfrage fix gesetzt werden (z. B. für Kennzeichen offen zum VK-Beleg - Feld bsoffen aus rechkk/bestkk).
Hinweis: Die mit solchen Filterabfragen angepassten SQL-Befehle können nur in mention-Infoauswertungen verwendet und nicht in SQL Server ausgeführt werden. Aufgrund der manuellen Angabe von Filterwerten ist ein Ausführen im Batchmodus oder die Verwendung im mention Automailer nicht möglich.
--------------------------------------------------------------------------------------------
Finance-Abfrage zu Buchungen für ein Soll-Konto in einem anzugebenden Buchungszeitraum
select fjsollkto as Konto, fjsoll as Soll, fjhaben as Haben, fjbelnr as Beleg, fjbeldat as Datum
from fijoubu with(nolock)
where fjbudat between ?{t='D';B='Buchungsdatum von'} and ?{t='D';B='Buchungsdatum bis'}
and fjsollkto = ?{t=n;B='Konto'}
and fjmankey = ?{t=n;B='Mandant gleich'}
In diesem Fall kommt das Filter-Fenster mit folgenden Eingaben:
1. Buchungsdatum von
2. [Buchungsdatum] bis
3. Konto
4. Mandant gleich
-----------------------------------------------------------------------------------------------
Soll bei der Filterabfrage die Eingabe in die Felder 'Konto' und 'Mandant gleich' nicht zwingend erforderlich sein, ist der oben angegebene Befehl wie folgt anzupassen:
select fjsollkto as Konto, fjsoll as Soll, fjhaben as Haben, fjbelnr as Beleg, fjbeldat as Datum
from fijoubu with(nolock)
where fjbudat between ?{t='D';B='Buchungsdatum von'} and ?{t='D';B='Buchungsdatum bis'}
and {{fjsollkto = ?{t=n;B='Konto'}}}
and {{ fjmankey = ?{t=n;B='Mandant gleich'}}}
-----------------------------------------------------------------------------------------------
Ausgabe von Paketnummern zu Sammelrechnungen von heute für einen ausgewählten Kunden
select UBBELNR as 'Lieferschein', BSBELNR as 'Rechnung', UDPAKETNR as 'Paketnummer' from RECHKK with (nolock)
inner join RECHKD with (nolock) on RECHKK.BSBELNR = RECHKD.BDBELNR
inner join VSUPSDBN with (nolock) on VSUPSDBN.UBBELNR = RECHKD.BDUBELNR
inner join VSUPSDAT with (nolock) on VSUPSDAT.UDINTNR = VSUPSDBN.UBINTNR
where CONVERT(NVARCHAR, BSDATUM, 101) = CONVERT(NVARCHAR, GETDATE(), 101)
and BSMANKEY = UBMANKEY
and BSUBELTYP = UBBELTYP
and BSKUNDENNR =?{t=n;B='Kundennummer'; W=0}