Autor Thema: Merkmal "doc Is Nothing" wird nicht erkannt  (Gelesen 1457 mal)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Merkmal "doc Is Nothing" wird nicht erkannt
« 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
...
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Antw:Merkmal "doc Is Nothing" wird nicht erkannt
« Antwort #1 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
« Letzte Änderung: 17.02.23 - 16:27:21 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:Merkmal "doc Is Nothing" wird nicht erkannt
« Antwort #2 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
« Letzte Änderung: 18.02.23 - 09:04:58 von aoibhneach »
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:Merkmal "doc Is Nothing" wird nicht erkannt
« Antwort #3 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
« Letzte Änderung: 18.02.23 - 09:05:14 von aoibhneach »
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz