Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Roam am 06.10.06 - 09:51:37
-
Hallo,
ich habe folgendes Problem. Ich möchte beim Ändern eines Datensatzes den vorherigen Wert des Feldes auslesen. Hierfür habe ich versucht den vorherigen Wert des Feldes anhand der DocID auszulesen. Allerdings steht obwohl es im Querysave ist im doc immer schon der neue Wert. Hat da vielleicht jemand eine Idee.
Hier der Quelltext:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim s As New notessession
Dim db As notesdatabase
Dim doc As notesdocument
Dim vw_hauptkat As notesview
Dim ws As New notesuiworkspace
Dim uidoc As notesuidocument
Set db = s.CurrentDatabase
Set vw_hauptkat = db.GetView("pdfvwHauptkategorie")
Set doc = vw_hauptkat.GetFirstDocument
Set uidoc = ws.CurrentDocument
Do While Not (doc Is Nothing)
If uidoc.FieldGetText("Hauptkategorie") = doc.hauptkategorie(0) Then
Msgbox "Diese Hauptkategorie ist bereits vorhanden"
continue = False
Exit Sub
End If
Set doc = vw_hauptkat.GetNextDocument(doc)
Loop
Vielen Dank im vorraus
Robin
-
Warum sicherst Du den Wert nicht im
QueryPostopen ?
-
Hallo,
da gibt es sicher mehrere Möglichkeiten.
Die eine Lösung ist, wie sie klauss beschrieben hat, eine Varible zu definieren, im Postopen den aktuellen Wert zuzuweisen und im QuerySave diesen mit dem aktuellen zu vergleichen. Es sollte übrigens im PostOpen sein, weil Du im QueryOpen unter Umständen noch keinen Zugriff auf das Dokument hast.
Die zweite Lösung ist, dass Du das Dokument mit dem gespeicherten Dokument vergleichst. Das ist aber nicht ganz so einfach, denn wenn Du das Dokument mit GetDocumentByUnID holst, dann gibt er Dir das aktuelle Dokument zurück. Ich habe das früher mal gebraucht und damals eine Ansicht gebaut, bei der der Sortierwert @Text(@DocumentUniqueID) war. Dann im QuerySave die View holen und das Dokument mit GetDocumentByKey(doc.UniversalID) holen. Interessanterweise bekommt Notes in diesem Fall nicht mit, dass es das gleiche Dokument ist. Damit hast Du dann die alte und die neue Version gleichzeitig im Speicher und kannst dann zum Beispiel die geänderten Feldwerte bestimmen.
Gruß,
Joachim