Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Roam am 06.10.06 - 09:51:37

Titel: Vorherigen Wert des Feldes beim Query Save auslesen
Beitrag 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
Titel: Re: Vorherigen Wert des Feldes beim Query Save auslesen
Beitrag von: klaussal am 06.10.06 - 09:56:11
Warum sicherst Du den Wert nicht im QueryPostopen ?
Titel: Re: Vorherigen Wert des Feldes beim Query Save auslesen
Beitrag von: jr am 06.10.06 - 10:03:29
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