<< Click to Display Table of Contents >> Navigation: Anwendungen (Apps) erstellen und ändern - Berechtigung Designer > Features und Funktionen > SQL-DSR |
DSR (Dynamic SQL Replace) ist eine DataNAUT-spezifische Erweiterung der SQL-Syntax, um zusätzliche Parameter in den SQL-Code einzubringen oder den SQL-Code anders zu beeinflussen.
DSR-Parameter, vergleichbar mit Umgebungsparametern (Environmentvariablen), werden im DataNAUT in blauer Schriftfarbe angezeigt. Sie sind konfigurierbare Variablen, die einen beliebigen Text enthalten können wie zum Beispiel beliebige Werte oder sogar ganze Blöcke mit SQL-Anweisungen. Der Wert eines DSR-Parameters kann sich ständig verändern, wodurch es möglich ist, SQL-Scripte dynamisch zu gestalten. DSR-Parameter werden durch einen Delimiter (Trennzeichen) eingeschlossen, welcher im Datenbankprofil unter dem Reiter „Basiseinstellungen“ aus einer vordefinierten Liste ausgewählt werden kann.
Datenbanken sind oft nicht in der Lage, den Typ eines Parameters zu ermitteln. Dies führt häufig zu Fehlern und macht den Code unausführbar. DSR-Parameter hingegen sind grundsätzlich vom Datentyp String und müssen nicht definiert werden.
Skript vor Verarbeitung |
Erklärung |
Skript nach Verarbeitung |
ORDER BY %COLUMN% |
Die Datenmenge wird nach der im DSR-Parameter hinterlegten Spalte sortiert. |
ORDER BY Auftragsnummer |
SELECT Auftragsnummer FROM Projekte %CONDITION% ORDER BY Auftragsnummer |
Es werden alle Aufträge mit der im DSR-Parameter hinterlegten Bedingung angezeigt. |
SELECT Auftragsnummer FROM Projekte WHERE Jahr = 2013 ORDER BY Auftragsnummer |
SELECT Projektname FROM Projekte WHERE Auftragsnummer > 1000 %Operator% Rechnungsbetrag < 500 |
Es werden alle Projekte angezeigt bei denen, je nach hinterlegtem Operator im DSR-Parameter, die Bedingungen zutreffen. Der Operator kann so zum Beispiel AND oder OR sein, wodurch die Ergebnismenge stark beeinflusst wird. |
SELECT Auftragsnummer FROM Projekte WHERE Auftragsnummer > 1000 OR Rechnungsbetrag < 500 |
SELECT Projektname FROM Projekte WHERE Tage = $$DD$$ + %DAYS% |
Es werden alle Projektnamen mit den aus der Textersetzungsklasse und dem DSR-Parametern addierten Tagen angezeigt. |
SELECT Projektname FROM Projekte WHERE Tage = 16 + 45 |
Radiogroup A → %Datenmenge% Radiogroup B → %Sortierung% |
Der Benutzer hat zwei Radiogroups ausgewählt. Die entsprechenden zwei Code-Teilstücke, welche im DSR-Parameter hinterlegt sind, werden ergänzt und zu einem kompletten Code-Block zusammengefügt. |
SELECT Auftragsnummer FROM Projekte WHERE Jahr = 2013
ORDER BY Monat |
Checklistbox → %Sortierung% |
Der Rückgabewert einer Checklistbox wird in einem DSR-Parameter gespeichert und im SQL-Code als Sortierung verwendet. |
SELECT Projektname FROM Projekte ORDER BY Auftragsnummer |
DSR-Parameter können zusammen mit der Textersetzungsklasse (TEK) verwendet werden, wobei die DSR-Parameter immer vor der Textersetzungsklasse vom Programm ausgewertet werden. Bei SQL-Parametern wird keine Auswertung der Textersetzungsklasse vorgenommen. Außerdem ist eine Verschachtelung von DSR-Parametern, also einen DSR-Parameter in einem weiteren DSR-Parameter, nicht möglich.
Auswertungsreihenfolge |
Skript vor Verarbeitung |
Erklärung |
Skript nach Verarbeitung |
1. DSR-Parameter auflösen |
SELECT %FIELDS% FROM system.iota |
Für den DSR-Parameter %FIELDS% wird der Wert $$YYYY$$ eingefügt. |
SELECT $$YYYY$$ FROM system.iota |
2. Textersetzungsklasse auflösen |
SELECT $$YYYY$$ FROM system.iota |
Der Wert $$YYYY$$ wird durch den Wert '2013' ersetzt. |
SELECT 2013 FROM system.iota |
Hat ein DSR-Parameter den Wert NULL, wird dieser automatisch durch das Einfügen eines Leerzeichens ersetzt. Dabei ist zu beachten, dass der SQL-Code eventuell nicht ausführbar ist, wenn zum Beispiel nach "leer" sortiert werden soll. In diesem Fall ist es besser, in dem DSR-Parameter die gesamte SQL-Anweisung zu hinterlegen, sodass bei "leer" keine Sortierung stattfindet und der Code trotzdem fehlerfrei ausgeführt werden kann.
Skript vor Verarbeitung (DSR-Parameter = NULL) |
Erklärung |
Skript nach Verarbeitung |
SELECT * FROM Projekte ORDER BY %Sortierung% |
Ist der DSR-Parameter leer, ist das Skript nicht ausführbar, da nicht nach "leer" sortiert werden kann.
Es kommt zu einem Fehler! |
SELECT * FROM Projekte ORDER BY " " |
SELECT * FROM Projekte %Sortierung% |
Besser ist es, die gesamte SQL-Anweisung im DSR-Parameter zu hinterlegen, damit das Skript auch bei einem leeren DSR-Parameter fehlerfrei ausgeführt werden kann.
Die Ergebnismenge wird zwar ohne Sortierung, dafür aber fehlerfrei ausgegeben. |
SELECT * FROM Projekte |
Besonderheiten
Alle DSR-Parameter werden automatisch vom Programm registriert und hinzugefügt.
Applikation
Es kann genau ein benannter Parameter festgelegt werden.
Kommandozeile
Wenn App-Parameter festgelegt, kann mit -pav[Name]=Wert bzw. --parametervalues[Name]=Wert dem Parameter über die Kommandozeile ein Wert zugewiesen werden.
Interaktive Parametereingabe
Wenn App-Parameter festgelegt, kann über einen Eingabedialog vom Benutzer dem Parameter ein Wert zugewiesen werden.
Init-Script
Das Init-Script kann maximal einen Parameter besitzen, nämlich den App-Parameter. Jedes Ergebnis-Feld im Init-Script wird zu einem Parameter. Dabei kann der App-Parameter überschrieben werden, wenn er nicht überschrieben wird, gilt weiterhin der Wert aus 1 oder 2 für den App-Parameter.
App-Scripte
Alle Parameter, die von 0 oder 3 definiert wurden stehen in den App-Scripten zur Verfügung.
Zusätzlich gibt es im "SQL-Script für die Quittierung" die Möglichkeit alle Felder aus dem Abfrageergebnis des "SQL-Script des Prozesses" als Parameter zu verwenden.