Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) » Historie » Version 5
[E] Frank S, 14.05.2020 15:32
1 | 1 | [E] Frank S | h1. Externer Dokumente einlesen (Dateien über vorgegebene Liste importieren) |
---|---|---|---|
2 | |||
3 | [[Einlesen externer Dokumente ins DMS]] (Dateien suchen und über Dateinamen verlinken) |
||
4 | |||
5 | |||
6 | |||
7 | 2 | [E] Frank S | h2. Felder und Parameter in Quell-SQL: |
8 | 1 | [E] Frank S | |
9 | 2 | [E] Frank S | Liste der zu importierenden Dokumente |
10 | 1 | [E] Frank S | <pre><code> |
11 | &ControlFields = System-Felder als "Spalte" in SELECT aufnehmen (Status, CimRed, CimYellow, CimGreen, ImportedPDID) |
||
12 | :xxx = Parameter aus "Importieren" |
||
13 | * = Pflichtfelder |
||
14 | |||
15 | ImportSource "import" wenn leer -> pd_source |
||
16 | ImportID * externe ID - |
||
17 | ImportFile * Pfad+Dateiname -> pd_dokumentfile / pd_dmsremotefile |
||
18 | FileName Originaler Dateiname -> pd_dokumentfile (nicht für FileLinks) |
||
19 | 4 | [E] Frank S | AlternateFile Anderer Dateiname falls ImportFile nicht existiert |
20 | nur Pfad inkl. "/", nur Dateiname oder Beides |
||
21 | Dateiname kann * oder ? enthalten, aber es darf nur eine Datei gefunden werden |
||
22 | 3 | [E] Frank S | Recursive Suche in Unterverzeichnissen von AlternateFile |
23 | 1 | [E] Frank S | |
24 | DestTable * Besitzer -> pd_tablename |
||
25 | DestDBRID * Besitzer -> pd_dbrid |
||
26 | DokIdent wenn leer über Trigger gefüllt -> pd_dokident |
||
27 | |||
28 | DokuType Dokumenttyp -> pd_doktype |
||
29 | DokuParent Pfad in Objektablage -> pd_parentnodeident |
||
30 | implizit über DokuType oder explizit über DokuParent |
||
31 | Pfad siehe Objektablage > NodeID einblenden |
||
32 | |||
33 | Caption Bezeichnung im Baum, Dateiname wenn leer -> pd_path |
||
34 | Description Beschreibungstext -> pd_txt |
||
35 | |||
36 | CreateDate Erstellungsdatum, heute wenn leer -> pd_date |
||
37 | ModifiedDate Änderungsdatum -> pd_modified |
||
38 | Preview als Vorschaudokument -> pd_print |
||
39 | Hidden ausgeblendet, import alter/gelöschter Dokumente -> pd_deletable |
||
40 | Archive Dokument sofort archivieren -> pd_archive |
||
41 | RevisionPDID Dokument revisionieren (über pd_id) -> pd_revision_id |
||
42 | RevisionSID Dokument revisionieren (über SourceID) -> pd_revision_id |
||
43 | |||
44 | LinkFile Datei nur verlinken [BOOL / VARCHAR = FileName, vorm Verlinken umbenennen/verschieben] |
||
45 | DeleteFile Datei nach Import löschen [BOOL] |
||
46 | RenameFile Datei nach Import umbennen [BOOL = *.imported / VARCHAR = NewFileName, mit Pfad = verschieben] |
||
47 | </code></pre> |
||
48 | |||
49 | |||
50 | |||
51 | 2 | [E] Frank S | h2. Parameter in Update-SQL: |
52 | 1 | [E] Frank S | |
53 | 2 | [E] Frank S | Weitere Updates für jedes importierte Dokument (nach dem Import) |
54 | z.B. manuelle Verschlagwortung und Änderungen an den Zieldatensätzen. |
||
55 | 1 | [E] Frank S | <pre><code> |
56 | :ImportID |
||
57 | :DokuDBRID (picndoku.dbrid) |
||
58 | :DokumentID (pd_id) |
||
59 | &DestTable (pd_tablename als Makro) |
||
60 | :DestTable (pd_tablename) |
||
61 | :DestDBRID (pd_dbrid) |
||
62 | :DokIdent (pd_dokident) |
||
63 | :DokuType (pd_doktype) |
||
64 | :RevisionID (pd_revision_id) |
||
65 | |||
66 | Parameter aus "Importieren" |
||
67 | Felder aus dem SourceSQL |
||
68 | </code></pre> |
||
69 | |||
70 | Jedes importierte Dokument bekommt automatisch ein Schlüsselwort mit der ImportID, für spätere Suchen und Rückverfolgung. |
||
71 | Neue Imports prüfen, ob das Dokument bereit importiert wurde (ImportID existiert). |
||
72 | * Bei Problemen entweder die Prüfung deaktivieren (Dropdown am Prüfen- und Importknopf) |
||
73 | * oder andere ImportIDs verwenden (Prefix) |
||
74 | |||
75 | Das Schlüsselwort "ImportID" an der picndoku wird von diesem Importmodul verwendet. |
||
76 | 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. |
||
77 | |||
78 | |||
79 | |||
80 | h2. ImportIDs |
||
81 | 5 | [E] Frank S | |
82 | 1 | [E] Frank S | <pre><code class="sql"> |
83 | -- Alle importierten Dokumente |
||
84 | SELECT pd_id, pd_path FROM picndoku JOIN recnokeyword ON r_dbrid = picndoku.dbrid WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID'; |
||
85 | |||
86 | -- Alles Importierte |
||
87 | SELECT * FROM recnokeyword WHERE /*r_tablename = 'picndoku' AND*/ r_kategorie = 'ImportID'; |
||
88 | |||
89 | -- "Überall" suchen |
||
90 | SELECT DestTable, DestDBRID |
||
91 | FROM ( |
||
92 | SELECT 'art'::VARCHAR AS DestTable, dbrid AS DestDBRID FROM art |
||
93 | UNION SELECT 'adk', dbrid FROM adk |
||
94 | UNION SELECT 'lifsch', dbrid FROM lifsch |
||
95 | UNION SELECT 'picndoku', dbrid FROM picndoku |
||
96 | ) AS x |
||
97 | JOIN recnokeyword ON x.DestDBRID = r_dbrid AND r_kategorie = 'ImportID' AND r_descr = :ImportID |
||
98 | |||
99 | -- ID speichern |
||
100 | SELECT TSystem.CreateKeyword('ImportID', :TableName, :ImportID, :TableDBRID, NULL, NULL); |
||
101 | </code></pre> |
||
102 | |||
103 | |||
104 | |||
105 | h2. Beispiele für Quell-SQL und Update-SQL |
||
106 | 5 | [E] Frank S | |
107 | 1 | [E] Frank S | <pre><code class="sql"> |
108 | SELECT |
||
109 | ('TestA' || pd_id)::VARCHAR AS ImportID, |
||
110 | pd_dokumentfile AS ImportFile, |
||
111 | 'art' AS DestTable, |
||
112 | art.dbrid AS DestDBRID, |
||
113 | &ControlFields |
||
114 | FROM picndoku |
||
115 | JOIN art ON ak_nr = 'ART2' |
||
116 | WHERE pd_dmsremotefile IS NULL |
||
117 | AND (pd_dokumentfile ILIKE 'C:\%' OR pd_dokumentfile ILIKE 'H:\%') |
||
118 | </code></pre> |
||
119 | <pre><code class="sql"> |
||
120 | UPDATE &DestTable SET irgendwas WHERE dbrid = :DestDBRID; |
||
121 | |||
122 | SELECT CreateRecNoKeyword(:DestTable, :DokIdent, :DokuDBRID); |
||
123 | </code></pre> |