Domino 9 und frühere Versionen > Entwicklung
Function requires a valid ADT Argument
Don Pasquale:
Hallo Leute,
obige Fehlermeldung erscheint wenn ich das folgendes Skript ausführe.
und zwar bei dieser Zeile
Set doc = dc.GetNextDocument(doc)
Hat da jemand eine Idee ?
Ciao
Don Pasquale
--- Code: ---Function BEISPIEL (MAX As Integer) As Integer
Const STATUS_WEITERGELEITETE_DOKUMENTE = "Weitergeleitete Dokumente"
Dim Zaehler As Integer
Dim unid As String
Dim Artikel As String
Dim Anzahl As Integer
Dim OK As Integer
Dim session As New NotesSession
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim db As NotesDatabase
Dim Doc As NotesDocument
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.getfirstdocument
Anzahl = dc.Count
If Anzahl > 1 Then
Artikel = "die " & Anzahl & " angewählten Dokumente"
Else
Artikel = "das Eine angewählte Dokument"
End If
OK = Messagebox ("Wollen Sie " & Artikel & " des Vorgangs " + key + " archivieren ?", 1,"Dokument(e) archivieren")
If OK = 1 Then
While Not (doc Is Nothing)
Zaehler =0
If doc.e4fld_Status(0) <> STATUS_WEITERGELEITETE_DOKUMENTE Then
Zaehler = Zaehler + 1
' **********************************************************************************************
unid = doc.UniversalID
doc.e4ihk_EXTENDED_ATTR2 = "Posteingang-Archiviert"
Call doc.save(True,True)
Ergebnis = e4ihk_Abgleichen(unid)
Ergebnis = ARCHIVIEREN(unid)
' Das Result.txt muss noch ausgelesen werden
Call doc.Remove( True )
'***********************************************************************************************
Else
' Messagebox "Dieses Dokument ist noch in Weitergabe"
End If
Set doc = dc.GetNextDocument(doc)
Wend
Else
End If
Beispiel = Zaehler
End Function
--- Ende Code ---
Performance:
du hast in der Schleife dein doc gelöscht - deshalb hgibt es beim nächsten getnextnthdocument keinen Bezug mehr.
besser ist es wenn du im dokument ein flag speicherst z.B. del = 1
diese doks mit dem flag werden in eine view geholt und mit einem periodischen Agenten nachst gelöscht
cu
doliman:
Hi,
ein weiter Weg wäre über eine for Schleife und dc.getnthdocument
z. B:
set dc = view.getalldocumentsbykey(...)
for i=1 to dc.count
set doc = dc.getnthdocument(i)
next
dann gibts auch keine Probleme wenn das Doc geslöscht wird.
Don Pasquale:
Aua,
ich habe aber nur dbprozessed Documents.
Mmmh.
Keine anderen Ideen ?
Ciao
Don Pasquale
Don Pasquale:
Hallo Leute,
Die Lösung ist simpel
if Not (Doc) is nothing
Set DocDelete = doc
Set doc = dc.GetNextDocument(doc)
Call DocDelete.Remove( True )
wend
Damit sägt man sich den Ast nicht ab auf dem man sitzt.
Diao
Don Pasquale
ps. habe mich an was ähnliches erinnert, was ich schon mal hatte.
die lösung ist von wflamme
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln