Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 30.01.03 - 17:25:23

Titel: Function requires a valid ADT Argument
Beitrag von: Don Pasquale am 30.01.03 - 17:25:23
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
Titel: Re:Function requires a valid ADT Argument
Beitrag von: Performance am 30.01.03 - 18:11:20
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
Titel: Re:Function requires a valid ADT Argument
Beitrag von: doliman am 30.01.03 - 19:30:21
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.
Titel: Re:Function requires a valid ADT Argument
Beitrag von: Don Pasquale am 31.01.03 - 08:23:08
Aua,

ich habe aber nur dbprozessed Documents.


Mmmh.

Keine anderen Ideen ?

Ciao

Don Pasquale
Titel: Re:Function requires a valid ADT Argument
Beitrag von: Don Pasquale am 31.01.03 - 08:41:52
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
Titel: Re:Function requires a valid ADT Argument
Beitrag von: klaussal am 31.01.03 - 08:52:58
... und auf ERLEDIGT setzen .... ;D ;D ;D