Formeln setzen sich aus Funktionen, Verweisen auf andere Felder oder Gruppen, statische Werte (wie z. B. Zahlen) und mathematische Operatoren zusammen. Mit Formeln können Sie mathematische Werte berechnen, Daten und Uhrzeiten anzeigen, auf Felder in Formularen verweisen oder Zeichenoperationen, wie z. B. die Kombination mehrerer Felder zu einem Feld, durchführen. Ein Formel gibt immer ein einzelnes Ergebnis zurück.
Formeln werden in Feldern (Feld: Ein Element oder Attribut in der Datenquelle, das Daten enthalten kann. Wenn das Feld ein Element ist, kann es Attributfelder enthalten. In Feldern werden die Daten gespeichert, die in Steuerelemente eingegeben werden.) gespeichert und in den Steuerelementen angezeigt, die an diese Felder gebunden (Binden: Verbinden eines Steuerelements mit einem Feld oder einer Gruppe in der Datenquelle, sodass in das Steuerelement eingegebene Daten gespeichert werden. Wenn die Bindung eines Steuerelements aufgehoben wird, ist das Steuerelement nicht mit einem Feld oder einer Gruppe verbunden, und in das Steuerelement eingegebene Daten werden somit nicht gespeichert.) sind. Sie können eine Formel mithilfe der Eigenschaften eines Steuerelements (bei Textfeldern, Rich-Text-Feldern und der Datumsauswahl) oder der Eigenschaften eines Feldes erstellen.
Funktionen, wie z. B. sum und avg, sind wesentliche Bestandteile von Formeln und können immer eingesetzt werden, wenn Sie eine Formel einfügen können. Die meisten Formeln benötigen Argumente (Argument: Ein Wert, der Informationen zu einer Aktion, einem Ereignis, einer Methode, einer Eigenschaft, einer Funktion oder einer Prozedur bereitstellt.) für ihre Operationen, wobei einige Funktionen mehr als ein Argument erfordern. Alle Funktionen geben einen Wert zurück. So ist beispielsweise in einer Funktion, die die Werte in einer Spalte addiert, das Argument das wiederholte Feld, an das die Steuerelemente in der Spalte gebunden sind. Die Funktion addiert die Werte und gibt die Werte all dieser Felder zurück. Abhängig von der Funktion kann es sich bei einem Argument um einen statischen Wert oder ein Feld bzw. einen statischen Wert oder Feld handeln, der bzw. das zur Laufzeit basierend auf einem anderen Wert dynamisch ausgewählt wird.
Es folgt ein Beispiel für eine Formel, die den Mittelwert der Werte in einem wiederholten Feld und anschließend die Summe der Werte in einem anderen wiederholten Feld berechnet und dann die Summe und den Mittelwert addiert:
avg(Feld3) + sum(Feld4)
Dieses Beispiel enthält zwei Funktionen, avg und sum, die jeweils ein Argument benötigen (Feld3 bzw. Feld4). Die Formel gibt die Ergebnisse der addierten Funktionen zurück.
Bei der Bearbeitung von Formeln sollten Sie Folgendes beachten:
- Bei der Anzeige einer Formel in einem Textfeld, einem Rich-Text-Feld oder in der Datumsauswahl sollten Sie den Schreibschutz für Steuerelemente einrichten, damit Benutzer das Ergebnis der Formel nicht überschreiben können.
- Legen Sie in den Eigenschaften des Steuerelements oder Feldes fest, ob die Ergebnisse einer Formel aktualisiert werden sollen, wenn sich die Werte in der Formel ändern, oder weiterhin das ursprüngliche Ergebnis der Formel angezeigt werden soll.
- Werden Argumente in Funktionen verwendet, werden alle Werte in einem wiederholten Feld überprüft. Beim Addieren z. B. einer Spalte in einer wiederholten Tabelle, wird das Feld addiert, an das die Spalte gebunden ist: sum(Feld1).
- Funktionen können in andere Funktionen geschachtelt werden, wobei das Ergebnis einer Funktion das Argument für eine andere Funktion bereitstellt.
- Da mathematische Funktionen in der Regel von Ganzzahlen oder Dezimalwerten als Argumente abhängen, sollten Sie sicherstellen, dass das Kontrollkästchen Leere Werte als Null behandeln auf der Registerkarte Allgemein im Dialogfeld Formularoptionen aktiviert ist.
- Formeln in Microsoft Office InfoPath 2003 beruhen auf XPath-Ausdrücken. Wenn Sie mit XPath vertraut sind, können Sie die XPath-Ausdrücke direkt bearbeiten.
- Formeln verweisen auf Felder und Gruppen im Formular, aus dem Kontext heraus, in dem sich die Felder und Gruppen befinden. Ein Feld, das auf sich selbst verweist, verwendet einen Punkt (.) anstelle des eigenen Namens. Eine Formel, die z. B. die Funktion Name für die Rückgabe des eigenen Feldnamens verwendet, sieht wie folgt aus: name(.)
In den folgenden Tabellen werden die in InfoPath verfügbaren Funktionen aufgeführt.
Datums- und Uhrzeitfunktionen
| Funktion | Beschreibung | Beispiel |
|---|
|
| now | Gibt das aktuelle Datum und die Uhrzeit zurück. Es ist kein Argument erforderlich. | now() |
| today | Gibt das aktuelle Datum zurück. Es ist kein Argument erforderlich. | today() |
Feldfunktionen
| Funktion | Beschreibung | Beispiel |
|---|
|
|
name | Gibt den Namen des angegebenen Feldes oder der Gruppe sowie des Namespacepräfix zurück. Wenn das Argument eine Reihe von Feldern oder Gruppen ist, wird der Name und das Präfix des ersten Feldes oder der ersten Gruppe zurückgegeben. | name(Feld1) |
|
position | Gibt den Index (oder die Position) des Feldes oder der Gruppe hinsichtlich anderer Felder und Gruppen innerhalb derselben Gruppe zurück. | position() |
| count | Zählt die Anzahl der Instanzen des angegebenen Feldes oder der Gruppe. | count (Feld1) |
| id | Gibt die der angegebenen ID zugeordneten Felder oder Gruppen zurück.
Diese Funktion steht im Dialogfeld Funktion einfügen nicht zur Verfügung, sondern muss in das Feld Formel im Dialogfeld Formel einfügen eingegeben werden.
| id(Feld1) |
| last | Gibt den Wert des letzten Vorkommens des Feldes im aktuellen Kontext zurück. | Feld1[last()] |
| local-name | Gibt den Namen des angegebenen Feldes oder der Gruppe zurück. Wenn das Argument eine Reihe von Feldern oder Gruppen ist, wird der Name des ersten Feldes oder der ersten Gruppe zurückgegeben. | local-name(Feld1) |
| namespace-uri | Gibt den vollständigen Namespace des angegebenen Feldes oder der Gruppe zurück. Wenn das Argument eine Reihe von Feldern oder Gruppen ist, wird der Namespace des ersten Feldes oder der ersten Gruppe zurückgegeben. | namespace-uri(Feld1) |
Mathematische Funktionen
| Funktion | Beschreibung | Beispiel |
|---|
|
|
avg | Berechnet den durchschnittlichen Wert aller numerischen Werte im Argument.
| avg(Feld1) |
|
Boolean | Gibt den Wert "True" zurück, wenn das Argument nicht Null, eine positive oder negative Zahl oder eine nicht leere Zeichenfolge ist. Andernfalls wird "False" zurückgegeben. Gibt den Wert "False" zurück, wenn das Argument Null, ein NaN-Wert oder eine leere Zeichenfolge ist. | boolean(Feld1) |
|
ceiling | Gibt die kleinste Ganzzahl zurück, die nicht kleiner als das Argument ist (Aufrundung).
| ceiling(Feld1) |
|
eval | Gibt die Werte einer Reihe von Feldern zurück. Das erste Argument definiert die Reihe von Feldern und das zweite Argument definiert den für die Reihe von Feldern zu berechnenden Ausdruck. In der Regel ist die eval-Funktion in einer Funktion geschachtelt, die sich auf eine Reihe von Feldern auswirkt, wie z. B. sum oder avg. | sum(eval(group2, "Feld1 * Feld2")) |
|
false | Gibt den Wert "False" zurück.
| false() |
|
floor | Gibt die größte Ganzzahl zurück, die nicht größer als das Argument ist (Abrundung). | floor(Feld1) |
|
min | Gibt die kleinste Zahl im Argument zurück. | min(Feld1) |
|
not | Wenn das Argument den Wert "False" aufweist oder Null ist, wird "True" zurückgegeben. Wenn das Argument den Wert "True" aufweist oder nicht Null ist, wird "False" zurückgegeben. | not(Feld1) |
|
number | Konvertiert das Argument in eine Zahl.
| number(Feld1) |
|
nz | Gibt den Wert des angegebenen Feldes zurück. Wenn das Feld leer ist, wird Null (0) zurückgegeben. | nz(Feld1) |
|
round | Rundet das Argument zur nächsten Ganzzahl.
| round(Feld1) |
|
sum | Berechnet die Summe der Argumente. | sum(Feld1) |
|
true | Gibt den Wert "True" zurück.
| true() |
| max | Gibt die größte Zahl im Argument zurück. | max(Feld1) |
Textfunktionen
| Funktion | Beschreibung | Beispiel |
|---|
|
|
contains | Wenn das erste Argument das zweite Argument enthält, wird "True" zurückgegeben. Andernfalls wird "False" zurückgegeben.
| contains(Feld1, "Stadt") |
| concat | Kombiniert den Wert von Feldern mit anderen Feldern oder Textzeichenfolgen. | concat(Feld1," of ",Feld2) |
| normalize-space | Entfernt die Leerzeichen aus dem Argument.
| normalize-space(Feld1) |
| starts-with | Wenn das erste Argument mit dem zweiten Argument beginnt, wird "True" zurückgegeben. Andernfalls wird "False" zurückgegeben.
| starts-with(Feld1, "B") |
| string | Konvertiert das Argument in eine Textzeichenfolge.
| string(Feld1) |
| string-length | Gibt die Anzahl der Zeichen im Argument zurück.
| string-length(Feld1) |
| substring | Gibt einen bestimmten Teil einer Textzeichenfolge zurück. Das erste Argument definiert die Textzeichenfolge, das zweite Argument definiert die Startposition und das dritte Argument definiert die Anzahl der einzuschließenden Zeichen. | substring(Feld1, 3,5) |
| substring-after | Gibt einen bestimmten Teil einer Textzeichenfolge zurück. Das erste Argument definiert die Textzeichenfolge, und das zweite Argument definiert das gesuchte Objekt in der Textzeichenfolge. Die Funktion gibt den Text zurück, der auf das erste Vorkommen des zweiten Arguments folgt. | substring(Feld1, "Land") |
| substring-before | Gibt einen bestimmten Teil einer Textzeichenfolge zurück. Das erste Argument definiert die Textzeichenfolge, und das zweite Argument definiert das gesuchte Objekt in der Textzeichenfolge. Die Funktion gibt den Text zurück, der dem ersten Vorkommen des zweiten Arguments vorangeht. | substring-before(Feld1, "Ende") |
| translate | Gibt eine konvertierte Textzeichenfolge zurück. Das erste Argument definiert die Textzeichenfolge, das zweite Argument definiert die in der Textzeichenfolge zu ändernden Zeichen, und das dritte Argument definiert, wozu die Zeichen geändert werden sollen. Die Zeichen im zweiten Argument werden in die Zeichen an der entsprechenden Stelle im dritten Argument konvertiert. | translate(Feld1, "()","[]") |
Hinweis Die Informationen in diesem Kapitel treffen möglicherweise nicht zu, wenn Sie mit einem Formular arbeiten, das mithilfe von Microsoft InfoPath 2003 ohne installiertes Service Pack entworfen wurde.