Office Manager Entwickler-Support

SQL-Abfragen im Dokumentenmanagement

SQL ist eine nach ISO und ANSI standardisierte Datenbanksprache für die

  • Datenabfrage mit SELECT,
  • Datenänderung mit UPDATE
  • und die Definition mit den Befehlen CREATE TABLE und ALTER TABLE.

Eine Sprachreferenz und Einführung finden Sie beispielsweise bei Wikibooks und in der MS SQL-Server-Dokumentation.

Im Office Manager Dokumenten-Management-System können Sie mit Hilfe von SQL individuelle Abfragen erstellen und diese für den Benutzer im Menü hinterlegen. Innerhalb der SQL-Anweisungen sind auch OmAPI-Makrovariablen möglich.

Führen Sie im Dokumentenarchiv nur Abfrage und keine Datenänderungen oder -Definitionen mit SQL aus!

SQL-Editor

Melden Sie sich bitte als Administrator an (Menü Datei | Optionen | Administrator) und öffnen Sie den SQL-Editor im Menü Administrator | Skript | SQL-Abfrage | SQL-Editor:

SQL-Editor

Nach dem Öffnen beinhaltet der Editor die aktuelle Abfrage des Dokumentenarchivs. Sie können die SELECT-Anweisung ändern und zum Beispiel als Standardabfrage für die Anwender im Menü Start hinterlegen. Hierzu wird die SQL-Datei im Verzeichnis "(Gemeinsame Dateien)\SQL\Menu\" gespeichert und der Befehl "Suchen | (gespeicherte SQL-Abfragen)" mit Hilfe der Funktion Menüband anpassen auf der gewünschten Menüseite platziert.

Beispiele für SQL-Abfragen im Archiv

1. Datei-Dubletten finden

Office Manager DMS erlaubt es, dieselbe Dokumentdatei mit mehreren Archiv-Datensätzen zu verknüpfen, zum Beispiel als Dokumenten-Klone. Dubletten können aber auch unerwünscht sein und unter anderem entstehen, wenn ein Import ohne die Option Nur neue Dokumentdateien importieren durchgeführt wurde.

Über Dateinamen

Mit folgender SQL-Abfrage finden Sie alle Datensätze, bei denen das Feld Dateiname den gleichen Text beinhaltet:

SELECT * FROM document
WHERE FILENAME IN
  (SELECT FILENAME FROM DOCUMENT
   GROUP BY FILENAME HAVING COUNT(FILENAME) > 1)

SQL-Skript doppelter-dateiname.sql 

Über Hash-Summe

Das Archivfeld FILEHASHMD5 beinhaltet seit DMS-Version 12.0 die Hashsumme der Dokumentdatei. Beachten Sie bitte, dass folgende Abfrage auch unterschiedliche Dateien als Dublette zurückgibt, welche zufällig dieselbe Hashsumme aufweisen. Prüfen Sie also in jedem Fall, ob es sich tatsächlich um das gleiche Dokument handelt.

SELECT * FROM document
WHERE FileHashMD5 IN
  (SELECT FileHashMD5 FROM document
  GROUP BY FileHashMD5 HAVING COUNT(FileHashMD5) > 1)

SQL-Skript doppelter-hashwert.sql 

2. Kommentare im SQL

Kommentare innerhalb des SQL-Skriptes werden mit "/*" eingeleitet und mit "*/" beendet. Man sollte hier etwas vorsichtig sein, zum Beispiel darf keine Internetadresse mit "http://" in den Kommentaren stehen.
Bei Access-Datenbanken sind die Kommentare nicht möglich.

/* Ein Kommentar im Standard-SQL */
SELECT * FROM document
WHERE project LIKE 'Mein Projekt%
'

3. SQL-Jokerzeichen

In der EDV werden häufig die Zeichen * und ? als Joker verwendet. SQL weicht davon ab, die Joker sind:

  • % für eine beliebige Anzahl von Zeichen und
  • _  für ein einzelnes Zeichen.

Textabfragen mit Jokern werden mit LIKE anstelle des Operators = ausgeführt.

SELECT * FROM document
WHERE kunde LIKE '%Me_er'

Office Manager DMS erlaubt bei der normalen Archivsuche auch den Stern und das Fragezeichen. Diese werden aber vor Ausführung des SQL-Befehles in die entsprechenden SQL-Joker umgewandelt.

4. SQL-Abfragen und Makros kombinieren

Die SQL-Anweisung wird vor Übergabe an die Datenbank vom Makrointerpreter verarbeitet. Enthaltene Makrobefehle in geschweiften Klammern werden ausgewertet.

Im folgenden Beispiel wird eine Dokumentennummer vom Anwender erfragt und anschließend das Archiv danach durchsucht:

SELECT * FROM document
WHERE docno = '{ExecInputQuery:Dokumentnummer}'

5. Dateitypen ausschließen

Alle Dokumente im Archiv suchen, die im Projekt "Prinzenallee" oder einem Unterprojekt hiervon abgelegt sind. Dokumentdateien mit der Endung ".dwg" oder ".prt" vom Suchergebnis ausschließen.

SELECT * FROM document
WHERE project LIKE 'Prinzenallee%'
  AND (filename NOT LIKE '%.dwg')
  AND (filename NOT LIKE '%.prt')

6. Nicht indexierte Dokumente aufspüren

Beispiel für "JOIN" zur Überprüfung, ob alle Dokumente für die Volltextsuche indexiert sind. In der Detailtabelle "ftiwid" sind die Wort- und Dokument-Schlüsselnummern enthalten. Mit folgender Abfrage finden Sie alle Datensätze in der Tabelle "document", dessen Schlüsselnummern "docid" nicht in der Tabelle "ftiwid" vorkommen. Wenn die Ergebnismenge leer ist, dann sind alle Dokumente indexiert.

SELECT d.*
FROM document AS d
  LEFT JOIN ftiwid AS f
         ON d.docid = f.docid
      WHERE f.docid IS NULL

Diese Abfrage können Sie nur mit dem Befehl Temporäre Ergebnismenge verwenden im SQL-Editor ausführen.