Interaktive Datenansichten per Master-Detail

Hoch  Zurück  Vor

Mit DataNAUT CS ist es nicht nur möglich, fast beliebig komplexe, statische Datenanfragen zu erstellen. Über Master-Detail-Abhängigkeiten sind interaktive Datenansichten kein Problem. Dabei werden mehrere Datenansichten gleichzeitig angezeigt, deren Inhalte in Abhängigkeit voneinander angepasst werden. Nebst „interaktiven“ Datenansichten ist diese Funktion gerade für die Erstellung komplexer Druckreports sehr wichtig, dies wird jedoch in einem eigenen Artikel beschrieben.

 

Bei Master-Detail-Abhängigkeiten handelt es sich um Abhängigkeiten zwischen zwei Scripten. In DataNAUT CS wird dies über die Hauptabfrage (MAIN) und beliebig vielen Sub-Queries realisiert. Ein Sub-Query ist ein eigenständiges SQL-Script, das über verschiedene Master-Detail-Steuerungstypen mit dem Hauptskript verknüpft werden kann. Wird das Template ausgeführt, wird in der Datenansicht dann einerseits wie gewohnt das Ergebnis der Hauptabfrage angezeigt. Zusätzlich werden aber auch die Ergebnisse der Sub-Queries angezeigt, und zwar jeweils in Abhängigkeit von dem Datensatz, der in der Ergebnistabelle des Hauptscripts ausgewählt ist.

 

An dieser Stelle soll als einfaches Beispiel für eine Master-Detail-Abhängigkeit ein Template erstellt werden, das als Master-Abfrage alle Städte der Adressdatenbank auflistet. Die Auswahl einer Stadt in der Datenansicht wird dann über ein Sub-Query die Detail-Anzeige aller in dieser Stadt lebenden Personen aktualisieren.

 

1 Starten Sie DataNAUT CS und legen Sie ein neues Template mit dem Namen Master-Detail: Personen in Städten an.

2 Geben Sie als Hauptabfrage folgendes Script an:

SELECT 

  ORT 

FROM 

  adr

GROUP BY 

  ORT

 

Dieses Script liefert als Tabelle eine Liste aller in der Datenbank enthaltenen Orte zurück.

3 Klicken Sie unter SQL-Abfragen und Scripte auf Neu, wählen Sie als neuen Typ die Option SUB-Query aus und klicken Sie auf OK.

MasterDetail_001

4 Geben Sie als Abfrage für das neue Sub-Query SUB_01 folgenden SQL-Code ein:

SELECT * FROM adr

ORDER BY NAME

 

5 Wählen Sie jetzt unter Script-Einstellungen als Master/Detail Steuerungstyp die Option mdtIndexFields aus. Dies ist die einfachste Verknüpfung zwischen zwei Abfragen.

MasterDetail_002

Für diesen Steuerungstyp müssen für Master- und Detail-Tabelle jeweils ein Indexfeld angegeben werden. Je nach Datenbank-Typ kann es notwendig sein, dass für das jeweilige Feld explizit ein Index definiert wurde! Bei Verwendung der Demo-Datenbank und der in DataNAUT CS integrierten ADS-Engine ist dies nicht explizit nötig. Wird die Detail-Ansicht aktualisiert, werden hierfür nur die Datensätze betrachtet, bei denen im Detail-Indexfeld derselbe Wert steht, wie im ausgewählten Master-Datensatz im Master-Indexfeld. Weitere Informationen zu den verschiedenen Master-Detail-Steuerungstypen finden Sie in der Referenz zu Script-Einstellungen und Parameter.

6 Tragen Sie in die Eingabefelder Master Index Feldnamen und Detail Index Feldnamen jeweils den Wert ORT ein. Dies legt fest, dass für die Detail-Abfrage nur die Einträge der Adressdatenbank betrachtet werden, die den Ort haben, der in der Master-Ansicht ausgewählt ist.

MasterDetail_003

7 Aktivieren Sie bei in der Navigation ausgewähltem Sub-Query unter Script-Einstellungen die Option Abfrage aktiviert, damit das Sub-Query auch ausgeführt wird.

MasterDetail_004

8 Speichern Sie die gemachten Änderungen und klicken Sie auf Testen. Sobald sich die Datenansicht öffnet, werden in dieser zwei statt nur einer Ergebnistabelle angezeigt. Die zweite Tabelle ist das Ergebnis der Sub-Query in Abhängigkeit vom ausgewählten Datensatz in der ersten Tabelle. Ändern Sie die ausgewählte Stadt, dann wird auch die Liste der Personen automatisch aktualisiert.

MasterDetail_005