infra:NET Expert
 
×
03.08.1 Exportbeschreibung (Actionstring)
Welche Daten in welcher Form in die externe Datei geschrieben werden sollen, wird als Actionstring hinterlegt. Der Actionstring ist nichts anderes als eine Zeichenkette mit infra-Makros (siehe Kapitel 15.01 infra-Makros) und einige zusätzlichen (optionalen) Angaben, die zum einen den Export von Sonderzeichen (Vorschub etc.) oder einen direkten Feldzugriff erlauben (ohne umständlich über die Makros DBFIELD oder LBUF arbeiten zu müssen).
Die Verwendung von infra-Makros bietet den unüberschaubaren Vorteil, dass neben den Daten, die nur im vom Export betroffenen Datensatz zur Verfügung stehen (im Beispiel also Daten aus Tabelle 6), auch Daten aus anderen Datensätzen (die sich zu diesem Zeitpunkt ebenfalls im Zugriff befinden) exportiert werden können.
Neben den infra-Makros und festen Texten stehen folgende zusätzliche Operatoren im Actionstring zur Verfügung:
[ASCII-Code]
Die in eckigen Klammern angegebenen Codes werden direkt als ASCII-Zeichen exportiert.
Beispiel:
[13][10]
Es werden die Zeichen CR (Carriage return) und LF (Line feed) geschrieben.
[Record]
Das ist ein Platzhalter für den gesamten Datensatz. Die einfachste Übergabe von Daten könnte damit wie folgt definiert werden.
Beispiel:
6_Ins: "[Record][13][10]"
Es wird bei jedem Insert in Tabelle 6 der gesamte Datensatz aus Tabelle 6 gefolgt von CR/LF geschrieben.
[Ffield]
Ein "F" in eckigen Klammern gefolgt von einer Feldnummer schreibt das angegebene Feld aus der betroffenen infra-Tabelle in die externe Datei.
Beispiel:
6_Upd: "[F3];[F4];[F24][13][10]"
Bei jedem Update auf Tabelle 6 werden die Felder «Teilenummer», «Bezeichnung» und «Gewicht» gefolgt von CR/LF geschrieben.
Dieses Beispiel lässt sich einfach um weitere Daten, wie z.B. das Sachbearbeiterkürzel aus den Globalvariablen ergänzen:
6_Upd: "[F3];[F4];[F24];GV(GV_sbkurz)[13][10]"
[FXfield]
Ein "FX" in eckigen Klammern gefolgt von einer Feldnummer arbeitet analog wie [Ffield], schreibt jedoch bei einem Update das angegebene Feld aus der betroffenen infra-Tabelle mit dem alten Inhalt (vor dem Update) in die externe Datei.
Beispiel:
6_Upd: "[F3];[F4];[FX24];[F24][13][10]"
Bei jedem Update auf Tabelle 6 werden die Felder «Teilenummer», «Bezeichnung», «Gewicht» (alt) und «Gewicht» (neu) gefolgt von CR/LF geschrieben.
Hinweis:
Der Zugriff auf die alten Daten eines Datensatzes (vor dem Update) ist nur über [FXfield] möglich - über die Makros LBUF und DBFIELD sind nur Zugriffe auf den aktualisierten Datensatz möglich. Bei Insert- und Delete-Aktionen liefert [FXfield] keine Daten.
Bereiche für ExportChangesOnly ausblenden
Durch geschweifte Klammern {...} können Bereiche im ActionString für den ExportChangesOnly-Vergleich ausgeblendet werden. Das heißt, die zwischen den Klammern stehenden Daten werden bei einer Datensatzaktualisierung zwar exportiert, aber nicht mit dem Inhalt des alten Datensatzes verglichen.
Das ist dann nötig, wenn nur bestimmte Änderungen einen Export auslösen sollen und andere zu exportierende Daten bei einer Änderung keinen Export auslösen.
Ein weiterer Anwendungsfall ist der Einsatz von Makros im ActionString, die nur bei einem tatsächlich notwendigen Export auszuführen sind (z.B. SQLExec um Daten parallel in eine SLQ-Datenbank zu schreiben).
Ohne die geschweiften Klammern würden diese Makros ansonsten bereits durch den ExportChangesOnly-Vergleich des ActionStrings ausgeführt.