Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: oz am 26.09.05 - 12:56:30
-
Hallo Forum,
Ich möchte vor dem speichern prüfen, ob sich der Wert eines Feldes durch den Benutzer geändert wurde. Ich habe daher folgenden Code in die Querysave meines Formulars gelegt.
Dim uiName As String
uiName = Source.FieldGetText("fldGlobalProfileName")
Dim beName As String
beName = Source.Document.fldGlobalProfileName(0)
Messagebox uiName & " " & beName
Die Messagebox gibt zwei gleiche Werte zurück. Wieso ist das? Kann mir jemand sagen wie ich diese Problem löse.
Vielen Dank für Eure Hilfe
oz
-
Indem du im Queryopen des Dokumentes ein
set histDoc = source.document einbaust.
und dann
gegen HistDoc.fldGlobalProfileName(0) prüfst
-
Hi,
wenn es nur um die Prüfung geht, ob ein User einen Feldwert geändert hat, brauchst du nicht unbedingt ein Profildokument.
Füge in den Declarations - Abschnitt der Maske eine Variable ein. Diese setzt du dann im Postopen-Event mit dem Wert des entsprechenden Feldes. Im QuerySave-Event kannst du dann den aktuellen Inhalt des Feldes mit der Variablen vergleichen und entsprechend reagieren.
Axel
-
Stimmt Axel aber mit dem Dokument geht das auch und es hat den Vorteil das du nicht jede einzelne Variable deklarieren musst.
-
Hallo Forum,
erst mal Danke für Eure Beiträge.
Ich habe jetzt folgendes getan:
In den Declarations meines Formulars:
Dim origDoc As NotesDocument
Dann im Postopen:
Set origDoc = Source.Document
Messagebox origDoc.fldGlobalProfileName(0)
Die Ausgabe hier ist (welch Wunder) tatsächlich der Wert des Feldes im Backend Dokument. Soweit so Gut.
Dann im Querysave:
Dim uiName As String
uiName = Source.FieldGetText("fldGlobalProfileName")
Dim beName As String
beName = origDoc.fldGlobalProfileName(0)
Messagebox uiName & " " & beName
Hier greife ich also nun nochmals auf die Variable origDoc zu. Nun enthalten die Variablen uiName und beName die gleichen Werte.
Offensichtlich werden hier nur Referenzen übergeben, die dann zur Laufzeit geändert werden.
Der Trick ist im PostOpen gleich einen String zu deklarieren, der den Wert des Feldes enthält und darauf zuzugreifen. Strings werden byvalue übegeben und bleiben somit stabil. Dann geht das ganze.
Vielen Dank Trotzdem
Oz