Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: aoibhneach am 17.02.23 - 15:41:02

Titel: Merkmal "doc Is Nothing" wird nicht erkannt
Beitrag von: aoibhneach am 17.02.23 - 15:41:02
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

Code
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
...
Titel: Antw:Merkmal "doc Is Nothing" wird nicht erkannt
Beitrag von: Tode am 17.02.23 - 16:23:48
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:
Code
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:
Code
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
Titel: Antw:Merkmal "doc Is Nothing" wird nicht erkannt
Beitrag von: aoibhneach am 17.02.23 - 19:17:13
Hallo Torsten,

riesigen Dank. Zuerst; mit dem Tip IsValid und .IsDeleted hast Du mir zu einem entspannteren Wochenende verholfen.  Ich werde Deine Idee am Montag umsetzen.

Mit meinen müden Sinnen nach langem Suchen ist mir dann noch das „myDoc“ passiert. Du hast Recht. Das war aber nicht extra für‘s Forum erdacht. ;D Ich wollte es so allgemein wie möglich darstellen. Hab den Fehler dann auch nicht mehr gesehen. Im Original ist es richtig  ;)

Rück-/Erfolgsmeldung folgt. Nochmals vielen Dank .

Viele Grüße, Nils
Titel: Antw:Merkmal "doc Is Nothing" wird nicht erkannt
Beitrag von: aoibhneach am 17.02.23 - 21:35:25
Ergänzung:

Hallo Torsten
Hab meinen Code entsprechend ergänzt. Nun läuft die Kiste erstmal :)

Ich werde aber erst am Montag die Anzahl der verarbeiteten Docs usw. vergleichen.

Viele Grüße,

Nils