_Upper(<expr-1>) _Lower(<expr-1>)
<expr-1>: Eingabestring
Der Inhalt von <expr-1> wird bei _Upper in Großbuchstaben, bei _Lower in Kleinbuchstaben umgesetzt. Nicht-alphabetische Zeichen bleiben unverändert. Ländereinstellungen werden bei der Umsetzung berücksichtigt. Die Konvertierung findet direkt in dem übergebenen String statt. Der neu erstellte String wird außerdem als Ergebnis geliefert.
_Xlate(<expr-1>, <von>, <in> [,<item-1>]
<expr-1>: Eingabestring <von>: die zu ersetzenden Zeichen oder Zeichenfolgen, getrennt durch das Trennzeichen. <in>: die zu ersetzenden Zeichenfolgen, ebenfalls getrennt durch das Trennzeichen. <item-1>: zu verwendendes Trennzeichen in Hochkommata
_Xlate liefert einen String mit dem Inhalt des Eingabestrings, wobei bestimmte Zeichen oder Zeichenfolgen durch andere Zeichen oder Zeichenfolgen ersetzt wurden.
Die Angabe eines Trennzeichens ist optional; Default ist Komma.
_Xlate durchsucht den String von vorne nach hinten nach den in <von> angegebenen Zeichenfolgen. Wird eine davon gefunden, so wird diese Zeichenfolge durch diejenige ersetzt, die in <in> an derselben Stelle in der Liste steht, d.h. <von-1> wird ersetzt durch <in-1>, <von-2> durch <in-2> usw. Wenn für eine Zeichenfolge in <von> kein Gegenstück in <in> vorhanden ist, werden die Zeichen aus dem String entfernt. Alle Zeichen, auch Leerzeichen vor und nach dem Separator, sind relevant.
Der übergebene String bleibt bei dieser Konvertierung unverändert.
Beispiele:
NeuStr=_Xlate(objData.fldVal, "Ä,Ü,Ö", "AE,UE,OE") NeuStr=_Xlate(myLoc.000-pg-txt, "Ä;Ö;Ü;,;", "AE;OE;UE;.;", ";") NeuStr=_Xlate("Zählen und Prüfen","ä,ü,l,f,h,und", "ae,ue,f,l,,oder") ergibt NeuStr="Zaefen oder Pruelen"
_Substr(<expr-1>, <expr-2>, <expr-3>)
<expr-1>: Eingabestring <expr-2>: Startposition (numerisch) <expr-3>: Länge (numerisch)
_Substr liefert den Teil des Eingabestrings, der bei der Startposition anfängt, maximal in der angegebenen Länge. Eine Startposition größer als das letzte Zeichen ist zulässig; in diesem Fall wird das Ergebnis leer sein. Eine Startposition kleiner oder gleich 0 ist unzulässig, und führt zu einem Laufzeitfehler.
_Trim(<expr-1>)
<expr-1>: Eingabestring.
_Trim liefert einen String mit dem gleichen Inhalt wie die Eingabe, aber ohne führende und nachfolgende Leerzeichen.
_Len(<expr-1>)
<expr-1>: Eingabestring.
_Len liefert die Anzahl der Zeichen in dem von <expr-1> gelieferten String.
_StrCode(<expr-1>)
<expr-1>: Zeichenfolgename.
_StrCode kann benutzt werden, um Sonderzeichen oder spezielle Zeichenfolgen in einen Platzhalter mit aufzunehmen. Folgende Zeichenfolgen sind im Moment implementiert:
Zeichenfolgename | Aktion |
---|---|
newline | Zeilenumbruch |
nbhyphen | geschützter Trennstrich |
ohyphen | Bedingter Trennstrich |
nbspace | Geschütztes Leerzeichen |
tab | Tab |
page | Seitenumbruch |
euro | Euro-Zeichen |
newparagraph | Neuer Absatz |
Beispiel:
NeuStr= "Variable mit einem Zeilen-" & _StrCode("newline") & "Umbruch" LinkStr ="TeamWiSE" & _StrCode("link") & "http://www.teamwise.de"
StrEncode kann genutzt werden, um Sonderzeichen in einem bestehenden String durch das CTV-Format für spezielle Zeichenfolgen zu ersetzen, wie es auch bei StrCode
benutzt wird.
_StrEnCode(<expr-1>)
<expr-1>: Zeichenfolge.
Berücksichtigt werden hier z.Zt.
Sonderzeichen | CTV-Ersetzung (StrCode) | Umschreibung |
---|---|---|
\r | newline | Zeilenumbruch |
\r\n | newline | Zeilenumbruch |
€ | euro | Euro-Zeichen |
\t | tab | Tab |
Char[160] | nbhyphen | geschützter Trennstrich |
Char[173] | ohyphen | Bedingter Trennstrich |
_StrFind(<expr-1>, <expr-2>, [<expr-3>])
<expr-1>: zu suchende Zeichenfolge <expr-2>: Zeichenfolge, in der gesucht werden soll <expr-3>: Position in der Zeichenfolge, ab der gesucht werden soll (optional). Bei keiner Angabe wird ab Position 1 gesucht.
_StrFind1) liefert die Position der zu suchenden Zeichenfolge innerhalb einer anderen Zeichenfolge zurück. Wenn die gesuchte Zeichenfolge nicht gefunden wird, oder bei Eingabe fehlerhafter Werte, liefert diese Funktion den Wert 0 zurück.
Diese Funktionalität wurde der Excel Funktion "FINDEN" nachempfunden.
Beispiele: position1 = _StrFind("st", "testtest") position2 = _StrFind("st", "testtest", 4) ergibt: postion1 = 3 und position2 = 7
_RoundOff(<expr-1>, <expr-2>) _Rounded(<expr-1>, <expr-2>) _RoundUp(<expr-1>, <expr-2>)
<expr-1>: Wert, der gerundet werden soll. <expr-2>: Anzahl der Nachkommastellen
Der zu rundende Wert muss numerisch sein, um Laufzeitfehler zu vermeiden.
_RoundOff und _RoundUp liefern den Wert abgeschnitten auf <expr-2> Nachkommastellen. Der Wert wird dabei ab- bzw. aufgerundet.
_Rounded liefert den Wert je nach Inhalt auf- oder abgerundet auf <expr-2> Nachkommastellen.
_Max(<expr-1> [[, <expr-2>] ... ]) _Min(<expr-1> [[, <expr-2>] ... ]) <expr-1> ... <expr-n>: müssen einen numerischen Wert ergeben.
_Max liefert den größten Wert aller angegebenen Werte.
_Min liefert den kleinsten Wert aller angegebenen Werte.
_Now()
_Now liefert die aktuelle Tageszeit und das Datum im Timestamp-Format.
_DateShift(<item-1>, <expr-1>, <expr-2>, <expr-3>)
<item-1>: muss Datum im TimeStamp-Format enthalten <expr-1>: enthält Anzahl Jahre; muss einen numerischen Wert ergeben. <expr-2>: enthält Anzahl Monate; muss einen numerischen Wert ergeben. <expr-3>: enthält Anzahl Tage; muss einen numerischen Wert ergeben.
_DateShift liefert ein Datum, das um die angegebene Anzahl Jahre, Monate und Tage korrigiert wurde. Beispiele:
if PoVert.DatumBis > _DateShift(PoVert.DatumVon,0,18,0) .... bedeutet: wenn die Zeitstrecke mehr als anderthalb Jahre beträgt.
if _DateShift(PoVert.DatumBis,0,2,0) >= 2000-01-01 .... bedeutet: wenn das Endedatum weniger als 2 Monate vor dem 1.Januar 2000 ist.
PoVert.DatumVon = _DateShift(PoVert.DatumAkt,-1,0,0) bedeutet: datiere das Abschlussdatum um ein Jahr zurück.
_YearSpan(<item-1>, <item-2>)
<item-1>: muss Datum im Format JJJJ-MM-TT enthalten <item-2>: muss Datum im Format JJJJ-MM-TT enthalten
_YearSpan liefert die Anzahl Jahre, die zwischen den beiden Daten liegen. Es werden auch Nachkommastellen geliefert. Beispiel:
if _YearSpan("1999-02-20", "2009-03-20") > 10 .... bedeutet: wenn die Zeitstrecke mehr als zehn Jahre beträgt.
<obj-1>._objCount <obj-2>._objIsEmpty <obj-3>._objIsBOL <obj-4>._objIsEOL <obj-5>._objPosition <obj-5>._objIsCurrent
<obj-1> und <obj-2>: Name eines Objekts <obj-3>, <obj-4> <obj-5>: Name eines Mengenobjektes
_objCount liefert die Anzahl Einträge in einem Mengenobjekt. Für ein Einzelobjekt liefert diese Eigenschaft 1, wenn es existiert (nach einem New), sonst 0.
_objIsEmpty liefert Wahr, falls das Objekt keine Einträge enthalt, sonst Unwahr. Für ein Einzelobjekt liefert diese Eigenschaft Unwahr, wenn es existiert (nach einem NEW), sonst Wahr.
_objIsBOL liefert Wahr, falls der aktuelle Eintrag der erste Eintrag in einem Mengenobjekt ist, sonst Unwahr.
_objIsEOL liefert Wahr, falls der aktuelle Eintrag der letzte Eintrag in einem Mengenobjekt ist, sonst Unwahr.
_objPosition liefert den Index des aktuellen Eintrages falls es einen aktuellen Eintrag gibt, sonst 0.
_objIsCurrent liefert Wahr, wenn in dem Objekt auf einen gültigen Eintrag positioniert ist.
Beispiele:
if myobj._objCount > 0 then aktindex = myobj._objPosition end if
if not myobj._objisempty then get first myobj do schleife while not myobj._objIsEOL ........ get next myobj end schleife end if
if myobj._objIsCurrent then copy myobj to myobj2 end if
<obj>._ObjFldMax(<objfld>) <obj>._ObjFldMin(<objfld>) <obj>._ObjFldSum(<objfld>) <objfld>._Max <objfld>._Min <objfld>._Sum <objfld>._IsEmpty <objfld>._FindMatch(<expr-1> [[, <expr-2>] ... ])
<objfld>: Feld aus einem Objekt (<obj>.<feldname>) <expr-1> ... <expr-n>: Suchwerte
_ObjFldMax liefert den größten Wert, den <objfld> besitzt. Wenn das Objekt kein Mengenobjekt ist, ist das Ergebnis identisch mit <objfld>.
_ObjFldMin liefert den kleinsten Wert, den <objfld> besitzt. Wenn obj kein Mengenobjekt ist, ist das Ergebnis identisch mit <objfld>.
_ObjFldSum liefert den Gesamtwert aller <objfld>. Wenn das Objekt kein Mengenobjekt ist, ist das Ergebnis identisch mit <objfld>. Wenn <objfld> kein numerisches Feld ist, ist das Ergebnis 0 (null).
_Max, _Min und _Sum arbeiten wie _ObjFldMax, _ObjFldMin und _ObjFldSum (kürzere Schreibweise).
_IsEmpty liefert Wahr, falls <objfld> den Defaultwert enthält, sonst Unwahr.
Defaultwerte:
Feldtyp | Defaultwert |
---|---|
TimeStamp | 1000-01-01-00.00.00.000000 |
Time | 00.00.00.000000 |
Date | 1000-01-01 |
DateTime | 1000-01-01-00.00.00.000000 |
Numeric | 0 |
String | <Leerstring> |
_FindMatch sucht in <objfld> nach den angegebenen Werten.
Es wird ein numerischer Wert zurückgeliefert der folgende Bedeutung hat:
0: Keiner der angegebenen Werte wurde in <objfld> gefunden. n: Einer der angegebenen Werte wurde im n'ten Objektsatz gefunden (Es wird immer der erste Treffer geliefert).
<obj>._CompleteRef
Anwendbar auf ein TAA-Objekt vom Typ REF. Liest die mit diesem Objekttyp verknüpfte Schlüsseltabelle.
Wenn das Objekt leer ist, wird die Tabelle vollständig gelesen und in dem Objekt bereitgestellt.
Wenn das Objekt Sätze enthält, wird für jeden Satz aus der Schlüsseltabelle der zu dem Primärschlüssel gehörige Schlüsseltabellensetz gelesen und in dem Objekt bereitgestellt.
Achtung: Wenn _Completeref ausgeführt wird auf ein bereits mit der vollständigen Tabelle gefülltes Objekt, wird für jeden Satz im Objekt der passende Satz in der Schlüsseltabelle gesucht und durch diesen ersetzt. Dies kann zu unerwarteten Verzögerungen führen. Im Zweifelsfall fragen Sie vorher ab, ob das Objekt leer ist.
<intrinsicObject>._Contains(<item-1>)
<intrinsicObject>: Name des intrinsic Object der gewünschten Hierarchiestufe <item-1>: Name eines CTV-Moduls
Wenn ein CTV-Modul dieses Namens in der aktuell bekannten Schriftgutstruktur der referenzierten Schriftgutinstanz enthalten ist, liefert die Funktion _Contains Wahr, sonst Unwahr. Die Funktion liefert auch Unwahr, wenn das benutzte intrinsic Object nicht existiert, bspw. weil keine übergeordnete Instanz des angegebenen Typs vorhanden ist.
Beispiel:
ctvsstk._contains("LE-BS-ANTRAG-ABLEHNUNG") parent._contains(antragsmodul)
_GetType liefert den Typ des Schriftguts, welches <level> Ebenen über dem aktuellen Schriftgut liegt. Wenn _GetType ohne Argument aufgerufen wird, wird der Typ des aktuellen Schriftgutst zurückgegeben. Falls es nicht soviel Ebenen oberhalb des aktuellen Schriftguts gibt, wird ein Leerstring zurückgegeben.
<code>if me._GetType(2) = "SSTZ" then ... </code>
Die Eigenschaft PreferredDocumentType kann genutzt werden um zur Laufzeit den Ausgabe-Typ von ein Dokument zu Ändern. Momentan werden von TAA nur „RTF“ und „DOCX“ unterstützt bei der Montage von Dokumente.
<code>ctvcdok.PreferredDocumentType = "DOCX"</code>
_varIsReadonly gibt an, ob die angegebene Eigenschaft oder CTV-Variable in dem Modul änderbar ist.
res = _varIsReadonly(me.ACH-KZ) res = _varisreadonly(me.Name) res = _varisreadonly(ctvGevo.ID)
Wenn ein Schriftgut bei der CTV-Laufzeit registriert wird, kann man für dieses Schriftgut zu einem späteren Zeitpunkt die Seitenzahl anhand des angegebenen Namens abzufragen.
<code>Me.Register("Schriftstück1") </code>
Mitunter möchte man in einem Dokument die Anzahl Seiten eines anderen Dokuments angeben. Hierfür gibt es folgende Möglichkeit:
Zuerst wird das Dokument, dessen Seitenzahl man benötigt, registriert:
Me.Register("Vertrag-1")
Anschließend kann in dem Dokument, welches die Seitenzahl enthalten soll, diese im Text aufgenommen werden. Dafür muss an der Stelle, wo die Seitenzahl im Text erscheinen soll, wie üblich ein Platzhalter im Text vorhanden sein. Dieser Platzhalter kann in PseudoCode mit dem Befehl ctvEngine.ResolveTotalPages bestückt werden:
SeitenPlatzhalter = ctvEngine.ResolveTotalPages("Vertrag-1")
Wenn man die Seitenzahlen mehrerer Dokumente addieren möchte, kann man diese Dokumente mit einem Semikolon als Trennzeichen übergeben:
SeitenPlatzhalter = ctvEngine.ResolveTotalPages("Vertrag-1;Vertrag-2;Vertrag-3")
Neben ResolveTotalPages gibt es auch ResolveTotalPagesWord und ResolveTotalPagesPdf. Bei ResolveTotalPages wird, falls Word zur Verfügung steht, Word benutzt, um die Anzahl Seiten zu ermitteln. Andernfalls wird bei ResolveTotalPages eine PDF-Datei erstellt und von dieser Datei die Anzahl Seiten ermittelt. Mit ResolveTotalPagesWord und ResolveTotalPagesPdf werden ausschließlich die entsprechenden Methoden für Word resp. Pdf genutzt.
Durch Unterschiede zwischen der Darstellung des Texts in Word und in Pdf können sich bei den beiden Ermittlungsmethoden unterschiedliche Seitenzahlen ergeben.
Da die Ermittlung der Seitenzahl erst erfolgen kann, wenn das Dokument komplett aufgebaut wurde, erfolgt dies erst bei der Seitenansicht, beim PDF-Erstellen oder beim Druck des Dokuments. Bis zu diesen Zeitpunkt wird im Dokument die Seitenzahl durch ## dargestellt.
_Message(<string>) _Infolevel()
_Message gibt den angegebenen String als Meldung im TAA-Monitor aus. Der String kann aus mehreren Teilen zusammengesetzt sein, die mit dem Konkatenierungs-Operator verbunden sein müssen. Wenn die Meldung erfolgreich zusammengesetzt werden konnte, steht der sich ergebende String in dem Rückkehrwert der Funktion zur Verfügung.
Über den InfoLevel wird eingestellt, wie viele Meldungen ausgegeben werden sollen (je höher der Infolevel, desto mehr Meldungen; bei niedrigerem Infolevel werden nur die wichtigsten Meldungen ausgegeben). _Infolevel liefert den aktuell eingestellten Wert, sodass die Ausgabe von Meldungen davon abhängig gemacht werden kann:
if _InfoLevel() > 2 then res = _Message("Wert in Fld1 ist " & obj1.field1 & " und Fld2 beinhaltet " & obj1.field2) endif