Datensatzinhalte verändern während Bearbeitung

In Beispielen wird häufig darauf eingegangen, dass man Datensatzinhalte innerhalb eines Record-Objekts bearbeiten kann. Die dafür vorgesehenen Methoden Record.GetContents(Value)By…() oder Record.SetContents(Value)By…() werden daher ebenso häufig in den Beispielen verwendet.

Es kann nun jedoch sein, dass Datensatzinhalte verändert werden sollen, obwohl der Datensatz, auf den man üblicherweise zugreifen würde, noch im Bearbeitungsmodus ist bzw. sich sogar in der Neuanlage befindet, sodass entweder die Methoden Record.SetContents(Value)By…() und Record.Save() das interaktive Speichern dieses Datensatzes erfordern und so den Nutzer durch Hinweismeldungen aus dem Tritt bringen können, oder dass das Instanziieren des Record-Objekt fehlerhaft ist und die Record-Objektvariable möglicherweise leer bleibt.

Als Lösung bietet sich hierbei die Arbeit mit dem InputForm-Objekt an. Dieses Objekt repräsentiert die Eingabemaske, die dem Nutzer zum Zeitpunkt der Scriptausführung angezeigt wird und ermöglicht mit den Methoden InputForm.GetContents(Value)By…() und InputForm.SetContents(Value)By…() ähnliche Bearbeitungsmöglichkeiten, wie aus dem Record-Objekt bekannt.

Das Bearbeiten eines Feldinhalts kann wie folgt aussehen:

' Beibehalten des Bearbeitungsmodus

<!--#pragma keepeditmode-->

 

' Zuweisen des InputForm-Objekt über die Methode CurrentInputForm() des View-Objekts

Dim oInputForm : Set oInputForm = cRM.CurrentProject.ActiveViews.ActiveView.CurrentInputForm(2) ' Wert 2: Beibehalten des aktuellen Bearbeitungsmodus

 

' Beschreiben des Feldes "Firma" mit dem Wert "combit Software GmbH" innerhalb der Eingabemaske

Call oInputForm.SetContentsValueByName("Firma", "combit Software GmbH")

 

' Speichern der Änderungen innerhalb der Eingabemaske ohne interaktive Rückmeldung an den Anwender

Call oInputForm.Save()