Datenstrukturen
Datenstrukturen definieren nicht Datenbank-gebundene Datenstrukturen, z.B. für Selektions-Elemente und für Daten-Edit-Elemente und Multi-Daten-Edit-Elemente, wobei die Datenstrukturen dann als Datencontainer fungieren und die CRUD-Methoden via Geschäftsprozess behandelt werden. Datenstrukturen können den folgenden Metadatenobjekten zugeordnet werden:
- Selektionselemente
- Daten-Edit-Elemente
- Multi-Daten-Edit-Elemente
Eigenschaften Datenstrukturen
Bereich | Eigenschaft | Wert |
---|---|---|
Allgemeines | Name (Name) | Name der Datenstruktur |
Titel (Title) | Titel der Datenstruktur | |
Nur vorhandene Datensätze editieren? (EditOnlyExistingData) | Sollen nur vorhandene Datensätze editiert werden? In diesem Fall können keine neuen Datensätze angelegt werden und die entsprechenden Funktionen im UI werden nicht zur Verfügung gestellt. | |
Verweis auf benutzerdefinierte Felder (UserDefinedFieldsSource) | Verweis auf benutzerdefinierte Felder (Definition in Tabelle „USysSetup, Einträge "Tree"="UserFields"; z.B. "Adresse" oder "Artikel"“), die dem Anwender beim Editieren zur Verfügung stehen sollen. | |
Anhängen an Datenstruktur der Partner-Kennung (AppendToPartnerId, AppendToPackageId) | Partner- und Lösungs-Kennung (bei Sage „Sage“) der gleichnamigen Datenstruktur, an den diese Definition angehängt werden soll; Einsatzzwecke:
Hinweis: Anhängen ist immer einstufig, Verkettungen sind nicht möglich | |
Kommentar (Comment) | Beliebiger Kommentar zur Dokumentation. Der Kommentar wird nicht zum Client übertragen und dient nur zur Dokumentation von Besonderheiten, Hinweisen, etc. Bei Auslieferung/Weitergabe der Lösung wird der Kommentar eingeschlossen, so dass der Empfänger ihn im AppDesigner sieht. | |
Daten Ab Version (9.0.4) | Primärschlüsselfeld 1 bis 9 (PrimaryKeyField 1 bis 9) | Feldname des ersten bis neunten Primärschlüsselfeldes Falls hier NICHT definiert, müssen die Primärschlüsselfelder in der "PrepareMetaData"-Methode des Datenservice gesetzt werden |
Ab Version (9.0.4) Primärschlüsseltyp 1 bis 9 (PrimaryKeyType 1 bis 9 | Primärschlüsselfeld 1 ist
Hinweise für die verschiedenen Einsatzfälle:
| |
Beziehungen | Detail-Datensätze (DetailDataStructureReferences) | Liste von Verweisen auf abhängige Datenstrukturen (1:N-Beziehung) (logischer Feldname (zur Referenzierung aus dem Daten-Edit-Element), Partner-Kennung, Lösungs-Kennung, Schlüssel) Ist maximal vierstufig erlaubt. |
Daten-Service | Daten-Service-Dll-Name (DataServiceAssemblyName) | Bei Datenstrukturen, die in Edit- oder Multi-Data-Edit-Formularen genutzt werden, muss ein Dienst hinterlegt werden, der die AppServer-seitig benötigten Methoden enthält. Hier wird der Name der aufzurufenden DLL (ohne Verzeichnisname, aber mit Dateinamenerweiterung „.dll“) angegeben Die DLL wird immer im OL-Shared-Verzeichnis gesucht. |
Daten-Service-Klassenname (DataServiceClassName) | Name der aufzurufenden Klasse, die von DataServiceBase ableiten muss. | |
Geschäftslogik-Dll-Name (BusinessAssemblyName) | Name der DLL, aus der im AppDesigner die Datenstruktur erzeugt wurde (schreibgeschützt) | |
Geschäftslogik-Klassenname (BusinessClassName) | Vollqualifizierter Name der Klasse, aus der im AppDesigner die Datenstruktur erzeugt wurde (schreibgeschützt) | |
Ereignisse (Makros) | Beim Laden (OnLoad) | Makros, die nach dem Laden der Metadaten aufgerufen werden. Das Ereignis wird nur auf Server-Seite ausgelöst. |
Vor Änderung (BeforeUpdate) | Makros, die vor dem Einfügen oder vor Änderungen einer Datenstruktur aufgerufen werden (Rückgabe eines Cancel-Flags und einer Cancel-Meldung) Die Ereignisse werden auf Client- und Server-Seite ausgelöst (sinnvollerweise im Makro die Funktion „IsRunningOnServer“ verwenden, um nur auf dem Server auszuführen und Roundtrips zu vermeiden) Bei Unter-Datenstrukturen (in Multi-Data-Edit-Elementen) gilt Folgendes:
Hinweis: Auf die Schlüsselfelder kann mit dem Ausdruck "GetKeyFieldValue()" zugegriffen werden. | |
Vor Löschung (BeforeDelete) | Makros, die vor der Löschung einer Datenstruktur aufgerufen werden Hinweis: Auf die Schlüsselfelder kann mit dem Ausdruck "GetKeyFieldValue()" zugegriffen werden.
Beim Löschen von Teil-Datenstrukturen (nur in Multi-Data-Edit-Elementen):
Die Ereignisse werden auf Client- und Server-Seite ausgelöst (sinnvollerweise im Makro die Funktion „IsRunningOnServer“ verwenden, um nur auf dem Server auszuführen und Roundtrips zu vermeiden) Bei Unter-Datenstrukturen (in Multi-Data-Edit-Elementen) gilt Folgendes:
| |
Nach Einfügung (AfterInsert) | Makros, die nach dem Einfügen einer neuen Datenstruktur aufgerufen werden (Server-seitige Ausführung innerhalb der Transaktion) Die Ereignisse werden auf Client- und Server-Seite ausgelöst (sinnvollerweise im Makro die Funktion „IsRunningOnServer“ verwenden, um nur auf dem Server auszuführen und Roundtrips zu vermeiden) Bei Unter-Datenstrukturen (in Multi-Data-Edit-Elementen) gilt Folgendes:
| |
Nach Änderung (AfterUpdate) | Makros, die nach dem Ändern einer Datenstruktur aufgerufen werden (Server-seitige Ausführung innerhalb der Transaktion) Die Ereignisse werden auf Client- und Server-Seite ausgelöst (sinnvollerweise im Makro die Funktion „IsRunningOnServer“ verwenden, um nur auf dem Server auszuführen und Roundtrips zu vermeiden) Bei Unter-Datenstrukturen (in Multi-Data-Edit-Elementen) gilt Folgendes:
| |
Nach Löschung (AfterDelete) | Makros, die nach dem Löschen einer Datenstruktur aufgerufen werden (Server-seitige Ausführung innerhalb der Transaktion) Beim Löschen von Teil-Datenstrukturen (nur in Multi-Data-Edit-Elementen):
Die Ereignisse werden auf Client- und Server-Seite ausgelöst (sinnvollerweise im Makro die Funktion „IsRunningOnServer“ verwenden, um nur auf dem Server auszuführen und Roundtrips zu vermeiden) Bei Unter-Datenstrukturen (in Multi-Data-Edit-Elementen) gilt Folgendes:
Hinweis: Auf die Schlüsselfelder kann mit dem Ausdruck "GetKeyFieldValue()" zugegriffen werden. | |
Vor Änderung durch API (BeforeUpdateByApi) (ab Version 9.0.4) | Makros, die vor Änderung und Neuanlage eines Datensatzes nach dem Setzen der Standard-Werte und vor der Feldvalidierung aufgerufen werden. Der Zweck des Ereignisses ist es, Werte von Feldern zu setzen, die als Pflichtfelder definiert sind oder Daten-abhängig befüllt werden müssen, im zugehörigen API-Endpunkt jedoch nicht zur Verfügung gestellt werden.
Beispiel: Der API-Endpunkt für Kunden enthält zwar die Felder "Name" und "LieferOrt", zur Speicherung wird allerdings auch das Pflichtfeld "Matchcode" benötigt. Dieses kann im Makro gebildet werden. Das Ereignis wird nicht auf Client- sondern nur Server-Seite ausgelöst, wenn das Speichern durch einen API-Aufruf initiiert wurde. | |
Lizenzierung | Lizenz-Kürzel (LicenseTokens) | Applikationskürzel der zu prüfenden Lizenz (nur in Nicht-Sage-Lösungen verwendbar und änderbar) |
Lizenz-Kürzel für Sage (SageLicenseTokens) | Applikationskürzel der zu prüfenden Lizenz (nur in Sage-Lösungen verwendbar und änderbar) |
Eigenschaften der Datenstrukturfelder
Bereich | Eigenschaft | Wert | |
---|---|---|---|
Allgemeines | Feldname (Name) | Eindeutiger Feldname (für Anwender nicht sichtbar) | |
Feldtitel (Title) | Titel des Feldes (für Anwender sichtbar) | ||
Feld-Attribute anhängen? (DoAppendTo) | Sollen Eigenschaften an das gleichnamige Feld der in "Anhängen an..." referenzierten Datenstruktur angehängt werden? Einsatzzweck:
| ||
Datentyp | Datentyp (DataType) | Datentyp:
Datentypen 101, 110 und 120 erfordern, dass ein Feld des Datentyps 100 vorhanden ist, das die gleiche Klasse referenziert oder ein Datenreferenzfeld vorhanden ist, für das "LoadBehaviour" ungleich "Immer laden" (d.h. Wert <>0) eingestellt ist und die gleiche Klasse referenziert. Datentypen 111 erfordert, dass ein Feld des Datentyps 110 vorhanden ist, das die gleiche Klasse referenziert. Datentypen 121 erfordert, dass ein Feld des Datentyps 120 vorhanden ist, das die gleiche Klasse referenziert. Die Datentypen 200, 201 und 202 müssen immer zusammen vorkommen, wobei die Felder mit den Datentypen 201 und 202 in der Eigenschaft "Datenklassen-Schlüsselfeld“ auf das Feld mit dem Datentyp 200 verweisen müssen. In der UI-Definition (Daten-Edit-Element) müssen alle drei Felder referenziert werden, wobei die Platzierung anhand des Land-Feldes erfolgt. | |
Datentyp-Ergänzung (DataTypeIndexedInfos) | Liste mit Key sowie mit "PackageId", "PartnerId", "Name" und "Id" zur Referenzierung eines Strings aus "StringResources.xml"; bei Datentyp 16 (indexed Image) zusätzlich:
Anzeigereihenfolge gemäß der Liste Tipp:
| ||
Datenreferenz (DataReferencePartnerId, DataReferencePackageId, DataReferenceName) | Partner-Kennung, Lösungs-Kennung und Name für die Datenreferenz, die als Grundlage für ein Auswahllisten-Eingabefeld dient. Wenn die Eigenschaften "Datenreferenz-Filter", "Datenreferenz-Service-Dll-Name" und "Datenreferenz-Service-Klassenname" nicht verwendet werden, handelt es sich um eine sogenannte "statische" Datenreferenz. In diesem Fall werden die Daten beim Öffnen des jeweiligen Elementes einmalig eingelesen. Zum manuellen Aktualisieren steht der Makro-Befehl "DatenReferenzAktualisieren" zur Verfügung. Anderenfalls wird sie zur "dynamischen" Datenreferenz. Der Client liest dann jeweils beim Aufklappen der Liste die Daten automatisch neu ein. Eine detaillierte Beschreibung der Datenrefernztypen finden Sie in Datenreferenzen. Zulässig nur für Datentypen 1 (Boolean), 2 (Int32) und 5 (String) | ||
Datenreferenz-Filter (DataReferenceFilter) | Zusätzliche Bedingungen, welche die WHERE-Bedingung der SQL-Abfrage zur Laufzeit erweitern. Der Client liest jeweils beim Aufklappen der Liste die Datenreferenz neu ein. Format:
Platzhalter:
Beispiel: MyUnion.Periode=[Periode] AND MyUnion.Benutzer=[Benutzer] | ||
Datenreferenz-Info-Felder (DataReferenceInfoFields) | In einem Datenreferenz-Feld werden im UI neben dem eigentlichen Schlüssel (optional) auch alle anderen in der Datenreferenz referenzierten Felder angezeigt. Bei einem zusätzlichen Filter ("Datenreferenz-Filter") oder wenn eine DLL/Klasse und "Datenreferenz-Parameter“ hinterlegt sind wird die Datenreferenz erst beim Anzeigen der Auswahlliste komplett geladen. Für die Anzeige im Datenreferenz-Feld sind in der Datenstruktur die dort verwendeten Felder anzulegen und über die Liste "Datenreferenz-Info-Felder" in der gleichen Reihenfolge zu referenzieren. Wird aktuell in Selektionselementen nicht unterstützt. | ||
Datenreferenz-Parameter (DataReferenceServiceParameters) | Übergabe von Werten an die Geschäftsprozesse:
Semikolon-separierte Liste von Name-/Ausdruck-Paaren. Konstante Texte müssen in Anführungszeichen eingefasst werden, innen liegende Anführungszeichen sind zu verdoppeln.
Datenreferenz muss definiert sein; nur für dynamisch-gefilterte und dynamische Datenreferenz zulässig; für Standardfelder:
für benutzerdefinierte Felder:
| ||
Datenreferenz-Service-Dll-Name (DataReferenceServiceAssemblyName) | Definition einer DLL, über die die Datenreferenz dynamisch gefiltert wird. Der Geschäftsprozess liefert aus der Gesamtmenge der Daten nur die gültigen Schlüssel zurück. Der Client liest jeweils beim Aufklappen der Liste die Datenreferenz neu ein. Achtung: Die Daten werden zuerst komplett eingelesen und an den Client übertragen, der dann die Filterung initiiert. Bei großen Datenbeständen kann dies zu Performance-Problemen führen. Hier wird der Name der aufzurufenden DLL (ohne Verzeichnisname, aber mit Dateinamenerweiterung „.dll“) angegeben. Die DLL wird immer im OL-Shared-Verzeichnis gesucht | ||
Datenreferenz-Service-Dll-Klassenname (DataReferenceServiceClassName) | Name der aufzurufenden Klasse. Als Basisklasse ist "DataReferenceProcessBase" zu verwenden. Hinweis für Developer Partner WDB-Eintrag 203334: | ||
Datenklasse (DataClassPartnerId, DataClassPackageId, DataClassName) | Partner- und Lösungs-Kennung und Name der Datenklasse. | ||
Datenklassen-Schlüsselfeld (DataClassKeyField) | Verweis auf Schlüsselfeld der Datenklasse (zugehöriges Feld mit Datentyp 100 (Schlüssel 1 einer Data Class)) bzw. bei "Verbund Land/PLZ/Ort" Verweis auf Landes-Feld (zugehöriges Feld mit Datentyp 200 (Land)) bzw. auf Datenreferenz-Feld mit "LoadBehaviour" ungleich "Darstellung als Datenreferenz" (d.h. Wert <> 0) | ||
Suchfilter (FilterParameters) | Übergabe von Werten an die Datenklasse und an den angeschlossenen Suchdialog, um die Daten zu filtern. Dort können sie als Platzhalter für SQL verwendet werden (z.B. "$[Parameter(name)]") bzw. werden direkt an das dem Such-/Filterfeld zugeordnete Such-Element übergeben. Außerdem Übergabe von Werten zur Verwendung in den Makros des Kontextmenüs der Datenklasse. Die Namen werden automatisch um einen führenden Unterstrich ergänzt und stehen damit in den Makros als lokale Variablen zur Verfügung. Format:
Syntax:
Beispiel:
Hinweis:
| ||
Automatische Datenklassen-Validierung (DataClassAutoValidation) | Definiert, ob die Datenklassen-Werte automatisch validiert werden. Wird keine automatische Validierung eingestellt, so muss ein unmittelbar nachfolgender Geschäftsprozess die Validierung durchführen. Der Normalfall ist daher immer "Ja". Das Attribut dient zur Performance-Optimierung, wenn ein nachfolgender Geschäftsprozess ohnehin den Datenklassen-Wert validiert. Ohne Validierung kann die Eingabehistorie des Feldes mangels Daten nicht automatisch erzeugt werden. Dies muss dann mit dem Makro "EintragenEingabeHistorie" im "Nach Änderung"-Makro des Feldes manuell erfolgen. | ||
Standard-Wert (DefaultValue) | Standardwert für die Eingabe. Die Angabe eines Ausdrucks (muss mit „=“ beginnen) ist zulässig, wobei dort kein Zugriff auf andere Felder erlaubt ist. Gilt auch bei Datenreferenzen, wobei dort geprüft wird, ob der Wert in der Liste vorhanden ist, ansonsten dort keine Vorbelegung. Datumswerte müssen im ISO-Format („yyyy-mm-dd“ bzw. „yyyy-mm-ddThh:mm:ss“) angegeben werden. Wird das Feld im User Interface als Hilfetext verwendet (für Assistenten-Dialoge), muss der Text, damit er übersetzbar ist, aus den String-Ressourcen gelesen werden (siehe Platzhalter "GetString()"). Ist "Von-Bis-Feld?" gesetzt, werden Von- und Bis-Wert mit diesem Standardwert belegt. | ||
Formatierter Text? (IsFormattedText) | Handelt es sich um einen formatierten Text?
In den Fällen 1 und 2 wird im Feld nur der RTF- bzw. HTML-Text gespeichert; werden beim Speichern andere Textvarianten (RTF, HTML oder Plain-Text) benötigt, so sind diese im Geschäftsprozess durch Konvertierung zu erzeugen. Wird aktuell in Selektionselementen nicht unterstützt. | ||
Textformatierung abschaltbar? (IsTextFormattingSwitchable) | Soll der Anwender zwischen formatiertem und unformatiertem Text umschalten können? | ||
Feld unformatierter Text (PlainTextFieldName) | Feldname des Feldes, welches den unformatierten Text enthält. | ||
Pflichtfeld? (IsMandatory) | Markierung für Pflichtfeld (ab Version 9.0) Bei nummerischen Nicht-Pflicht-Feldern werden leere Felder und der Wert '0' unterschiedlich behandelt:
Beispiel-Szenario ist die erfasste Menge in der Inventur, bei der zwischen "noch nicht eingegeben" (NULL) und dem Lagerbestand '0' unterschieden werden muss. Bei Datentyp 1 (Boolean) werden in Nicht-Pflicht-Feldern leere Felder über einen dritten Status "unbestimmt" visualisiert (NULL in der Datenbank). Im UI wird bei Pflicht-Feldern keine Pflichtfeldmarkierung angezeigt, weil aus Anwendersicht sowohl der Wert "False" als auch "True" zulässige Eingaben sind. Felder der Datentypen 15 und 16 (indexed String und indexed Image) werden immer als Pflichtfeld behandelt, aber im UI nicht markiert, da sie generell immer eine Vorbelegung haben). Von-Bis Felder ("IsFromTo"=True) können keine Pflichtfelder sein ("IsMandatory"=True). | ||
Schreibschutz? (IsReadOnly) | Markierung für Nur-Lese-Felder "Schreibschutz?" wird für folgende Fälle aktiviert:
Wird "Schreibschutz?" aktiviert, hat dies folgende Auswirkungen:
Wird "Schreibschutz?" nicht aktiviert, kann zur Laufzeit Client-seitig mit dem Makro-Befehl "FestlegenNurLesen" die Einstellung auf "True" gesetzt werden.
Ein Anwendungsbeispiel ist z.B. in der Belegerfassung zu finden:
Rechteverwaltung:
| ||
Maximale Länge (MaxLenght) | Maximale Länge für Strings (0 bedeutet "unendlich") Hinweis: Im Datensatz (Data Record) wird dieser Wert automatisch aus dem Datenbankschema ermittelt. | ||
Maximal Länge gemäß Feld (MaxLengthDefinedByField) | Name des Feldes, das zur Laufzeit die Anzahl der maximale Länge enthält das referenzierte Feld muss Int16 oder Int32 als Datentyp haben | ||
Nachkommastellen (DecimalPlaces) | Anzahl Nachkommastellen oder variable Anzahl (d.h. Nachkomma-Nullen ausblenden) für mehr als 4 Nachkommastellen ist der Datentyp "FLOAT" in der SQL-Datenbank erforderlich; | ||
Nachkommastellen-Definition in übergeordnetem Element? (IsDecimalPlacesDefinitionInParent) | Erfolgt die Definition der Anzahl der Nachkommastellen über ein Feld des jeweils übergeordneten Elementes (bzw. deren jeweiligen Datenquelle)? | ||
Nachkommastellen gemäß Feld (DecimalPlacesDefinedByField) | Name des Feldes, das zur Laufzeit die Anzahl der Nachkommastellen enthält. Das Attribut hat Vorrang vor dem Attribut "Nachkommastellen" Das referenzierte Feld muss Int16 oder Int32 als Datentyp haben. | ||
Von-Bis-Feld? (IsFromTo) | Markierung für Von-Bis-Felder Von-Bis-Felder dienen i.d.R. dazu, mittels Platzhalter "$[AppendAndParameterFromTo()]" eine Einschränkung im SQL zu erzeugen. Weitere Details siehe dort. Werden Datenreferenzen verwendet, wird deren Eigenschaft "Mehrfach-Selektion erlaubt?" ignoriert. Wird aktuell nur für Selektionselemente unterstützt. | ||
FromToAutoValidation Ab 9.0.7 | Definiert, ob die Werte eines Von-Bis-Feldes automatisch validiert werden; wird keine automatische Validierung eingestellt, so muss ein unmittelbar nachfolgender Geschäftsprozess die Validierung durchführen. Der Normalfall ist daher immer "Ja". | "Ja" nur erlaubt, wenn "IsFromTo"=Ja | |
Mehrfachauswahl erlaubt bei Von-Bis-Feld? (AllowMultiselectForFromTo) | Selektions-Element:
| ||
Mehrfachauswahl erlaubt bei Datenklasse? (AllowMultiselectForDataClass) | Multi-Daten-Edit-Element:
| ||
Massendaten-Filterfeld? (UseMassDataFilter) | Selektions-Element:
| ||
Validierung | Minimalwert (MinValue) | Minimalwert für Validierung; bei nicht Pflicht-Feldern kann das Feld zusätzlich leer bleiben. Datumswerte müssen im ISO-Format („yyyy-mm-dd“ bzw. „yyyy-mm-ddThh:mm:ss“) angegeben werden | |
Maximalwert (MaxValue) | Maximalwert für Validierung;bei nicht Pflicht-Feldern kann das Feld zusätzlich leer bleiben. Datumswerte müssen im ISO-Format („yyyy-mm-dd“ bzw. „yyyy-mm-ddThh:mm:ss“) angegeben werden | ||
Liste zulässiger Werte (ValueList) | Werteliste für Validierung (Auswertung nach Min/Max, falls definiert); bei nicht Pflicht-Feldern kann das Feld zusätzlich leer bleiben. Datumswerte müssen im ISO-Format („yyyy-mm-dd“ bzw. „yyyy-mm-ddThh:mm:ss“) angegeben werden | ||
Validierungs-Ausdruck (ValidationExpression) | Validierungs-Ausdruck mit Boolean-Rückgabewert (bei nicht Pflicht-Feldern kann das Feld zusätzlich leer bleiben):
(Auswertung nach Min/Max und Werteliste, falls definiert) Hinweis: Dieser Ausdruck ist nicht geeignet, um Abhängigkeiten zwischen mehreren Feldern zu validieren, weil es keinen mehrfachen Feldbezug gibt (wie beispielsweise beim Makro-Befehl „FehlerMelden“). | ||
Validierungs-Ausdruck-Fehlermeldung (ValidationExpressionMessage) | Fehlermeldung, falls ein Validierungsfehler auftritt | ||
Lade-/Darstellungsverhalten (LoadBehaviour) Ab Version 9.0.3 | Lade-/Darstellungsverhalten einer Datenreferenz:
Das Lade-/Darstellungsverhalten einer Datenreferenz kann angepasst werden, so dass (auch einstellbar) anstelle der Datenreferenz ein Datenklassenfeld mit Suchlupe angezeigt wird. Für große Datenbestände ist die Datenklassen-Variante deutlich performanter und erlaubt auch die dann die notwendige Suchfunktionalität. | ||
Partner-Kennung Such-Element (SearchPartPartnerId) Lösungs-Kennung Such-Element (SearchPartPackageId) Name Such-Element (SearchPartName) Ab Version 9.0.3 | Such-Element zur Eingabe von "Nicht-Datenklassen", insb. hierarchischen Daten wie z.B. Artikelgruppen und Lagerplätzen, in Selektions-Elementen und Daten-Edit-Elementen Es wird automatisch Mehrfachauswahl unterstützt. Das Feld wird im UI automatisch schreibgeschützt, was nicht umgeschaltet werden kann. Es wird nicht der Wert im Feld dargestellt, sondern die Anzahl der gewählten Datensätze. Der Feldwert enthält die ausgewählten Schlüssel als Semikolon-separierte Liste. Schlüsselsegmente werden durch Kommata getrennt. Texte werden in Anführungszeichen eingefasst, innenliegende Anführungszeichen werden verdoppelt. Über das "BeforeSearch"-Makro des UI-Elementes können mit dem Makro-Befehl "FestlegenAdhocFilterSuche" Filter gesetzt werden. Abgrenzung zur Suche per Datenklasse:
Abgrenzung zur Verwendung eines Funktionsaufrufes am Feld mit dem Makrobefehl "DatensatzSuchen":
nur für für Datentyp 5 (String) mit NumberOfLines = 1 erlaubt (keine Memo-Darstellung mit Suchen Schaltfläche); für Datenreferenzen, Datenklassen und Hilfetexte nicht erlaubt | ||
Ereignisse (Makros) | Validierung nach Änderung (ValidationAfterChange) | Makros zur Validierung. Client-seitig wird das Ereignis bei Änderungen wie folgt aufgerufen:
Im Daten-Edit-Element wird das Ereignis außerdem wie folgt behandelt (wenn diese in der Eigenschaft "Verwendung" auf die Verwendung von Datenstrukturen konfiguriert sind:
In Selektionselemente wird das Ereignis außerdem wie folgt behandelt:
Das Ereignis wird bei Daten-Edit-Elementen auf Client- und Server-Seite und bei Selektionselementen nur auf Client-Seite ausgelöst (sinnvollerweise im Makro die Funktion „IsRunningOnServer“ verwenden, um nur auf dem Server auszuführen und Roundtrips zu vermeiden)
|