Domino 9 und frühere Versionen > Entwicklung

Schlechte Schleifenkonstruktion

(1/2) > >>

Don Pasquale:

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

Axel:
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

Rob Green:
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?

Performance:
@rob
stimmt genau - man sollte nie den Ast absägen auf dem man arbeitet  :D :D :D :D

cu

wflamme:
Eben, deshalb:

...
set docLoop=doc
set doc=col.getnextdocument(doc)
'machwas, aber mit docLoop
...

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln