Projekt

Allgemein

Profil

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>