Werte in Formularen prüfen
Sie können per Code prüfen ob Werte zulässig sind.
Das folgende Beispiel zeigt wie Sie verhindern können das der Anwender im Feld HEIGHT eine Wert kleiner als 9 eingibt und im Feld DISTANCE einen Wert grösser 20.
Wenn Sie den Script Editor verwenden dann:
Im Script Editor in der linken Liste das Formular auswählen in dem die Prüfung
ausgeführt werden soll.
Dann rechts auf das Register "Formular" klicken und "IsActive" aktivieren.
Und dann diesen Code verwenden.
Wenn Sie Plugin Programmieren:
Fügen Sie den Code unten in ein GenericFormPlugIn ein.
Im Code vom Register "Formular" wird C# Code erst ab Version 24.1.35 unterstützt, dort müssen bei Version vor 24.1.35 immer VB.NET verwenden. In Plugins wird die Funktion in allen Versionen und in C# und VB.NET unterstützt.
C# Beispiel
public override void Register()
{
//Dieser Code wird beim öffnen des Formular ausgeführt und kann z.B. zur Initalisiering von werten verwendet werden.
}
public override void RecordModifying(object sender, CancelEventArgs e)
{
//Dieser Code wird beim Einfügen eines neuen Datensatzes im Formular aufgerufen
this.ValidateValues(e);
}
public override void RecordAdding(object sender, CancelEventArgs e)
{
//Dieser Code wird beim änderen eines neuen Datensatzes im Formular aufgerufen
this.ValidateValues(e);
}
private void ValidateValues(CancelEventArgs e)
{
System.Text.StringBuilder errorText = new System.Text.StringBuilder();
if (this.GetInt32Ex("HEIGHT") > 9)
{
errorText.AppendLine("Value of Column HEIGHT has to be smaller than 10");
}
if (this.GetInt32Ex("DISTANCE") < 21)
{
errorText.AppendLine("Value of Column DISTANCE has to be bigger than 20");
}
if (errorText.Length > 0)
{
e.Cancel = true; 'Dieser Befehl sagt dem Formular das das Speichern abgebrochen werden soll.
'Setzen Sie diesen Wert nicht auf "true" da Sie sonst ggf andere Prüfungen wieder zurücksetzen
XMsgBox.ShowException(errorText.ToString());
}
}
VB.NET Beispiel
Public Overrides Sub Register()
'Dieser Code wird beim öffnen des Formular ausgeführt und kann z.B. zur Initalisiering von werten verwendet werden.
End Sub
Public Overrides Sub RecordAdding(sender As Object, e As Mum.Geo.Client.Events.CancelEventArgs)
'Dieser Code wird beim Einfügen eines neuen Datensatzes im Formular aufgerufen
Me.ValidateValues(e)
End Sub
Public Overrides Sub RecordModifying(sender As Object, e As Mum.Geo.Client.Events.CancelEventArgs)
'Dieser Code wird beim änderen eines neuen Datensatzes im Formular aufgerufen
Me.ValidateValues(e)
End Sub
Private Sub ValidateValues(e As Mum.Geo.Client.Events.CancelEventArgs)
Dim errorText As New System.Text.StringBuilder()
If Me.GetInt32Ex("HEIGHT") > 9 Then
errorText.AppendLine("Value of Column HEIGHT has to be smaller than 10")
End If
If Me.GetInt32Ex("DISTANCE") < 21 Then
errorText.AppendLine("Value of Column DISTANCE has to be bigger than 20")
End If
If errorText.Length > 0 Then
e.Cancel = true 'Dieser Befehl sagt dem Formular das das Speichern abgebrochen werden soll.
'Setzen Sie diesen Wert nicht auf "true" da Sie sonst ggf andere Prüfungen wieder zurücksetzen
XMsgBox.ShowException(errorText.ToString())
End If
End Sub