Makromodell - Die Methode "Script.Fields" auf Skripten unterscheidet sich von anderen ".Fields" Eigenschaften.

Peter Brandt [Grutzeck Software GmbH]
18.06.2012 08:44

Beschreibung:
In den meisten Fällen wird anstelle eines Gesprächleitfadens (Skripte) mit Ansichten gearbeitet (Forms).
Diese scheinen sich Optisch und auch von den Objekten her nicht wirklich zu unterscheiden.
Jedoch gibt es gerade bei der Verwendung des Aufrufs "Fields" im Makromodell einen großen Unterschied.

Unterschied:
"Fields" liefert bei einem Skript nur den Wert aus temporären Variablen oder Datenfeldern zurück, während die Eigenschaft "Fields" bei anderen Verwendungen wie z.B. ActiveAddress.Fields, Ticket.Fields etc. ein Objekt zurückliefert.

Beispiel:
Auf dem Skript ist ein Feld angelegt welches unter dessen Eigenschaften bei Name die Bezeichnung "Test" hat.
Variablen Definition:
Script.Fields("Test") = ActiveAddress.Fields("ShortName").value
Das Feld wird mit dem Kurznamen befüllt

Objekt Eigenschaft .Value Definition:
Script.Fields("Test").Value = ActiveAddress.Fields("ShortName").value
Das Makro bricht mit folgender Fehlermeldung ab:
...
Objekt erforderlich: 'Script.Fields(...)'
Das Makro wird abgebrochen!
...

Sofern man mit Objekten bei einem Skript-Feld arbeiten möchte, muss anstelle der Eigenschaft ".Fields", die Eigenschaft ".Controls" verwendet werden:
Script.Controls("Test").value = ActiveAddress.Fields("ShortName").value

Erläuterung:
Script.Fields erlaubt den Zugriff auf temporäre Variablen und Datenfelder,
die keine Bindung an den aktuellen Datensatz haben. Dadurch können Abfragen
durchgeführt werden, die den Skriptablauf steuern, jedoch nicht datenrelevant
sind und somit auch nicht im Datensatz gespeichert werden sollen.

Im Gegensatz zu anderen Fields Eigenschaften wird hier sofort der Wert zurückgegeben bzw. gesetzt.


Hinweis:
Es gibt jedoch auch Steuerelemente, welche überhaupt nicht per Makro bearbeitet werden können.
Zum Beispiel das RTF-Controll kann lediglich per Makro bezüglich seiner Eigenschaften über Script.Controls angesprochen werden.
So könnte man zum Beispiel die Eigenschaft ".visible" (sichtbar) auf "false" (nicht sichtbar) setzen:
Script.Controls("Test").Visible = false

Durchschnittliche Bewertung: 0 (0 Abstimmungen)

Kommentieren nicht möglich