Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: bob am 16.03.03 - 21:19:35

Titel: Wie kann man Profildokumente löschen?
Beitrag von: bob am 16.03.03 - 21:19:35
Hi,

hab schon hier und im Internet gesucht, wie man Profildokumente löschen kann.

Eine Lösung war, dies mit NotesPeek zu machen. Aber damit kann ich nur lesend zugreifen.

Also wie kann man Profildoks löschen? Am liebsten wäre mir eine Lösung ohne Tools.

cya,
Bob
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: Rob Green am 16.03.03 - 22:35:21
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Set db = session.CurrentDatabase
   Dim NDC As notesDocumentCollection
   Set NDC = db.GetProfileDocCollection( "NAMEDERPROFILMASKE" )
   Set doc = NDC.getfirstdocument
                While Not (doc Is Nothing)
   If doc.isprofile Then
      call doc.remove(true)
   End If
                set doc=ndc.getnextdocument(doc)
                Wend
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: ata am 17.03.03 - 13:52:20
@Rob,

... ich glaube, daß das so nicht funktionieren wird, da du auf ein gelöschtes Dokument als Referenz bei GetNextDocument(doc) zugreifst...

... anstelle dessen nimmst du ...

Set doc = dc.getFirstDocument

... also wieder das erste in der Collection

... oder bin ich auf dem falschen Dampfer?

ata
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: Rob Green am 17.03.03 - 13:55:11
ach ja...klatsch..klar  ;D

Hatte es doch selbst vor einiger Zeit...

der TRick war

set doc = DC.getfirstdocument
While Not (doc is nothing)
...
set docKopie = doc
...
if ... then
remove docKopie(true)
end if
...
set doc = DC.getnextdocument(doc)
wend

danke, ata  ;)
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: ata am 17.03.03 - 16:39:49
... oder eben so...

ata  ;)
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: bob am 17.03.03 - 20:51:32
Danke Euch beiden, jetzt gehts.


   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Set db = session.CurrentDatabase
   Dim NDC As notesDocumentCollection
   Set NDC = db.GetProfileDocCollection( "Profile_Formulare" )
   Set doc = NDC.getfirstdocument
   While Not (doc Is Nothing)
      If doc.isprofile Then
         Call doc.remove(True)
      End If
      Set doc = ndc.getFirstDocument
   Wend


Allerdings bleibt da die Sanduhr stehen, aber wenn ich mit Strg+Untbr nach ein paar Sekunden abbreche, sind die Profiledoks gelöscht.

Kann es sein, dass da ne Endlosschleife eingebaut ist?


Bob
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: joringel am 17.03.03 - 20:57:54
Jo, ist eine solche....

While Not (doc Is Nothing)
      If doc.isprofile Then
         Call doc.remove(True)
      End If
      Set doc = ndc.getFirstDocument
Wend

muss sein:

While Not (doc Is Nothing)
      If doc.isprofile Then
         Call doc.remove(True)
      End If
      Set doc = ndc.getNextDocument
Wend
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: Rob Green am 17.03.03 - 21:30:28
óla, wir drehen uns im Kreis...man kann ein Doc aus einer Collection nicht löschen (und in dem Falle auch aus der DB) und erwarten, daß die collection das getnextdocument beherrscht...worauf auch getnextdocument..auf das gelöschte und vorher referenzierte Objekt doc? Na...entweder getfirst nehmen wieder oder eine Methode (s.o.) beschrieben, indem man mit einer Kopie des aktuellen Collection Objektes arbeitet.
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: eknori am 18.03.03 - 07:49:46
Also wenn ich die Notes Designer Hilfe riichtig gelesen habe, lie´fert die methode GetNotesProfileDocuments doch eine NotesDocumentCollection zurück.

Und diese Notes DocumentCollection hat die methode RemoveAll(True) um Alle Docs dieser Collection auf einen Schlag zu löschen.

Also

Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Dim NDC As notesDocumentCollection
Set NDC = db.GetProfileDocCollection( "Profile_Formulare" )
Call NDC.RemoveAll (true)

Das sollte es doch auch tun, gell ?? ;D
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: ata am 18.03.03 - 10:36:10
... ja warum eigentlich nicht ...  :P

ata
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: doliman am 18.03.03 - 18:48:50
Hi,
evtl. auch so????

   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Set db = session.CurrentDatabase
   Dim NDC As notesDocumentCollection
   Set NDC = db.GetProfileDocCollection( "Profile_Formulare" )
   for i=1 to ndc.count
       Set doc = NDC.getnthdocument(i)
       if Not (doc Is Nothing) then
           If doc.isprofile Then
              Call doc.remove(True)
           End If
       end if
  next

müsste auch tun.
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: eknori am 18.03.03 - 19:11:05
Klar, viele Wege führen bekanntlich nach Rom. Aber wenn eine Klasse schon mal eine Methode zum Entfernen ALLER Dokumente des Objektes bietet, sollte man diese auch nutzen.
Da haben sich die Programmierer schon solche Mühe gegeben.... ;D
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: doliman am 18.03.03 - 19:13:39
Hi,

vollkommen richtig!!
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: eknori am 18.03.03 - 19:17:51
Laß uns doch mal eine Lösung für Notes 4.x finden.
da gab es nämlich die GetProfileDocCollection Methode noch nicht...
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: doliman am 18.03.03 - 19:25:11
Hi,

mit 4.x kenne ich mich nicht so aus!!!
Aber mit Deiner Hilfe können wir das bestimmt bewältigen.
 :D
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: eknori am 18.03.03 - 19:35:28
da muss ich dann am WE mal nen 4er Client + Designer installieren  ;D

upps, dummerchen In 4.x war der Designer doch schon drin !!
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: bob am 18.03.03 - 19:59:22
Danke Euch allen !

Hab jetzt allerdings die Lösung von Eknori genommen....

cu,
Bob
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: Rob Green am 18.03.03 - 22:25:08
könnte so gehen..in r4

Sub Click(Source As Button)
  Dim session As New NotesSession  
  Dim db As NotesDatabase  
  Dim collection As NotesDocumentCollection  
  Dim doc As NotesDocument  
  Set db = session.CurrentDatabase  
  Set collection = db.AllDocuments  
  For i = 1 To collection.Count    
    Set doc = collection.GetNthDocument( i )  
    If doc.IsProfile Then    
      msgbox "Möp, ich bin ein Profil, mähhhh"  
    End If
  Next
End Sub
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: eknori am 19.03.03 - 05:40:32
Das wird dann ab 100.000 docs und > richtig spaßig  ;D
Titel: Re:Wie kann man Profildokumente löschen?
Beitrag von: Rob Green am 19.03.03 - 08:50:54
zum Einschlafen wärs aber guut  :P