03.08 Aufbau Treiber-INI zu SDBFILE.DLL (z.B. TSSPROT.INI)
Mit diesem infra-Datenbanktreiber kann für ausgewählte Datenbankdateien das Ändern, Erfassen und/oder Löschen von Daten in einer Datei protokolliert werden.
Die Protokollierung kann infraweit stattfinden oder aber nur in bestimmten Programmen. Layout und Bedingungen für die Protokollierung sind ebenfalls frei konfigurierbar.
Die Protokoll-/Exportdatei kann in verschiedenen Formaten erstellt werden (ASC/ISO/UTF), durch Verwendung von „FileHeader“ und „FileFooter“ sind auch XML-Dateien generierbar.
Beispiel
Im Programm "111 Teilestamm bearbeiten" sollen die Änderungen für Teile mit der Kennung "Übergabe an CAQ" protokolliert werden.
Jeder infra-Datenbanktreiber benötigt spezielle Konfigurationsparameter.
Diese Parameter werden in einer speziellen zum jeweiligen Datenbanktreiber gehörigen INI-Datei abgelegt. Der Name der zu einem Datenbanktreiber gehörenden INI-Datei ist im Prinzip frei wählbar, sollte sich jedoch zu Wartungszwecken an den durch die Installation vorgegebenen Namen orientieren. Die Zuordnung einer derartigen INI-Datei zum jeweiligen Datenbanktreiber erfolgt in der Sektion [DataBases] der Datenbankkonfigurationsdatei SIBDB.INI.
Hinweis dazu: Ein Leerzeichen zwischen DLL-Angabe und der INI-Datei führt beim infra-Installationssystem zu einem Fehler (2082, Konfigurationsdatei konnte nicht gefunden werden)!
Sollte also so aussehen:
SDBeplanTSS: sdbfile.dll,SDBeplanTSS.INI
Die INI-Dateien werden im INI-Verzeichnis der infra-Installation gesucht.
Der Aufbau dieser INI-Datei unterscheidet sich in einigen Punkten von der SIBPPS.INI:
Anstelle des Gleichheitszeichens tritt hier der Doppelpunkt und als Kommentarzeichen wird "#" anstelle von ";" verwendet. Außerdem ist zu beachten, dass die Schlüssel- und Sektionsnamen case-sensitiv behandelt werden, das heißt die Groß-/Kleinschreibung muss beachtet werden.
Der infra-Datenbanktreiber SDBFILE.DLL kann zur Archivierung, Protokollierung oder zum Export von in infra:NET veränderten Daten in einer externen Datei eingesetzt werden. Dieser Treiber ist kein vollwertiger Datenbanktreiber, der anstelle eines anderen Datenbanktreibers eingesetzt werden kann. Er kann lediglich Exportaufgaben erfüllen, ist also nicht für vollständige Datenzugriffe konzipiert. Der Treiber kann nur als Ergänzung zu einem vollwertigen Datenbanktreiber eingesetzt werden.
In der INI-Datei zu diesem Datenbanktreiber (SDBFILE.DLL) sind folgende Einstellungen möglich bzw. notwendig:
|
Description:
|
"Änderungsprotokoll Teilestamm "
Kurze Beschreibung dieser Datenbankverbindung, der angegebene Text wird zum Beispiel in Fehlermeldungen, die sich auf diese Verbindung beziehen, ausgegeben.
| ||||||||||||
|
[ECHT]
|
Zu jeder in der infra-Datenbankkonfigurationsdatei SIBDB.INI in der Sektion [DataSources] definierten Datenquelle, die von diesem Datenbanktreiber unterstützt werden soll, muss hier eine eigene Sektion existieren. Der Name der jeweiligen Sektion entspricht dem jeweiligen Ident der Datenquelle.
| ||||||||||||
|
File:
|
c:\tssprot.txt
Name und Pfad der Datei, in die die zu exportierenden Informationen geschrieben werden sollen.
| ||||||||||||
|
LockFile:
|
Yes|No (Default: No)
Gibt an, ob die unter "File:" angegebene Datei geschützt (gesperrt) werden soll (Yes), sobald Daten geschrieben werden oder nicht (No).
| ||||||||||||
|
LockWait:
|
10000 (Default: 0)
Wird beim Versuch, die unter "File:" angegebene Datei vor fremden Zugriffen zu schützen, bemerkt, dass die Datei bereits von einem anderen Prozess benutzt oder gesperrt wird, gibt dieser Wert den Zeitraum in Millisekunden (1000ms = 1s) an, innerhalb dem weiterhin versucht wird auf die Datei exklusiv zuzugreifen - ohne das ein Fehler gemeldet wird.
Diese Einstellung wird nur im Zusammenhang mit "LockFile: Yes" ausgewertet.
| ||||||||||||
|
Format:
|
ISO|ASCII|UTF-8|UTF-16 (Default: (infra Datenbankformat))
Gibt den Zeichensatz für die in die unter "File:" angegebene Datei zu schreibenden Informationen an. Wird kein Format angegeben, so wird automatisch im Format der infra-Datenbank (i.d.R. ASCII) exportiert.
| ||||||||||||
|
FileHeader:
|
Hier kann ein Vorspann für die zu erstellende Exportdatei angegeben werden. Dieser Vorspann wird – wenn noch nicht vorhanden – vor den eigentlichen Exportdaten geschrieben.
Zusammen mit dem FileFooter lassen sich so zum Beispiel Dateien mit einer XML-Struktur erzeugen.
Beispiel:
FileHeader: "<xml version=[34]1.0[34] encoding=[34]UTF-16[34]>[13][10]"
| ||||||||||||
|
FileFooter:
|
Analog zu „FileHeader“ kann hier ein Nachspann für die Exportdatei definiert werden. Der Nachspann wird (einmalig) ans Ende der Exportdatei – nach den eigentlichen Exportdaten – geschrieben. Bei einer Erweiterung der Exportdatei mit neuen Daten wird der Nachspann immer ans Ende verschoben, so dass die neuen Daten immer zwischen Header und Footer eingefügt werden.
Zusammen mit dem FileHeader lassen sich so zum Beispiel Dateien mit einer XML-Struktur erzeugen.
Beispiel:
FileFooter: "</xml>[13][10]"
| ||||||||||||
|
ExportChangesOnly:
|
Yes|No
Diese Einstellung bestimmt, ob bei der Aktualisierung eines Datensatzes in der infra-:NET Datenbank (Update) nur dann Informationen in die unter "File:" angegebene Datei geschrieben werden sollen, wenn sich auch Änderungen in den zu schreibenden Informationen ergeben (Yes) oder ob generell Daten geschrieben werden (No).
Um Änderungen festzustellen wird der Actionstring (siehe Kapitel 03.08.1) einmal mit dem Inhalt des alten Datensatzes aufbereitet und einmal mit dem Inhalt des neuen – ergeben sich Differenzen zwischen den Ergebnissen findet der Export statt. Mit geschweiften Klammern „{…}“ lassen sich Bereiche aus dem ActionString für den Vergleich ausblenden.
| ||||||||||||
|
Restriction:
|
LBUF(6, DDp(6,3), DDl(6,3)) == "0110012 "
Mit diesem Schlüssel können durch Komma getrennte Bedingungen angegeben werden. Nur wenn alle angegebenen Bedingungen erfüllt sind, wird die jeweilige Datensatzänderung protokolliert. Eine Bedingung besteht aus 2 Makroausdrücken und einem Vergleichsoperator.
Der 2. Ausdruck einer Bedingung vom Typ "==" (ist gleich) oder "!=" (ist ungleich) kann dabei eine Auswahl erlaubter bzw. nicht erlaubter Werte in runden Klammern und durch Komma getrennt enthalten.
Über das Makro LBUF kann auf den Inhalt des jeweils zu protokollierenden Datensatzes zugegriffen werden.
Damit kann die Ausgabe abhängig vom Inhalt des zu protokollierenden Datensatzes erfolgen.
Beispiel
Restriction: LBUF(6,DDp(6,88),DDl(6,88))=="1"
6_PDV111_Upd: "MID("[F3][F4][F57]",1)MID("LBUF(27,DDp(27,7),DDl(27,7))",1)[13][10]"
6_PDV111_Ins: "MID("[F3][F4][F57]",1)MID("LBUF(27,DDp(27,7),DDl(27,7))",1)[13][10]"
Im Programm "111 Teilestamm bearbeiten" sollen nur die Änderungen für Teile mit der Kennung "Übergabe an CAQ" protokolliert werden.
Zulässige Vergleichsoperatoren:
Beispiel mit Auswahl, siehe "Tabelle_Restriction"
| ||||||||||||
|
Tabelle_Restriction
|
Eine Ausgabebedingung kann auch auf Basis der zu protokollierenden Datenbanktabelle formuliert werden. Während die allgemeine Bedingung "Restriction:“ immer (unabhängig vom geänderten Datensatztyp) erfüllt sein muss, um überhaupt eine Ausgabe zuzulassen, gilt die hier formulierte Bedingung nur für den jeweiligen tabellenabhängigen Protokolleintrag (z.B. "Tabelle_Upd:“). Wird sowohl eine allgemeine als auch eine tabellenabhängige Bedingung hinterlegt, müssen beide Bedingungen erfüllt werden, um eine Protokollierung der jeweiligen Datenänderung zuzulassen.
Beispiel (mit Auswahl):
46_Restriction: "[F1]"==("VRS","IND","KOP","FU1","FU2","INT")
46_Upd: "UPD:[.46][34][F1][F2][F9][34][ActDate() ActTime()][13][10]"
Es werden nur Textänderungen (Datei 46) mit dem Ident "VRS“, "IND“, "KOP“, "FU1“, "FU2“ oder "INT“ protokolliert.
| ||||||||||||
|
Tabelle_Upd:
|
Actionstring
| ||||||||||||
|
Tabelle_Programm
_Upd:
|
Actionstring
Diese Schlüssel geben an, was bei einem Update auf einen vorhandenen Datensatz in der als "Tabelle" angegebenen Datenbankdatei in die Exportdatei geschrieben werden soll. Sollen nur dann Informationen exportiert werden, wenn in einem (oder mehreren) bestimmten Programm die angegebene Tabelle verändert wird, kann zusätzlich zur betroffenen Tabelle das gewünschte Programm angegeben werden.
Die Beschreibung der zu exportierenden Daten (Actionstring) siehe unten.
| ||||||||||||
|
Tabelle_
UpdCompare
|
Actionstring
Dieser Schlüssel definiert eine Vergleichszeichenfolge. Nur wenn sich in dieser Vergleichszeichenfolge ein Unterschied aus dem alten und dem veränderten Datensatz ergibt, wird ein Protokolleintrag für den betroffenen Datensatz generiert. Werden im Actionstring nur bestimmte Felder eines Datensatzes aufgeführt, muss sich mindestens eins der angegebenen Felder ändern, damit ein durch „Tabelle_Upd“ definierter Actionstring ausgewertet bzw. protokolliert wird.
Beispiel:
6_UpdCompare: [F4][F57]
Nur wenn sich eine der Artikelbezeichnungen ändert, soll eine Datensatzänderung für Datei 6 protokolliert werden.
| ||||||||||||
|
Tabelle_Ins:
|
Actionstring
| ||||||||||||
|
Tabelle_Programm
_Ins:
|
Actionstring
Diese Schlüssel geben an, was bei einem Insert (Einfügen) eines neuen Datensatzes in der als "Tabelle" angegebenen Datenbankdatei in die Exportdatei geschrieben werden soll. Sollen nur dann Informationen exportiert werden, wenn in einem (oder mehreren) bestimmten Programm etwas in die angegebene Tabelle eingefügt wird, kann zusätzlich zur betroffenen Tabelle das gewünschte Programm angegeben werden. Die Beschreibung der zu exportierenden Daten (Actionstring) s. unten.
| ||||||||||||
|
Tabelle_Del:
|
Actionstring
| ||||||||||||
|
Tabelle_Programm
_Del:
|
Actionstring
Diese Schlüssel geben an, was bei einem Delete (Löschen) eines Datensatzes in der als "Tabelle" angegebenen Datenbankdatei in die Exportdatei geschrieben werden soll. Sollen nur dann Informationen exportiert werden, wenn in einem (oder mehreren) Programm etwas aus der angegebenen Tabelle gelöscht wird, kann zusätzlich zur betroffenen Tabelle das gewünschte Programm angegeben werden. Die Beschreibung der zu exportierenden Daten (Actionstring) siehe unten.
|
Beispiele
|
6_Upd: Actionstring
|
Bei jeder Aktualisierung eines Datensatzes aus Tabelle 6 (Teilestamm) werden die angegebenen Daten exportiert.
|
|
6_PDV111_Upd: Actionstring
|
Nur bei der Aktualisierung eines Datensatzes aus Tabelle 6 in Programm PDV111 (Teilestammverwaltung) werden die angegebenen Daten exportiert.
|
|
6_Ins: Actionstring
|
Bei jedem neuen Datensatz in Tabelle 6 (Teilestamm) werden die angegebenen Daten exportiert.
|
|
6_PDV111_Ins: Actionstring
|
Nur beim Einfügen eines Datensatzes in Tabelle 6 über das Programm PDV111 (Teilestammverwaltung) werden die angegebenen Daten exportiert.
|
|
6_Del: Actionstring
|
Beim Löschen eines Datensatzes aus Tabelle 6 (Teilestamm) werden die angegebenen Daten exportiert.
|
|
6_PDV112_Del: Actionstring
|
Nur beim Löschen eines Datensatzes aus Tabelle 6 über das Programm PDV112 (Teilestammverwaltung) werden die angegebenen Daten exportiert.
|
