Hallo Forum,
Ich habe einen merkwürdigen Fall. Es passiert, dass ein "Objekt" myDoc zwar im Variablenpool beim debug angezeigt wird, aber ohne jegliche Eigenschaften.
Angenommen, das ist so in Ordnung. Aber: Trotzdem lande ich in der "While ... Wend" Schleife.
Wird der Zustand hier nicht vor dem erstmaligen Betreten der Schleife geprüft? Liegt hier mein Denk-Fehler?
Was mache ich falsch?
Vielen Dank für Eure Ideen.
Viele Grüße, Nils
Sub mySub (doc as NotesDocument)
Dim coll As NotesDocumentCollection
Dim respDoc as NotesDocument
Set coll = doc.Responses
set respDoc = coll.GetFirstDocument
While Not (myDoc Is Nothing)
'mach was
Call mySub(respDoc)
Set respDoc = coll.GetNextocument(respDoc)
Wend
...
Manchmal liefern Funktionen Dokumente zurück, die entweder schon gelöscht sind, oder grundsätzlich ungültig oder "irgendwie da" aber ohne jegliche Items. Deshalb nutze ich in solchen Fällen immer mindestens die Abfrage "isDeleted" und "isValid", manchmal auch isArray( doc.Items). Weil ich das nicht jedesmal tippen will, habe ich eine eigene Funktion dafür:
Function IsValidDocument( doc As NotesDocument ) As Boolean
On Error Goto ErrorRoutine
'===================================================================================================================================
IsValidDocument = False
If Not doc Is Nothing Then
If doc.Isvalid Then
If Not doc.Isdeleted Then
If Isarray( doc.Items ) Then
IsValidDocument = True
End If
End If
End If
End If
'===================================================================================================================================
EndOfRoutine:
Exit Function
ErrorRoutine:
Resume EndOfRoutine
End Function
Und dann in Deinem Beispielcode:
While Not (respDoc Is Nothing)
If IsValidDocument(respDoc) Then
'mach was
Call mySub(respDoc)
End If
Set respDoc = coll.GetNextocument(respDoc)
Wend
Ich hoffe, Du hast nur fürs Forum einen Fehler eingebaut, weil Deine While- Abfrage auf myDoc is Nothing entspricht nicht der inneren Verarbeitung von respDoc