Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: chris2212 am 10.03.05 - 10:56:36
-
Hallo,
in einer Dokumenten Datenbank soll folgende Agent den DocumentTitle
prüfen, wenn im Titel Zertifikat erhalten steht soll er in der Adress Datenbank
auf dem Kontakt der das Zertifikat erhalten hat einen Feldwert setzten.
Es sind ca. 1500 Dokumente die den Titel enthalten, bei 137 bleibt der Agent
stehen und bring die Fehlermeldung Object Variable not Set.
In der Dokumenten Datenbank sind 50.494 Dokumente.
Ich habe den Agent auch schon am Server laufen lassen, dann bekomme ich auch die Fehlermeldung.
Dim session As New NotesSession
Dim docDB As NotesDatabase
Dim docCol As NotesDocumentCollection
Dim docDocument As NotesDocument
Set docDB = session.CurrentDatabase
Set docCol = docDB.AllDocuments
Set docDocument = docCol.GetFirstDocument
Dim adrDB As NotesDatabase
Dim adrDBView As NotesView
Dim adrDoc As NotesDocument
Set adrDB = session.GetDatabase("Server","AdrDB",False)
Set adrDBView = adrDB.GetView("(SearchKey)")
While Not (docDocument Is Nothing)
If Instr(docDocument.DocTitle(0), "Zertifikat erhalten") <> 0 Then
Set adrDoc = AdrDBView.GetDocumentByKey(docDocument.SearchKey(0),True)
If (adrDoc.IsValid = True) And (adrDoc.Form(0) = "Kontakt") Then
Call adrDoc.ReplaceItemValue("Zertifikat","erhalten")
Call adrDoc.Save(True,False,False)
End If
End If
Set docDocument = docCol.GetNextDocument(docDocument)
Wend
Ist der Agent falsch aufgebaut oder gibt es eine Beschränkung beim Zugriff auf
eine andere DB?
Für jeden Tipp dankbar !
Danke & Gruß
Chris
-
Ich würde fast wetten, der findet das AdrDoc nicht. Aber schalte mal den Debugger ein und sag mal, in welcher Zeile der Fehler denn auftritt, und überprüfe dann mal den Inhalt Deiner Variablen, fast sicher ergibt sich die Antwort von selber .....
-
Und in welcher Zeile????
Mit der Fehlermeldung sagt dir Notes einfach, "Hey ich hab hier was was ich nicht gefunden habe und du willst eine Atkion damit machen. Das geht nicht!"
Also gibt es, da es deinen Search view zu geben scheint und du das Vorhandensein des Basisdocumentes abfängst eigentlich nur die Möglichkeit das mit dem Doctitle kein gültiges Dokument in deiner anderen DB gefunden werden kann. Das hast du nämlich vergessen abzufangen.
Set adrDoc = AdrDBView.GetDocumentByKey(docDocument.SearchKey(0),True)
-> if not adrdoc is nothing then
If (adrDoc.IsValid = True) And (adrDoc.Form(0) = "Kontakt") Then
Call adrDoc.ReplaceItemValue("Zertifikat","erhalten")
Call adrDoc.Save(True,False,False)
End If
-> end if
Das noch mit einbauen und du hast den Fehler warscheinlich eliminiert, aber da muss dann noch Benachrichtungslogik dahinter gelegt werden.
-
Hallo,
danke für die Unterstützung!
Das hatte gefehlt, jetzt geht es.
Nachdem ich mir die Antwort von Thomas angeschaut habe,
ist mir auch klar geworden warum :-(
Naja, bald ist Wochenende :-)
Vielen Dank für die schnelle Unterstützung!
Danke & Gruß
Chris