Autor Thema: Function requires a valid ADT Argument  (Gelesen 2250 mal)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Function requires a valid ADT Argument
« 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

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Function requires a valid ADT Argument
« Antwort #1 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
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline doliman

  • Senior Mitglied
  • ****
  • Beiträge: 332
  • Geschlecht: Männlich
    • www.doleschel.de
Re:Function requires a valid ADT Argument
« Antwort #2 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.
Grüßle
                           _///_
                          (o~o)
-------------oOOO--(_)--OOOo-------------
Frank Doleschel

----------------------
Ein Berufsleben ohne Notes ist zwar möglich aber die Alternativen sind erschreckend ;-)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Function requires a valid ADT Argument
« Antwort #3 am: 31.01.03 - 08:23:08 »
Aua,

ich habe aber nur dbprozessed Documents.


Mmmh.

Keine anderen Ideen ?

Ciao

Don Pasquale

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Function requires a valid ADT Argument
« Antwort #4 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

klaussal

  • Gast
Re:Function requires a valid ADT Argument
« Antwort #5 am: 31.01.03 - 08:52:58 »
... und auf ERLEDIGT setzen .... ;D ;D ;D

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz