Der Fehler liegt daran, dass Du die Variable view doppelt verwendest. Sobald Du die Zeile
Set view = db.GetView("Lager")
erreichst, wird die Variable doc zurückgesetzt.
Hintergrund ist, dass sobald der Garbage Collector von LotusScript merkt, dass eine Variable frei wird (in diesem Fall die Variable "view"), werden alle Objecte, deren Zugriff über diese Variable erfolgte ebenfalls gelöscht.
Du musst einfach in Deinem Script eine zweite Variabe für die Ansicht "Lager" einfügen. Dann sollte der Fehler nicht mehr passieren.
Aber abgesehen von dem Problem mit der Fehlermeldung, macht Dein Agent so überhaupt nicht, was er soll.
Dieser Agent sollte eigentlich funktionieren:
Sub Initialize
Dim sn As New NotesSession
Dim db As NotesDatabase
Dim vwImport As NotesView
Dim vwLager As NotesView
Dim docImport As NotesDocument
Dim docLager As NotesDocument
Set db = sn.CurrentDatabase
Set vwImport = db.GetView("Import")
Set vwLager = db.GetView("Lager")
'Alle Dokumente in der Ansicht "Import" abarbeiten
Set docImport = vwImport.GetFirstDocument
lngCount = 0
Do Until docImport Is Nothing
Set docLager = vwLager.GetDocumentByKey(docImport.SAPNum(0), True)
If docLager Is Nothing Then
Set docLager = db.CreateDocument
docLager.Form = "Test"
docLager.SAPNum = docImport.SAPNum
End If
'Den Inhalt des Feldes "AufLager" des Import-Dokumentes in das Feld "AufLager" in das Lager-Dokument kopieren
docLager.AufLager = docImport.AufLager
docLager.Lagerort = docImport.Lagerort
Call docLager.Save(True, True, True)
Set docImport = vwImport.GetNextDocument(docImport) 'das nächste Dokument in der Ansicht "Import"
Loop
End Sub
Alles anzeigen
Eventuell musst Du die Feldnamen noch einmal überprüfen.
Allgemein solltest Du Dir angewöhnen, sprechende Variablennamen zu verwenden, sobald Du mehr als zwei Dokumentarten und/oder Ansichten usw. hast.
So, jetzt habe ich doch wieder wesentlich mehr geschrieben als ich eigentlich wollte.