Autor Thema: Collection durchlaufen und dabei Doc removen  (Gelesen 2900 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
Collection durchlaufen und dabei Doc removen
« am: 06.03.03 - 12:30:41 »
Hallo Leute,
ich möchte alle Dokumente in einem Ordner durchlaufen und
anhängig von einem Kriterium, das Dokument aus diesem Ordner
nehmen.
Nach Ablauf der Routine sind aber noch gut die Hälfte der
Dokumente übrig, ich vermute, dass wenn das erste Dokument
gelöscht wurde, das GetNextDocument das Dritte Document nimmt,
weil er neu zählt und das 2. Dokument zum 1. wurde und
das 3. zum 2. .

Wie kann ich das unterbinden ? Von hinten anfangen ?

Das ist mein Versuch.

Wer weis Rat ?

Ciao
Don Pasquale

Dim session As New NotesSession
Dim doc As NotesDocument
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim db As NotesDatabase
Dim RemoveDoc As NotesDocument
Set session = New notessession       
Set db = session.CurrentDatabase   
Set view = db.GetView( "($Inbox)" )
Set doc = view.GetFirstDocument
   
While Not ( doc Is Nothing)

if doc.FELDA = XYZ then
  Set RemoveDoc = doc
  Call Removedoc.RemoveFromFolder("($Inbox)")
end if
            
Set doc = view.GetNextDocument(doc)      
end
   
   
   
   
   

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Collection durchlaufen und dabei Doc removen
« Antwort #1 am: 06.03.03 - 13:09:14 »
... schau mal bei OpenNTF - dort habe ich vor Tagen eine Lib entdeckt "NotesDocumentArray" - mit der kann man das lösen..

ata
Grüßle Toni :)

klaussal

  • Gast
Re:Collection durchlaufen und dabei Doc removen
« Antwort #2 am: 06.03.03 - 13:23:01 »
... oder

while
   getfirstdocument
   .
   .
   remove
   .
   view.refresh
   getfirstdocument
end

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Collection durchlaufen und dabei Doc removen
« Antwort #3 am: 06.03.03 - 13:40:06 »
@Don

... ich habe nach er Lib gesucht, aber selbst nicht mehr gefunden. ich weiß, daß ich sie zu Hause habe. Wenn du also Interesse hast, dann melde dich nochmal...

... die Klasse in der Lib kann

-Remove(doc)
-GetFirstDocument
-GetNextDocument(doc)
-AddDocument
-GetIndex(doc)
-Sort(feldName)
... uvm...

ata
Grüßle Toni :)

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:Collection durchlaufen und dabei Doc removen
« Antwort #4 am: 06.03.03 - 15:01:51 »
@Ata,


ich habe das Teil gefunden und sitze gerade dran, allerdings
habe ich gerade ein NotesDocumentArray gefüllt und will
es nun mit GetNextDocument durchlaufen und dann steckt das Teil
in einer Endlosschleife.

Bist Du Dir sicher, das das Teil funtkioniert ?


Ciao

Don Pasquale

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Collection durchlaufen und dabei Doc removen
« Antwort #5 am: 06.03.03 - 15:09:50 »
hm..klausal hat doch schon...na ja, egal

Forumadmins mit Augen/Ohrenpax.. 8) 8) 8)  :-*
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

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:Collection durchlaufen und dabei Doc removen
« Antwort #6 am: 06.03.03 - 15:25:25 »
... oder

while
   getfirstdocument
   .
   .
   remove
   .
   view.refresh
   getfirstdocument
end


Interessant, weil bestechend, das Problem ist, dass wenn nicht alle Dokument removed werden sollen, also auch nur eines übrig bleibt, dann bin ich in einer endlosschleife


Ciao

Don Pasquale



Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Collection durchlaufen und dabei Doc removen
« Antwort #7 am: 06.03.03 - 15:32:51 »
... ich dachte daran das Array parallel laufen zu lassen - du durchläufst die Collection, löschst aber im Array...

ata
Grüßle Toni :)

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:Collection durchlaufen und dabei Doc removen
« Antwort #8 am: 06.03.03 - 15:38:07 »

@Klaussal:

Ich probiere es jetzt mal damit, den Rest kann man sich ja denken :

If eswurdegeloescht = 1 Then
   Set doc = view.GetFirstDocument      
Else
   Set doc = view.GetNextDocument(doc)   
End If


Ciao

Don Pasquale


Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Collection durchlaufen und dabei Doc removen
« Antwort #9 am: 06.03.03 - 15:40:35 »
@Rob, @Don

... denk mal nach, warum die Methode nicht so gut ist. Die ersten 5 Dokumente werden nicht gelöscht, das 6. ja - dann beginnst du wieder beim ersten Doc???

... kann ich nicht nachvollziehen?

ata
Grüßle Toni :)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Collection durchlaufen und dabei Doc removen
« Antwort #10 am: 06.03.03 - 15:48:36 »
warum macht ihr euch das Leben denn so schwer ?? Warum nimmst du nicht eine NotesViewEntryCollection, die du entsprechend deinem Suchkriterium füllst und dann mit vc.removeAll alle documente löscht ??

Oder habe ich da etwas falsch verstanden ?

Du möchtest doch erreichen, daß aus einem Ordner ( View ) alle Dokumente mit einem bestimmten Kriterium gelöscht werden.

 ??? ??? ???
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Collection durchlaufen und dabei Doc removen
« Antwort #11 am: 06.03.03 - 15:50:31 »
... das wäre natürlich das eleganteste...

ata  ;D
Grüßle Toni :)

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:Collection durchlaufen und dabei Doc removen
« Antwort #12 am: 06.03.03 - 15:51:32 »
@ata:
Du hast recht, ist ziemlich ineffizient.
Klaussal ist wohl eher davon ausgegangen, dass alle Dokumente zu verschieben sind.

Ich benötige für´s erste eine funktionierende Funktion,
danach kann ich mich um´s optimieren kümmern.

Ich habe das NotesDocumentArray zuerst mit den Kandidaten gefüllt ( das schien auch geklappt zu haben ) aber dass schlichte durchlaufen dieses Array produzierte eine Endlosschleife.


Ciao

Don Pasquale


Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Collection durchlaufen und dabei Doc removen
« Antwort #13 am: 06.03.03 - 15:54:56 »
... ich schau mir das aus Interesse heute Abend mal an...

ata
Grüßle Toni :)

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:Collection durchlaufen und dabei Doc removen
« Antwort #14 am: 06.03.03 - 16:29:58 »
Hier wäre der link

http://www.openntf.org/projects/codebin/codebin.nsf/81882682b238ec2685256be70008ecaf/9d3c707bdc2a378e88256c6e00128fc3!OpenDocument


Ich habe es jetzt mit einer Liste realisiert, in die ich alle UniversalIDs packe und die ich dann an Ende einmal durchlaufe.


Vielen Dank für Eure Ideen


Ciao

Don Pasquale
Hier der Auszug aus meiner Lösung

Dim LOESCHLISTE List As String*32
Dim Removedoc As NotesDocument
Dim session As New NotesSession
Dim doc As NotesDocument
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim db As NotesDatabase
Dim RemoveDoc As NotesDocument
Set session = New notessession      
Set db = session.CurrentDatabase  
Set view = db.GetView( "($Inbox)" )
Set doc = view.GetFirstDocument
   
While Not ( doc Is Nothing)

if doc.FELDA = XYZ then
  j = j + 1
 LOESCHLISTE(j) = doc.UniversalID

end if
           
Set doc = view.GetNextDocument(doc)      
Wend

Forall x In LOESCHLISTE
Set RemoveDoc = db.GetDocumentByUNID(X)   
Call Removedoc.RemoveFromFolder("($Inbox)")         
End Forall
« Letzte Änderung: 06.03.03 - 19:09:19 von Don Pasquale »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz