Frage:
Mit Active Import war es möglich, bei der Indexerweiterung anhand externer Datenquellen (Datenbanken) die Feldzuweisungen auch vorzunehmen, wenn der Datentyp nicht identisch war.
Das heißt, ein Datenbankfeld vom Typ Text konnte auch einem Datumsfeld in DocuWare zugewiesen werden, solange der Feldinhalt passt. Das „casten“ der Datentypen hat Active Import dabei selbst übernommen.
Mit AUTOINDEX ist das aktuell nicht möglich, weshalb im Vorfeld sichergestellt werden muss, dass die externen Daten mit demselben Datentyp vorliegen wie in DocuWare. Nur dann kann eine Feldzuweisung vorgenommen werden.
Lösung:
Da die Quell-Datenbank möglicherweise von anderen Applikationen gefüllt wird und man daher die Feldtypen nicht ändern will, bietet sich die Verwendung einer Datenbank-View an, um damit die Daten mit denselben Datentypen zu verwenden wie die Zielfelder in DocuWare.
Beispiel:
Externe Datenbank mit Indexinformationen in der Tabelle „extdata.dbo.Indexdata“ (in MSSQL):
Spaltenname | Datentyp | Inhalt |
---|---|---|
ID | Nchar(10) | 1 |
Barcode | Numeric(18,0) | 123456 |
Belegnummer | Varchar(50) | 45612 |
Name | Varchar(50) | Maier AG |
PLZ | Varchar(50) | 81785 |
Belegdatum | Varchar(50) | 15.09.2014 |
In DocuWare gibt es ebenfalls die Felder Belegnummer, PLZ und Belegdatum, dort sind die Felder aber zur besseren Verwendung mit anderen Datentypen angelegt:
DocuWare Feld | Datentyp |
---|---|
Belegnummer | Nummerisch |
PLZ | Nummerisch |
Belegdatum | Datum |
In der AUTOINDEX-Workflow Konfiguration ist daher eine Zuordnung der externen Felder zu den DW-Feldern nicht möglich.
Deswegen wird eine MSSQL Datenbank-View erstellt, die die Inhalte passend zu den DocuWare-Feldern darstellt und damit eine Zuordnung möglich macht.
Weitere Informationen zu den unten aufgeführten SQL-Befehlen finden Sie hier: CAST and CONVERT (Transact-SQL) - SQL Server | Microsoft Learn
Zunächst eine grundsätzliche Erläuterung:
Die View soll alle Felder der externen DB beinhalten, daher sieht das Grundgerüst wie folgt aus:
SELECT
ID ,
barcode ,
documentnumber,
name ,
postalcode ,
documentdate
FROM
extdata.dbo.Indexdata
Um nun aus einem Textfeld ein nummerisches Feld zu machen, kommt der CAST-Befehl zum Einsatz:
CAST(<Feldname> AS <gewünschter Datentyp>) AS <Spaltename in der View>
Für das Feld „Belegnummer“ ist das SELECT-Statement beispielsweise folgendermaßen anzupassen:
SELECT
ID ,
barcode ,
CAST (documentnumber AS int) AS documentnumber,
name ,
postalcode ,
documentdate
FROM
extdata.dbo.Indexdata
Bei Datumsfeldern muss CONVERT anstelle von CAST verwendet werden:
CONVERT([datetime], <Feldname>, 104) AS <Spaltename in der View>
Das vollständige Statement zur Erstellung der MSSQL View:
CREATE VIEW AIX_VIEW
AS
SELECT
ID ,
Barcode ,
CAST (documentnumber AS int) AS documentnumber,
name ,
CAST (postalcode AS int) AS postalcode ,
convert ([datetime], documentdate, 104) AS documentdate
FROM
extdata.dbo.Indexdata
Als Vergleich ein Beispiel für eine MySQL View:
CREATE VIEW AIX_VIEW
AS
SELECT
ID ,
Barcode ,
CAST(Belegnummer AS SIGNED) AS Belegnummer,
Name ,
CAST(PLZ AS SIGNED) AS PLZ ,
CAST(Belegdatum as DATETIME) AS Belegdatum
FROM
extdata.dbo.Indexdata
Details zu den MySQL-Funktionen finden Sie hier: MySQL :: MySQL 8.4 Reference Manual :: 14.10 Cast Functions and Operators
Nachdem dieses Statement erfolgreich ausgeführt wurde, existiert in der Datenbank “extdata” nun eine View namens “AIX_VIEW”, die bei einer Abfrage automatisch immer die Inhalte der Quelltabelle „Indexdata“ beinhaltet, die Datentypen aber passend zu DocuWare liefert.
Anschließend kann in der DW-Administration eine Datenbankverbindung auf diese DB „extdata“ eingerichtet werden, um diese View bei der Konfiguration eines AUTOINDEX-Workflows verwenden zu können:
Jetzt können alle externen Felder auch den dazugehörigen DW-Feldern zugewiesen werden.