Habt ihr schonmal von DQL gehört und euch gefragt, wozu es gut ist? Dann können wir mit diesem Artikel vielleicht ein wenig Licht ins Dunkel bringen.

Domino Query Language (kurz DQL) ist vor einigen Jahren als zusätzliche Sprache mit Domino 10 hinzugekommen und dient dazu, sich flexibel direkte Datenbankabfragen zu konstruieren (z.B. zur Programmierung von Suchfunktionen). Ohne DQL benötigt man für Domino-Datenbankabfragen immer auch eine Datenansicht (View), über welche man die Datenbank durchsuchen und Daten abrufen kann.

Abbildung 1: Eine View könnt ihr euch wie eine Datentabelle vorstellen

DQL steht der Datenbankabfrage über Views laufzeittechnisch mittlerweile in nichts mehr nach und hat zudem eine recht einfache Syntax, sodass kein Domino-spezifisches Wissen wie z.B. Formula Language benötigt wird. Wenn man möchte, kann man hier aber mittlerweile auch Formula Language nutzen.

Damit man sich vorstellen kann, wie ein Suchbefehl mit DQL aufgebaut ist, hier ein Beispiel:

Hier durchsuchen wir eine generierte Testdatenbank, die Daten zu Büchern enthält. Es gibt wie gewohnt jeweils ein Dokument pro Buch. Jedes Buchdokument enthält Felder, wie Preis, Autor oder Jahr der Veröffentlichung (in unserem Beispiel sind die Variablen lediglich englisch benannt).

Price < 10 AND YearOfPublication > 2000 AND Author = 'Ben Wolf'

Wenn man diesen DQL-Suchbefehl übersetzt, möchten wir nur Dokumente zurückgegeben bekommen, bei welchen der Wert der Variable „Price“ kleiner als 10 ist, welches nach 2000 veröffentlicht wurde und dessen Autor Ben Wolf ist. Man sieht, die Syntax ist einfach und verständlich aufgebaut. Wenn ihr mehr zur DQL-Syntax erfahren möchtet, könnt ihr in der verlinkten Dokumentation vorbeischauen.

 

DQL-Bugs gefixed

Wir kennen uns mittlerweile so gut mit DQL aus, dass unserem Backend-Entwickler Daniel bereits einige Bugs aufgefallen sind, für die wir glücklicherweise aber schnell einen Hotfix von der HCL bekommen haben.

Falls ihr euch dafür interessiert, die Bugs waren die folgenden:

- Wenn Datumsintervalle verwendet wurden, wurden auch fälschlicherweise Dokumente gefunden, die außerhalb des eingegrenzten Datumsbereichs liegen (Beispiel: @ModifiedInThisFile >= @dt('2023-03-22T00:00:00Z') AND @ModifiedInThisFile < @dt('2023-05-04T00:00:00Z'); Ergebnis: In der Testdatenbank werden auch Dokumente mit dem 10.05. (also 2023-05-10) zurückgegeben)

- Komplexere Verschachtelungen mit Klammern haben dazu geführt, dass keine Ergebnisse geliefert wurden, z.B. wenn "unnötige" Klammern um einen Term verwendet wurden (Beispiel: (Title contains ('der') AND Author contains ('B*') AND (TimestampDomino >= @dt('2022-04-21T00:00:00Z') AND TimestampDomino < @dt('2024-04-22T00:00:00Z'))) AND  (Size contains ('Folio') OR Size contains ('Octavo')); Ergebnis: Es werden keine Dokumente zurückgegeben)

Falls ihr die Bugs bei euch auch beobachten konntet, könnt ihr euch also freuen, denn deren Fixes sollten im nächsten Fix Pack enthalten sein.

 

Sneak Peak auf unseren nächsten Artikel

Wie bereits erwähnt ist das Tolle an DQL, dass man direkt eine Datenbank-Abfrage machen kann, ohne dass man erst mühsam herausfinden muss, ob die Datenbank bereits eine entsprechende View hat, die die gewünschten Datenspalten enthält oder man sich eventuell erst mit dem Domino Designer eine passende View erstellen muss. DQL ist da ein direkter und flexibler Weg zum Ergebnis. Man benötigt auf diese Weise auch keine Designerrechte auf die zu durchsuchende Datenbank, sondern nur Leserechte, denn man braucht die Datenbank nun ja nicht mehr mit entsprechenden Views zu erweitern bzw. zu verändern. Hier kann also eine saubere Trennung zwischen Entwicklung und Daten stattfinden.

Doch jetzt kommt unser Cliffhanger für den nächsten Beitrag zu diesem Thema, der vor allem die Domino Leap Entwickler unter euch brennend interessieren wird: DQL wird normalerweise in Java- oder Lotusscript-Code eingesetzt und ist über Domino Leap nicht direkt nutzbar. Und so gilt auch für die integrierten Domino Leap Services bei Datenbank-Abfragen: Man benötigt eigentlich eine View. Wie ihr es trotzdem schafft in eurer Domino Leap Anwendung DQL-Abfragen zu nutzen, verraten wir euch im nächsten Blog-Eintrag. Falls ihr bis dahin Fragen zu DQL habt, ruft uns an unter 05251-288160 oder schreibt uns eine Mail an info@itwu.de.

 

Neues vom ITWU-Blog

Mit ITWU Simple Signature automatisch generierte HTML-Mailsignaturen für HCL Verse und Notes erstellen - Weiterlesen
ITWU-Projektvorstellung: Digitale Werkszeugnisse automatisch erzeugen, standardisiert und transparent - so geht smarte Qualitätssicherung! - Weiterlesen
DOMI im Verse-Kalender 3.2.1 und unsere Roadmap in Sachen Teams@Notes und MS O365-Integrationen - Weiterlesen
ITWU-Projektvorstellung: Ohne Papierkram auf Montage – ITWU zeigt euch das perfekte Tool für euren Montagearbeitsbericht, digital und doch offline-fähig!  - Weiterlesen
Der Grid-Konfigurator – Teil 2 – Wie ihr in ISIE eine Datenbank hinterlegt und eine neue Grid-Konfiguration erstellt - Weiterlesen
LotusScript-Fehler beim Hochladen aus HCL Notes ins Office 365 - Weiterlesen
Verbesserung der Benutzererfahrung auf dem Smartphone mit Nomad - Weiterlesen
 zum Archiv