Autor Thema: In welchem Folder liegt das jew. Dokument - FolderReferences  (Gelesen 34392 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
** 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

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

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

TMC
« Letzte Änderung: 26.01.04 - 20:17:39 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #1 am: 02.01.04 - 18:30:13 »
das funzt dann aber nur für neu erstellt docs, oder ?

upps, erst lesen, dann posten Script 2 bringt die Lösung
« Letzte Änderung: 02.01.04 - 18:31:48 von eknori »

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #2 am: 02.01.04 - 18:31:01 »
lies mal Script 2 :-)

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #3 am: 02.01.04 - 18:33:39 »
TMC ( The Master of Ceremony  ;D ) :

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

Feedback folgt...

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #4 am: 02.01.04 - 18:38:24 »
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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #5 am: 02.01.04 - 18:40:37 »
Ich habe hie rmein privates Mailfile mit 240 Foldern und 182000 Docs. Das ist schon ordendlich Futter für dein Script, gell ?

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #6 am: 02.01.04 - 18:43:15 »
Zitat
rmein privates Mailfile mit 240 Foldern und 182000 Docs.
:o :o :o

cool, da geht was  ;D
Und da sagt noch einer hier wird nicht richtig getestet  :D

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #7 am: 02.01.04 - 18:47:43 »
ach ja, bevor das Fragen wieder losgeht, mache doch mal ne DB mit Code und den entsprechenden Ansichten fertig und lade die hier hoch. Merci...

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #8 am: 02.01.04 - 18:59:26 »
hat gefunzt  :D Super.  Der Code hat 22 Minuten für meine paar docs gebraucht  ;D

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #9 am: 02.01.04 - 19:01:02 »
gute Idee, Ulrich.

Hier noch ein Beispiel-Buhtong für eine Ansicht, um in einer Messagebox zu sehen, in welchem Folder das ausgewählte Dok steckt:

Code
Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim szReference As String
   
   Set db = session.CurrentDatabase
   
   Set collection = db.UnprocessedDocuments
   
   Set doc = collection.GetFirstDocument
   
   Forall r In doc.FolderReferences
      If r = "" Then Goto Empty
      szReference = r & Chr(10) & szReference
   End Forall      
   
   While Not (doc Is Nothing)
      Msgbox "Folder References: " & Chr(10) & Chr(10) &szReference, 64, db.title
      Set doc = collection.GetNextDocument(doc)   'Nächstes Dokument
   Wend
   
   Exit Sub
   
Empty:
   Msgbox "No References in this document....", 64, db.title
   
End Sub
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #10 am: 02.01.04 - 19:02:46 »
wow, jetzt drehst du aber auf... supi...

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #11 am: 02.01.04 - 19:04:36 »
hat gefunzt  :D Super.  Der Code hat 22 Minuten für meine paar docs gebraucht  ;D

Super, das ist doch was  8)

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #12 am: 02.01.04 - 19:13:53 »
Interessant wäre jetzt noch eine View

Dokument | Folder

Mal schauen, ich befürchte ohne DBLookup geht das nicht, was wiederum bedeuten würde, man braucht ein weiteres Feld in den Dokumenten  :-\

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #13 am: 02.01.04 - 19:45:58 »
ok, hast recht, aber deine Scripte sind schon mal ein guter Ansatz.
Script 3 in einen Agenten gepackt und dann das Feld $FolderName füllen ( einmal täglich ) wäre für manche FA. schon ein riesen Fortschritt.

Bei neuen Dokumenten müsste das doch auch im PostSave zu machen sein...

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #14 am: 02.01.04 - 20:16:50 »
jip.

Hier das Script dazu, welches alle Doks der DB behandelt die FolderReferences haben:

Code
Dim session As New notessession 
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   
   Set db = session.CurrentDatabase
   Set dc = db.allDocuments 
   
   Set doc = dc.GetFirstDocument
   Do While Not doc Is Nothing
      If Not doc.FolderReferences(0) = "" Then
         doc.FolderName = doc.FolderReferences
         Call doc.save (False,False)      
      End If   
      Set doc = dc.GetNextDocument(doc)
   Loop

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #15 am: 02.01.04 - 22:32:10 »
und das packe ich dann in das postsave; krrrekt ?

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #16 am: 02.01.04 - 22:35:40 »
Zitat
mache doch mal ne DB mit Code und den entsprechenden Ansichten fertig und lade die hier hoch.

Wollte ich eigentlich machen, aber
1) die Scripts sind eh hier verfügbar
2) warum es DAUs noch einfacher machen
3) hab ich jetzt keinen Bock nochmal alles zu dokumentieren in der DB :-)

Was mir hier wichtig war:
- Die vielfach behauptete Aussage, ein FolderReference lasse sich nachträglich nicht umsetzen, zu widerlegen
- praxistaugliche Scripts zu posten die man dazu einsetzen kann

Ich hoffe wir bekommen hier noch Rückmeldungen egal welcher Art und weitere Script-Beispiele, da dieses Thema schon immer im Notes-Bereich ein Problem war (Zuordnung Dokumente / Folder), und R5 brachte die Lösung, nur viele wußten bzw. wissen es nicht wie umzusetzen.

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #17 am: 02.01.04 - 22:36:40 »
@Ulrich:
War für einen Buhtung ausgelegt.....

TMC

*Edit*
wenn Du das letzte Script meinst.
« Letzte Änderung: 02.01.04 - 22:38:31 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.627
  • Geschlecht: Männlich
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #18 am: 02.01.04 - 22:41:18 »
Zitat
Die vielfach behauptete Aussage, ein FolderReference lasse sich nachträglich nicht umsetzen, zu widerlegen

was dir gelungen ist...  :D

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:In welchem Folder liegt das jew. Dokument - FolderReferences
« Antwort #19 am: 02.01.04 - 22:49:32 »
Danke Ulrich, solch eine Bestätigung von einem Experten wie Dir freut mich sehr :-)

Zumal ich wirklich (noch) kein Script Freak bin :-)
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz