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