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ü
) und öffnen Sie den SQL-Editor im Menü :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ü Menüband anpassen auf der gewünschten Menüseite platziert.
hinterlegen. Hierzu wird die SQL-Datei im Verzeichnis "(Gemeinsame Dateien)\SQL\Menu\" gespeichert und der Befehl "Suchen | (gespeicherte SQL-Abfragen)" mit Hilfe der FunktionBeispiele 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
im SQL-Editor ausführen.