Zum Hauptinhalt springen

Werte in Formularen vor dem speichern manipulieren

Mit einem Dialog Plugin können Sie Werte vor dem Speichern manipulieren.

Dies greift jedoch nur im Formular. Wen Sie wollen das der Code an allen Stellen greifen soll verwenden Sie stattdessen besser Feature Rules.

Erzeugen Sie ein DialogPlugin und fügen Sie dann die jeweils gewünschte Überladung hinzu. Der Code kann auch im Script Editor im Register "Form" eingefügt werden.

Bitte beachten

Das Register "Form" bei Skripten unterstützt C# ab Version 24.1.35. Davor kann dort nur VB.NET Syntax verwendet werden.

Neuen Datensatz vor dem einfügen manipulieren

Der Anwender geht in den "Einfügen" Modus, gibt Werte ein und drückt dann "Einfügen" Knopf.

Im Code wird dann die Funktion RecordDbAdding aufgerufen wenn diese in ihrem DialogPlugin vorhanden ist,. Hier können Sie nun Werte per Code anpassen.

Benutzten Sie zum schrieben von Werten immer "e.Write" oder "e.Feature", alle anderen Wege wie "this.Form." oder "this.irgendwas" haben hier zum schrieben von Werten keine Auswirkung

public override void RecordDbAdding(object sender, RecordDbAddingEventArgs e)
{
//This is raised right before the Insert is send to the Database.
//Changing of any Control Values (The UI Controls) via Form.Controls has no affect here!!
//If you set values here any values set by the application (via UI or internally) are overwritten

string value = this.StrValue("Spaltenname")

e.Write("Spaltenname", value);

//Starting Version 24.1.42. you can use this.Feature too to access the Feature Object
//This way you can also read values.
string value = this.Feature.GetStringEx("Spaltenname");

this.Feature.SetValue("Spaltenname", value)
}

Vorhandenen Datensatz vor dem updaten manipulieren

Der Anwender geht in den "Editieren" Modus, gibt werte ein und drückt dann "Einfügen" Knopf.

Im Code wird dann die Funktion RecordDbAdding aufgerufen wenn diese in ihrem DialogPlugin vorhanden ist,. Hier können Sie nun Werte per Code anpassen.

Benutzten Sie zum schrieben von Werten immer "e.Write" oder "e.Feature", alle anderen Wege wie "this.Form." oder "this.irgendwas" haben hier zum schrieben von Werten keine Auswirkung

public override void RecordDbModifying(object sender, RecordDbModifyingEventArgs e)
{
//This is raised right before the Update is send to the Database.
//Changing of any Control Values (The UI Controls) via Form.Controls has no affect!!

string value = this.StrValue("Spaltenname")

e.Write("Spaltenname", value);

//Starting Version 24.1.42. you can use this.Feature too to access the Feature Object
//This way you can also read values.
string value = this.Feature.GetStringEx("Spaltenname");

this.Feature.SetValue("Spaltenname", value)

}