Datenbankfunktionen für Filterbedingungen
Informationen
- Kategorien: Kernel | Filter (Kern)
- Version: 19.0.0.8464
- Veröffentlichungsdatum: Sonntag, 13. November 2016
- Entwickler: Fischer
- Benötigt Datenbankänderung: Nein
- Betreff: Definition weiterer Datenbankfunktionen für Filterbedingungen
Beschreibung
Unterstützt werden unäre Funktionen (d.h. mit einem einzelnen Argument), die einen Wert als Argument erhalten und ein Ergebnis zurückgeben. Der Typ des Arguments darf vom Typ des Ergebnis abweichen. Die Funktion zum Ermitteln der Textlänge benötigt z.B. einen Text (String) als Argument und gibt eine Ganzzahl (integer) zurück. Die WHERE-Klausel einer SQL-Abfrage lautet z.B. "where LENGTH(PERSON.LAST_NAME) > 20" für alle Personen, deren Nachname länger als 20 Zeichen ist.
Einige Funktionen sind bereits im pit-IS Kern für die DBMS MS-ACCESS, SQL-Server und ORACLE definiert. Weitere Funktionen können in Datei ...\system\config\dbms.ini definiert werden.
Die Sektionen für Funktions-Definitionen haben die Form "[FUNCTION
Die einzelnen Einträge müssen folgender Syntax entsprechen:
Damit die Einträge korrekt eingelesen werden können sind folgende Regeln einzuhalten:
- Felder (wie
) sind durch ein Komma getrennt - Felder, die ein Komma enthalten sind in einfache Anführungszeichen einzuschließen
- Sind Spezialzeichen wie einfache Anführungszeichen im Feld enthalten, ist ein ''-Zeichen voranzustellen
- Umschließen sie die rechte Seite nach dem Gleichheitszeichen mit doppelten Anführungszeichen
Die Felder: Displayed Text: Dieser Text wird in der Combobox des Filter-Dialogs angezeigt. %ARGUMENT% im Text ist ein Platzhalter für den Printnamen des Attributs Falls der Text eine vorangestellte Übersetzungs-ID enthält, wird er vor der Anzeige übersetzt.
Data-Type of Argument, Data-Type of Result: Der Datentyp des Arguments bzw. des Ergebnis. Unterstützte Datentypen: int, double, string, date, time
SQL-Pattern: SQL-Ausdruck wie er im SQL-Statement benutzt wird %ARGUMENT% ist Platzhalter des Arguments (Attribut, Wert etc.)
Flags: Die Flags beeinflussen das Verhalten der Funktion. Einziges unterstütztes Flag ist 'SemanticType'. Es definiert das Ergebnis der Funktion als nur vergleichbar mit anderen Ergebnissen derselben Funktion. Die Funktion Soundex liefert z.B. als Ergebnis einen String, der dem Klang (Sound) des Arguments entspricht. Es macht deshalb wenig Sinn, das Ergebnis mit einem direkten Wert zu vergleichen (Soundex(Person.Vorname) = 'Maier'). Ist das Flag gesetzt, wird das 2. Arguments des Vergleichsoperators auch durch die Funktion ersetzt (Soundex(Person.Vorname) = Soundex('Maier')).
Operators: Liste der erlaubten Vergleichsoperatoren für diese Funktion. Die Vergleichsoperatoren sind durch '|'-Zeichen getrennt. Einen leere Liste erlaubt alle Vergleichsoperatoren. Unterstützte Vergleichsoperatoren: IsNull, Equal, Greater, GreaterEqual, Less, LessEqual, Interval, Like, BeginsWith, EndsWith, Contains, ContainedIn, Duplicate
Description: Beliebiger Text, der die Funktion beschreibt.
Beispielcode
;
; Vordefinierte Funktionen in pit-IS, hier als Beispiel für eigene Funktionen aufgeführt
;
; Syntax:
; <FunctionName> = "'<Displayed Text>', <Data-Type of Argument>, <Data-Type of Result>, '<SQL-Pattern>', <Flags>, <Operators>, '<Description>'"
; Format:
; To support correct parsing some rules
; Field including a ',' character it must be enclosed by single quotes.
; To "escape" a character like single quote it has to be preceded by a '\' character
; Enclose right side of line (starting with first field following '=' character, ending after last field) in double quotes.
;
; Displayed Text:
; Text as displayed in combo box in filter dialog. %ARGUMENT% is optional placeholder for attribute print name
; If text is prefixed by a translation id it will be translated before displaying
; Data-Type of Argument, Data-Type of Result:
; Data types of argument and resulting value.
; Supported data types: int, double, string, date, time
; SQL-Pattern:
; SQL expression used in sql statement
; %ARGUMENT% is placeholder for function argument (attribute, literal value etc.)
; Flags:
; Flags control behavior of function. Supported flags:
; SemanticType: function result compares only to results of same function
; Example: not allowed: Soundex( Name ) = "Smith"
; allowed: Soundex( Name ) = Soundex("Smith")
; Operators:
; List of compare operators allowed for this function. Seperated by '|' character.
; Empty operators list allows all operators
; Supported operators: IsNull, Equal, Greater, GreaterEqual, Less, LessEqual, Interval, Like, BeginsWith, EndsWith, Contains, ContainedIn, Duplicate
; Example: Equal|Greater|Less
; Description:
; Any text
;
[FUNCTIONS MSACCESS]
StrLength = "'Länge', string, int, 'LEN(%ARGUMENT%)',,,string length of argument"
DayOfDate = "'Tag', date, int, 'DAY(%ARGUMENT%)',,,"
MonthOfDate = "'Monat', date, int, 'MONTH(%ARGUMENT%)',,,"
YearOfDate = "'Jahr', date, int, 'YEAR(%ARGUMENT%)'"
DayOfTime = "'Tag', time, int, 'DAY(%ARGUMENT%)',,,"
MonthOfTime = "'Monat', time, int, 'MONTH(%ARGUMENT%)'"
YearOfTime = "'Jahr', time, int, 'YEAR(%ARGUMENT%)'"
HourOfTime = "'Stunde', time, int, 'HOUR(%ARGUMENT%)'"
MinuteOfTime = "'Minute', time, int, 'MINUTE(%ARGUMENT%)'"
SecondOfTime = "'Sekunde', time, int, 'SECOND(%ARGUMENT%)'"
;Soundex-Funktion wird von Access nicht unterstützt
;Soundex = "'Phonetik', string, string, SOUNDEX(%ARGUMENT%), SemanticType, Equal"
[FUNCTIONS SQLSERVER]
StrLength = "'Länge', string, int, 'LEN(%ARGUMENT%)',,,string length of argument"
DayOfDate = "'Tag', date, int, 'DATEPART(dd,%ARGUMENT%)',,,"
MonthOfDate = "'Monat', date, int, 'DATEPART(mm,%ARGUMENT%)',,,"
YearOfDate = "'Jahr', date, int, 'DATEPART(yyyy,%ARGUMENT%)'"
DayOfTime = "'Tag', time, int, 'DATEPART(dd,%ARGUMENT%)'"
MonthOfTime = "'Monat', time, int, 'DATEPART(mm,%ARGUMENT%)'"
YearOfTime = "'Jahr', time, int, 'DATEPART(yyyy,%ARGUMENT%)'"
HourOfTime = "'Stunde', time, int, 'DATEPART(hh,%ARGUMENT%)'"
MinuteOfTime = "Minute', time, int, 'DATEPART(mi,%ARGUMENT%)'"
SecondOfTime = "Sekunde', time, int, 'DATEPART(ss,%ARGUMENT%)'"
Soundex = 'Phonetik', string, string, SOUNDEX(%ARGUMENT%), SemanticType, Equal"
[FUNCTIONS ORACLE]
StrLength = "'Länge', string, int, 'LENGTH(%ARGUMENT%)',,,string length of argument"
DayOfDate = "'Tag', date, int, 'EXTRACT(DAY FROM %ARGUMENT%)',,,"
MonthOfDate = "'Monat', date, int, 'EXTRACT(MONTH FROM %ARGUMENT%)',,,"
YearOfDate = "'Jahr', date, int, 'EXTRACT(YEAR FROM %ARGUMENT%)'"
DayOfTime = "'Tag', time, int, 'EXTRACT(DAY FROM %ARGUMENT%)'"
MonthOfTime = "'Monat', time, int, 'EXTRACT(MONTH FROM %ARGUMENT%)'"
YearOfTime = "'Jahr', time, int, 'EXTRACT(YEAR FROM %ARGUMENT%)'"
HourOfTime = "'Stunde', time, int, 'EXTRACT(HOUR FROM %ARGUMENT%)'"
MinuteOfTime = "Minute', time, int, 'EXTRACT(MINUTE FROM %ARGUMENT%)'"
SecondOfTime = "Sekunde', time, int, 'EXTRACT(SECOND FROM %ARGUMENT%)'"
Soundex = "'»Phonetik', string, string, SOUNDEX(%ARGUMENT%), SemanticType, Equal"