DSR-Parameter für noch flexiblere Templates

Hoch  Zurück  Vor

SQL-Abfragen lassen sich mittels Parametern dynamisch gestalten, so dass über Benutzereingaben die zurückgelieferte Datenmenge beliebig "gesteuert" werden kann. So flexibel dieses Parameter-System auch sein mag, manchmal erfordert es viel Aufwand, die gewünschte Flexibilität bei einer Abfrage über SQL-Parameter zu bekommen und manchmal ist es gar nicht möglich. Für solche Fälle bietet DataNAUT CS seine DSR-Parameter. Mit diesen Parametern können Sie ganze Teile einer SQL-Abfrage anpassen, nicht bloß einzelne Werte.

 

DSR, das steht für Dynamic SQL Replacement und es bedeutet, dass Sie mittels dieser Parameter beliebige Teile eines SQL-Scripts anpassen können. Ein DSR-Parameter wird nicht einfach nur durch einen bestimmten Wert ersetzt, dafür würden normale SQL-Parameter genügen, stattdessen kann ein DSR-Parameter durch ganze Teile einer SQL-Abfrage ersetzt werden, beispielsweise durch eine optionale WHERE-Klausel.

 

Die DSR-Technologie bietet mehrere große Vorteile gegenüber den klassischen SQL-Parametern: Da wäre zunächst die Möglichkeit, komplexe SQL-Abfragen stark zu vereinfachen. Statt komplizierter Abfragen und Bedingungen in einer SQL-Abfrage, die dem Benutzer des jeweiligen Templates gezielte Abfragen auf einer komplexen Datenmenge erlauben, können Sie mit DSR-Parametern die SQL-Abfrage einfach passend "zusammenbauen". Das Ergebnis ist dann eine vergleichsweise einfache Abfrage, was ganz nebenbei zu einer schnelleren Verarbeitung der SQL-Anweisung führt.

 

Zusätzlich eröffnet Ihnen die DSR-Technologie ganz neue Wege für dynamische Abfragen. Manche Abfragen lassen sich einfach nicht über normale Parameter steuern, sondern müssen jeweils für den jeweiligen Zweck umgeschrieben werden. Das hieße, dass der Benutzer vor dem Start eines Templates entscheiden müsste, welche Daten er wie benötigt, auch wenn es logischer wäre, diese Auswahl innerhalb eines Templates zu treffen. Die DSR-Parameter bieten Ihnen die Möglichkeit, solche unterschiedlichen Abfragen quasi in einem Template zu vereinen.

 

Im Folgenden ein einfaches Beispiel für die Verwendung von DSR-Parametern, das auf dem Template aus Parameter-Queries für voneinander abhängige Parameter aufbaut: Über den DSR-Parameter kann ausgewählt werden, ob und wie die resultierende Datenansicht sortiert sein soll. Dies geschieht über eine mittels DSR-Parameter optional eingefügte ORDER-BY-Anweisung.

 

1 Legen Sie eine Kopie des Templates aus Parameter-Queries für voneinander abhängige Parameter an oder erstellen Sie dies wie im Artikel beschrieben.

2 Klicken Sie im Templateeditor im Kasten Parameter auf den Reiter DSR-Parameter und dann auf den Button Hinzufügen. DSR-Parameter müssen im Gegensatz zu SQL-Parametern explizit hinzugefügt werden, bevor Sie erkannt und verwendet werden können. Jeden neuen DSR-Parameter für ein Template müssen Sie auf diese Weise hinzufügen.

DSR_001

3 Geben Sie den Namen für den DSR-Parameter ein, in diesem Beispiel SORTIERUNG, und klicken Sie auf OK.

DSR_002

4 Öffnen Sie die Haupt-SQL-Abfrage über Navigation / Basiseinstellungen / SQL-Abfragen und Scripte / Main / DEFAULT und geben Sie im Editor folgendes Script an:

SELECT * FROM adr

  WHERE YEAR (CURDATE()) - YEAR (gdatum) >= :PARAM_MINALTER

    AND YEAR (CURDATE()) - YEAR (gdatum) <= :PARAM_MAXALTER

  %SORTIERUNG%

 

Neu ist hier nur der DSR-Parameter %SORTIERUNG%. DSR-Parameter werden mit bestimmten Zeichen eingefasst, den so genannten DSR-Delimitern. Das Standard-Zeichen hierfür ist das Prozent-Zeichen (%). Falls dieses Zeichen aus irgendwelchen Gründen nicht verwendet werden kann, können Sie den DSR-Delimiter in den Basiseinstellungen des Templates anpassen.

5 Öffnen Sie jetzt die Parametermaske und fügen Sie ein Radio-Steuerelement ein. Dieses Steuerelement soll für die Auswahl der Sortierung verwendet werden.

6 Weisen Sie der Eigenschaft Parameter des Steuerelements den DSR-Parameter SORTIERUNG zu und bearbeiten Sie dann die Eigenschaft ResultOption: Wählen Sie als Verhalten des Rückgabewertes die Option Rückgabewert = zum Anzeigewert korrespondierender Wert aus der Liste der Rückgabewerte aus und geben Sie dann die Anzeigewerte und Rückgabewerte wie folgt an:

Anzeigewert

Rückgabewert

Keine

Diese Zeile leer lassen

Geburtstag

ORDER BY gdatum

Name

ORDER BY name

Name, Geburtsjahr

ORDER BY name, YEAR(gdatum)

Geburtsjahr, Name

ORDER BY YEAR(gdatum), name

 

DSR_003

7 Speichern Sie die Änderungen und klicken Sie dann auf Testen. Je nach ausgewählter Sortierung wird der DSR-Parameter durch die entsprechenden ORDER-BY-Anweisung ersetzt und die Ergebnistabelle entsprechend sortiert. Soll nicht sortiert werden, dann wird der Parameter auf Grund der leeren Rückgabewert-Zeile einfach weggelassen.

DSR_004

Dies ist zwar ein recht einfaches Beispiel für die Verwendung von DSR-Parametern, aber ohne DSR-Parameter wäre eine solche dynamische Auswahl der Sortierung nicht möglich.