Autor Thema: Agent der alle alten Dokumente von MailDBs aufsummiert  (Gelesen 2305 mal)

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Hallo

Ich habe das Problem das ich den gewonnenen Plattenplatz ermitteln soll der entsteht, wenn alle User die Dokumente ihrer MailDB die älter als ein Jahr sind archivieren würden...
Ich habe von eknori auch schon einige Hinweise bekommen:

Mit einer entsprechenden Search Formel ( NotesDatabase Klasse ) kannst du dann die zu suchenden Dokumente einer Datenbank in eine NotesDocumentCollection schreiben. Die Grösse eines Dokuments läßt sich dann über @DocLength in Verbindung mit evaluate ermitteln. Das Ergebnis wird dann in eine Variablen addiert. ( sind byte, glaube ich) Also mußt du noch ein bisschen umrechnen (bytes / 1024 = KB )

Nun bin ich nicht so der grosse Programmierer und hatte gehofft das so etwas in der Art schon jemand fertig hat...
Kann auch aus verschiedenen Codeschnipseln bestehen die ich erst zusammen mantschen muss... :)

Vielen Dank
Stefan
« Letzte Änderung: 05.08.03 - 07:57:16 von pimpfling »
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Agent der alle alten Dokumente von MailDBs aufsummiert
« Antwort #1 am: 05.08.03 - 08:41:35 »
Moin,

na, dann mache ich mal den Anfang.

Hier zunächst mal das Grundgerüst

Sub Initialize
   On Error Resume Next
   Dim session As New NotesSession
   Dim agent As NotesAgent
   Dim server As String
   Set agent = session.CurrentAgent
   server = agent.ServerName
   Dim dbdir As New NotesDbDirectory ( server )
   Dim db As NotesDatabase
   Set db = dbdir.GetFirstDatabase ( DATABASE )
   While Not(db Is Nothing)
      
      If Instr(db.FilePath, "mail\") Then
         Call db.Open( "", "" )
         If db.IsOpen Then
            Dim col As NotesDocumentCollection
            Set col = db.Search(" (@Date(PostedDate) - @Today) /(60*60*24) < -365",Nothing,0)
            
            Msgbox col.Count
         End If
      End If
      Set db = dbdir.GetNextDatabase
   Wend
End Sub

Der Agent durchsucht das Unterverzeichnis Mail nach Datenbanken.
Innerhalb der Datenbank sucht er nach Dokumenten, die älter als 365 tage sind und füllt damit eine DocumentCollection.

So, jetzt muß nur noch die größe jedes Documents in der Collection ermittelt werden und iin einer Variablen summiert werden.

Wie das geht... erzähle ich euch nach der nächsten Maus.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Agent der alle alten Dokumente von MailDBs aufsummiert
« Antwort #2 am: 05.08.03 - 08:52:04 »
sooo, hier dann nochmal der Agent, diesmal mit dem Code, um die Größe der Docs zu ermitteln und zu summieren

Sub Initialize
   On Error Resume Next
   Dim session As New NotesSession
   Dim agent As NotesAgent
   Dim server As String
   
   Dim doc As NotesDocument
   Dim sizeInByte As Double
   
   Set agent = session.CurrentAgent
   server = agent.ServerName
   Dim dbdir As New NotesDbDirectory ( server )
   Dim db As NotesDatabase
   Set db = dbdir.GetFirstDatabase ( DATABASE )
   While Not(db Is Nothing)
      
      If Instr(db.FilePath, "mail\") Then
         Call db.Open( "", "" )
         If db.IsOpen Then
            Dim col As NotesDocumentCollection
            Set col = db.Search(" (@Date(PostedDate) - @Today) /(60*60*24) < -365",Nothing,0)
            
            For i% = 0 To col.Count
               Set doc = col.GetNthDocument(i%)
               sizeInByte = sizeInByte + doc.Size
            Next
            Msgbox sizeInByte
            
         End If
      End If
      Set db = dbdir.GetNextDatabase
   Wend
End Sub
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz