ellib Replace-Funktionen (iScript) #
Verschiedene Austausch-Funktionen, die aus einer Textvorlage mit Platzhaltern (sog. Variablen) einen fertigen Text erzeugt. Hierbei kann je nach verwendeter Methode auch auf Felder aus einem Datensatz oder Grundwerte zugegriffen werden.
Es ist auch möglich einfache Bedingungen zu verarbeiten. Zum Beispiel lässt sich prüfen, ob ein Wert gesetzt ist oder eine bestimmte Zeichenfolge enthält.
Allgemeine Textvorlagen #
Zugriff auf alle Grundwerte ohne Bezug auf einen bestimmten Datensatz.
Über ReplaceBasicVars
kann ein Text aus einer Textvorlage generiert werden, der auf sämtliche Grundwerte und globalen Systemvariablen von EULANDA zugreift. Das können Firmenstammdaten, der angemeldete Benutzer oder z.B. der Pfad des Windows-Desktops sein. Die Platzhalter werden hierzu in Prozentzeichen eingeschlossen. Eine Liste mit den möglichen Variablen finden Sie im Anhand des Haupthanbuchs: Platzhalter | Handbuch
ellib.replaceBasicVars(S: string)
dim s
s = ellib.replaceBasicVars("Hallo %system.username%, Sie sind " &_
" in der Firma '%grundwerte.Firmenstamm.Firma%' angemeldet")
msgbox s
[!NOTE] Meldung Hallo Martin, Sie sind in der Firma ‘EULANDA Demo GmbH’ angemeldet
Textvorlagen mit Zugriff auf Datenobjekten #
ellib.ReplaceObjectValues(Vorlage, Objektname, ID, Reserviert)
Der Aufbau der Textvorlagen ist im Anhang zum Haupthandbuch beschrieben Textvorlagen | Handbuch
dim s
const Vorlage = "%Match% - %Land%-%PLZ% %Ort%"
s = ellib.ReplaceObjectValues(Vorlage, "Eulanda.Adresse", 956, "")
msgbox s
[!NOTE] Meldung FIRMA MEIER - D-65510 Idstein
Zeigt den Matchcode sowie den Ort einer beliebigen Adresse (hier ID 956) an.
Austausch eigener Variablen #
ellib.ReplaceVars(Vorlage, Variablen)
Hiermit können eigene Variablen in einem Text eingesetzt werden. Die Variablen mit den zugehörigen Werten müssen dabei als String angegeben werden der die Form hat “Variablenname=Wert;Variablenname2;Wert2;…”.
dim s, Vorlage, Variablen
Variablen = "name=Andrea;Alter=30"
s = ellib.ReplaceVars("Hallo %name%, bist Du %alter% Jahre alt?", Variablen)
msgbox s
Unbekannte Variablen #
Wird ein Wert in der Vorlage benutzt, der nicht in den Variablen auftaucht, so bleibt der Platzhalter erhalten; wird also im Ergebnis wieder mit Prozentzeichen ausgegeben. Dadurch ergibt sich die Möglichkeit, dass man zuerst seine eigenen Variablen in einer Textvorlage austauschen kann und danach eine der oben beschriebenen Funktionen (ReplaceObjectValues) über das Ergebnis anwenden kann.
Variablen komfortabler über das Options-Objekt setzen #
Für einige wenige feste Variablen ist es durchaus praktikabel diese als String selbst zusammenzubauen. Sobald es aber mehrere Variablen werden oder man zwischendurch einzelne Variablen ändern möchte, bietet sich das “Options”-Objekt an. Dieses wird durch Client.NewOptions
erzeugt und danach kann man die einzelnen Variablen über die Punkt-Notation setzen und abfragen, wie bein “normalen” Objekten
option explicit
dim s, Vorlage, Variablen
set Variablen = Client.NewOptions
Variablen.Name = "Heinz"
Variablen.Alter = 65
s = ellib.ReplaceVars("Hallo %name%, Du bist %alter% Jahre alt", Variablen)
msgbox s
Variablen aus Recordset #
Als Variablen kann auch einfach ein Recordset, also das Ergebnis einer SQL-SELECT-Abfrage angegeben werden.
option explicit
dim s, Vorlage, RS
set RS = Client.ExecuteSql("select TOP 10 Match, PLZ, Ort FROM Adresse")
s = ellib.ReplaceVars("Adresse %MATCH% sitzt in %PLZ% %ORT%", RS)
msgbox s
Hierbei wird der jeweils aktuelle Datensatz des Recordsets ausgewertet. Über die MoveNext-Funktion des Recordsets kann auf den nächsten Datensatz gewechselt werden. Um ein komplettes Recordset auf einmal zu erzeugen ist jedoch die nachfolgende Funktion besser geeignet.
ellib.ReplaceVarsRecordset(Vorlage, Recordset, Zeilentrennung) #
Erzeugt die Textausgabe für jede einzelne Zeile des Recordsets. Als dritten Parameter gibt man hierbei ein Trennungs-String an, der zwischen jede Zeile eingefügt wird. Also zum Beispiel ein Zeilenumbruch, wie im folgenden Beispiel. Aber es kann natürlich auch einfach ein Leerstring angegeben werden.
option explicit
dim s, Vorlage, RS
set RS = Client.ExecuteSql("select TOP 10 Match, PLZ, Ort FROM Adresse order by id desc")
s = ellib.ReplaceVarsRecordset("%MATCH% sitzt in %PLZ% %ORT%", RS, vbCrLf)
msgbox s