Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: pimpfling am 05.08.03 - 07:56:46
-
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
-
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.
-
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