@Peter Klett
Wenn man auf das NotesSession Objekt verzichtet und die db einfach über db.Open(Server, Pfad) öffnet, dann kann man auch GetDocumentById verwenden.
Private Sub showEingabe(Byval db3name As String, Byval db3server As String, Byval NoteId3 As String)
Dim session3 As New NotesSession
Dim doc3 As NotesDocument
Dim db3 As New NotesDatabase( "", "" )
' Set db3 = session3.GetDatabase(db3server, db3name)
Call db3.Open( db3server, db3name )
Set doc3 = db3.GetDocumentByID(noteId3)
If doc3 Is Nothing Then
Print "doc3 is nothing"
Else
Print Str$(Now()) & " doc3.eingabe = " & doc3.eingabe(0)
End If
End Sub
- Ich habe diese Sub in einer Maske eingebunden.
- ich gebe in das Feld "eingabe" etwas ein (z.B. "1") und speichere, danach rufe ich die Sub auf --> "1"
- das Dokument verbleibt weiter im Edit-Mode
- ich gebe in das Feld "eingabe" etwas anderes ein (z.B. "2") ohne zu speichern und rufe die Sub auf --> immer noch "1"
Benutze ich stattdessen "Set db3 = session3.GetDatabase(db3server, db3name)" (oben auskommentiert), dann tritt der von Dir beschriebene Effekt ein, daß über das im Client nur einmal verwendete NotesSession Objekt das in-memory Dokument verwendet wird. Folgerichtig wird dann der nicht gespeicherte Wert "2" angezeigt.
Ich bin immer noch der Meinung, daß es auch ohne Ansicht geht und direkt die DocumentId verwendet werden kann. Wie sich das ganze performancetechnisch verhält, müßte man noch gucken. Mir fehlt im Moment auch die Zeit auszutesten, wie weit man db3 in die Globals schieben kann. Wenn das geht, dann sollte die Sub sehr schnell sein.
Gruß,
Th.
P.S. @cococo69 Entschuldige, Deine Frage in dem Thread war eine andere und es geht Dir eigentlich um die GetDocumentByKey Fehler - vielleicht kommt aber trotz des "Hijacking" etwas Gutes für Dich bei dieser Diskussion heraus.