Projekt

Allgemein

Profil

Aktionen

Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) » Historie » Revision 1

Revision 1/5 | Weiter »
[E] Frank S, 02.03.2017 18:34


Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren)

Einlesen externer Dokumente ins DMS (Dateien suchen und über Dateinamen verlinken)

Felder in Quell-SQL:


&ControlFields = System-Felder als "Spalte" in SELECT aufnehmen (Status, CimRed, CimYellow, CimGreen, ImportedPDID)
:xxx           = Parameter aus "Importieren" 
*              = Pflichtfelder

ImportSource   "import" wenn leer                       -> pd_source
ImportID     * externe ID                               -
ImportFile   * Pfad+Dateiname                           -> pd_dokumentfile / pd_dmsremotefile
FileName       Originaler Dateiname                     -> pd_dokumentfile (nicht für FileLinks)
AlternateFile  Anderer Dateiname falls ImportFile nicht existiert (nur Pfad, nur Dateiname oder Beides)
Recursive      Suche in Unterverzeichnissen (AlternateFile nur als Pfad)

DestTable    * Besitzer                                 -> pd_tablename
DestDBRID    * Besitzer                                 -> pd_dbrid
DokIdent       wenn leer über Trigger gefüllt           -> pd_dokident

DokuType       Dokumenttyp                              -> pd_doktype
DokuParent     Pfad in Objektablage                     -> pd_parentnodeident
                 implizit über DokuType oder explizit über DokuParent
                 Pfad siehe Objektablage > NodeID einblenden

Caption        Bezeichnung im Baum, Dateiname wenn leer -> pd_path
Description    Beschreibungstext                        -> pd_txt

CreateDate     Erstellungsdatum, heute wenn leer        -> pd_date
ModifiedDate   Änderungsdatum                           -> pd_modified
Preview        als Vorschaudokument                     -> pd_print
Hidden         ausgeblendet, import alter/gelöschter Dokumente -> pd_deletable
Archive        Dokument sofort archivieren              -> pd_archive
RevisionPDID   Dokument revisionieren (über pd_id)      -> pd_revision_id
RevisionSID    Dokument revisionieren (über SourceID)   -> pd_revision_id

LinkFile       Datei nur verlinken [BOOL / VARCHAR = FileName, vorm Verlinken umbenennen/verschieben]
DeleteFile     Datei nach Import löschen [BOOL]
RenameFile     Datei nach Import umbennen [BOOL = *.imported / VARCHAR = NewFileName, mit Pfad = verschieben]

Felder in Update-SQL:


:ImportID
:DokuDBRID    (picndoku.dbrid)
:DokumentID   (pd_id)
&DestTable    (pd_tablename als Makro)
:DestTable    (pd_tablename)
:DestDBRID    (pd_dbrid)
:DokIdent     (pd_dokident)
:DokuType     (pd_doktype)
:RevisionID   (pd_revision_id)

Parameter aus "Importieren" 
Felder aus dem SourceSQL
Jedes importierte Dokument bekommt automatisch ein Schlüsselwort mit der ImportID, für spätere Suchen und Rückverfolgung.
Neue Imports prüfen, ob das Dokument bereit importiert wurde (ImportID existiert).
  • Bei Problemen entweder die Prüfung deaktivieren (Dropdown am Prüfen- und Importknopf)
  • oder andere ImportIDs verwenden (Prefix)

Das Schlüsselwort "ImportID" an der picndoku wird von diesem Importmodul verwendet.
ImportID mit z.B. einem anderem Prefix oder an allen anderen Tabellen können frei verwendet werden, um beispielsweise den Dokumentbesitzer (DestTable/DestDBRID) aus einem vorherrigen Tabellenimport zu finden.

ImportIDs
-- Alle importierten Dokumente 
SELECT pd_id, pd_path FROM picndoku JOIN recnokeyword ON r_dbrid = picndoku.dbrid WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID';

-- Alles Importierte
SELECT * FROM recnokeyword WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID';

-- "Überall" suchen
SELECT DestTable, DestDBRID
FROM (
  SELECT 'art'::VARCHAR AS DestTable, dbrid AS DestDBRID FROM art
  UNION SELECT 'adk', dbrid FROM adk
  UNION SELECT 'lifsch', dbrid FROM lifsch
  UNION SELECT 'picndoku', dbrid FROM picndoku
) AS x
JOIN recnokeyword ON x.DestDBRID = r_dbrid AND r_kategorie = 'ImportID' AND r_descr = :ImportID

-- ID speichern
SELECT TSystem.CreateKeyword('ImportID', :TableName, :ImportID, :TableDBRID, NULL, NULL);

Beispiele für Quell-SQL und Update-SQL
SELECT
  ('TestA' || pd_id)::VARCHAR AS ImportID,
  pd_dokumentfile AS ImportFile,
  'art' AS DestTable,
  art.dbrid AS DestDBRID,
  &ControlFields
FROM picndoku
JOIN art ON ak_nr = 'ART2'
WHERE pd_dmsremotefile IS NULL
  AND (pd_dokumentfile ILIKE 'C:\%' OR pd_dokumentfile ILIKE 'H:\%')

UPDATE &DestTable SET irgendwas WHERE dbrid = :DestDBRID;

SELECT CreateRecNoKeyword(:DestTable, :DokIdent, :DokuDBRID);

Von [E] Frank S vor mehr als 7 Jahren aktualisiert · 1 Revisionen