Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 13.12.02 - 12:33:53

Titel: Schlechte Schleifenkonstruktion
Beitrag von: Don Pasquale am 13.12.02 - 12:33:53

Hallo Leute,

in einer Schleife werden alle angewählten Dokumente durchlaufen,
leider bekomme ich nach dem letzten Dokument ein
Variant does not contain an object.
Mir ist zwar klar, das das am dc.GetNextDocument(doc)
liegt, aber wie mache ich es besser ?

Kann mir jemand helfen ?


Ciao und vielen Dank

Don Pasquale

   Dim flag As Variant
   Dim Session As New NotesSession
   Dim Collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim view As NotesView    
   
   Set db=session.currentdatabase
   Set Collection=db.UnprocessedDocuments  
   Set doc=Collection.GetFirstDocument  
   
   Dim nnUserName As New NotesName(session.UserName)
   
   Dim tmpdoc As NotesDocument
   Set view = Session.Currentdatabase.GetView( "InternIdent" )    
   Set doc = Collection.getfirstdocument
   
   If Collection.Count = 0 Then
      Messagebox "Es ist kein Dokument markiert "
   Else
      If Collection.Count > 1 Then
         Messagebox "Sie dürfen nur ein einzelnes Dokument löschen"
      Else
         
         
         flag = Messagebox ("Wenn Sie diese Abfage mt OK bestätigen wird, das Dokument gelöscht. Es kann danach nur noch vom Administrator wiederhergestellt werden. Wollen Sie wirklich löschen ?", MB_OKCANCEL+ MB_EXCLAMATION,1)
         
         If flag Then
            
            While Not (doc Is Nothing)
               
               Set item = doc.ReplaceItemValue( "e4fld_Geloescht","True" )
               Set item = doc.ReplaceItemValue( "e4fld_GeloeschtAm", Today )
               Set item = doc.ReplaceItemValue( "e4fld_GeloeschtVon", nnUserName.Common )
               Call doc.Save( True, True )                  
               Call doc.RemoveFromFolder("Eigene Dokumente")
               Set doc = dc.GetNextDocument(doc)
            Wend   
            
         End If
      End If
   End If
Titel: Re:Schlechte Schleifenkonstruktion
Beitrag von: Axel am 13.12.02 - 12:58:44
Hi,

vom Prinzip her ist die Schleife in Ordnung, aber du hast einen Schreibfehler drin.

Muß so aussehen:

Set doc = Collection.GetNextDocument(doc)
           
Dann solte es funktionieren.


Axel
Titel: Re:Schlechte Schleifenkonstruktion
Beitrag von: Rob Green am 13.12.02 - 13:01:59
wenn er das Doc aus dem Folder removed, wird dann nicht das Netxdocument gegen die Wand laufen, weil dann nämlich das nächste Doc so nicht mehr in dem Ordner existiert, da es um "eins hochgerutscht" ist?
Titel: Re:Schlechte Schleifenkonstruktion
Beitrag von: Performance am 13.12.02 - 13:09:04
@rob
stimmt genau - man sollte nie den Ast absägen auf dem man arbeitet  :D :D :D :D

cu
Titel: Re:Schlechte Schleifenkonstruktion
Beitrag von: wflamme am 13.12.02 - 13:14:23
Eben, deshalb:

...
set docLoop=doc
set doc=col.getnextdocument(doc)
'machwas, aber mit docLoop
...
Titel: Re:Schlechte Schleifenkonstruktion
Beitrag von: Axel am 13.12.02 - 13:15:41
@Rob,

glaube ich nicht, denn doc bezieht sich auf Dokumente innerhalb der Collection und nicht des Ordners.

Um ganz sicher zu gehen, könnte man es so versuchen:
               
               ...
               Call doc.Save( True, True )                  

               Set doc = Collection.GetNextDocument(doc)

               Call doc.RemoveFromFolder("Eigene Dokumente")
            Wend  
            ...

Axel

         

Titel: Re:Schlechte Schleifenkonstruktion
Beitrag von: Don Pasquale am 13.12.02 - 13:16:35
Set doc = Collection.GetNextDocument(doc)
       
Dann solte es funktionieren.


Das tut es.

Herzlichen Dank
ich war schon schwer am grübeln

 ;D ;D


Ciao
Don Pasquale


@ROB:  Das war auch mein Gedanke, war mir aber nicht sicher.
Aber anscheindend tut es jetzt.