Lotus Notes / Domino Sonstiges > Tipps und Tricks

In welchem Folder liegt das jew. Dokument - FolderReferences

(1/11) > >>

TMC:
** EDIT **

Komplette Lösung siehe hier unter Best Practices: Best Practices Folder References


Hi,

ich hab mich zu dem Thema "Wie finde ich heraus, in welchem Ordner Dokument XY liegt" mal etwas schlau gemacht  und ein paar Scripts geschrieben.

Damit dies überhaupt klappt, müssen die folgenden Ordner der R5 Mailschablone in die jew. DB kopiert werden:
- $FolderRef
- $FolderRefInfo

Außerdem muss vorher ein db.FolderReferencesEnabled = True ausgeführt werden.
Per Default werden keinerleid Infos in den Dokumenten gespeichert!

Beispiel-Code:

--- Code: ---Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   
   If   db.FolderReferencesEnabled  Then
      If Messagebox ("Folder References are enabled." & Chr(10) & Chr(10) _
      & "Do you want to disable the Folder References?" ,1 + 32,db.title) = 1 Then
         db.FolderReferencesEnabled = False
         Messagebox "Disabled Folder References now.....", 64, db.title        
      Else
         Exit Sub      
      End If  
   Else
      If Messagebox ("Folder References are disabled." & Chr(10) & Chr(10) _
      & "Do you want to enable the Folder References?" ,1 + 32,db.title) = 1 Then
         db.FolderReferencesEnabled = True
         Messagebox "Enabeled Folder References now.....", 64, db.title
      End If
   End If      
End Sub
--- Ende Code ---

Nachträglich Folder References erzeugen

Nun hat man ggf. das Problem, dass db.FolderReferencesEnabled nicht enabled wurde und eine DB (z.B. Mailfile) u.U. viele tausend Dokumente hat ohne jeder Referenz.

Da kann man dann folgenden Code nehmen, damit wird einfach jedes Dokument wieder in denselben Folder geschoben, und damit wird dann nachträglich eine Referenz erzeugt.


--- Code: ---Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim vec As NotesViewEntryCollection
   Set db = session.CurrentDatabase
   
   If Not Messagebox ("Do you really want to create references of all docs in all folders?" ,1 + 32,db.title) = 1 Then
      Exit Sub      
   End If  
   
   Forall v In db.Views
      If v.isFolder Then
         Set vec = v.AllEntries
         Call vec.PutAllInFolder( v.Name )
      End If
   End Forall
   Messagebox "Folder References are created...", 64, db.title
   
End Sub
--- Ende Code ---

Ist erstmal ein erster Wurf, to be continued.....

TMC

eknori (retired):
das funzt dann aber nur für neu erstellt docs, oder ?

upps, erst lesen, dann posten Script 2 bringt die Lösung

TMC:
lies mal Script 2 :-)

TMC

eknori (retired):
TMC ( The Master of Ceremony  ;D ) :

Gute Arbeit, das kann mir in der Fa. gute Dienste leisten..

Feedback folgt...

TMC:
Freut mich Ulrich  ;D

Auf die Idee bezügl. dem Call vec.PutAllInFolder( v.Name ) brachte mir ein Spotlight.de - Thread......

Bin schon auf Dein Feedback gespannt, sollte auch mal mit einem größeren Mailfile oder so getestet werden - werd ich auch noch angehen....

TMC

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln