Domino 9 und frühere Versionen > ND6: Administration & Userprobleme
Kalendergröße
koehlerbv:
--- Zitat von: m3 am 20.12.06 - 14:50:31 ---
--- Zitat von: koehlerbv am 20.12.06 - 14:45:21 ---Geiles ErrorHandling, Martin ;D
--- Ende Zitat ---
:P
Ist mehr als in so manchem Code, den ich hier gefunden habe. :'(
--- Ende Zitat ---
Wohl war! Vor allem gibt es in Deinem Code kaum noch eine Stelle, wo der Agent auf die Nase fallen könnte.
"Notice" sind übrigens angenommene Einladungen, Umplanungen etc. - und ReponseDocs. Dadurch sind die dann auch mit in der Ansicht sichtbar. Da kann also eine erkleckliche Anzahl an Bytes zusammenkommen.
Bernhard
m3:
Soda, damit die i-Tüpferl-Reitere aufhört:
--- Code: --- Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim dc As NotesDocumentCollection
Dim size As Long
Dim count As Long
On Error Goto ERRORHANDLING_SPEZIELL_FUER_koehlerbv
Set db = session.CurrentDatabase
Set dc = db.Search( {Form="Appointment" | Form ="Notice"}, Nothing, 0)
size = 0
count = 0
If( dc Is Nothing Or dc.Count = 0) Then
Messagebox "Keine Collection!"
Exit Sub
End If
Set doc = dc.GetFirstDocument
While( Not doc Is Nothing )
count = count + 1
size = size + doc.Size
Set doc = dc.GetNextDocument(doc)
Wend
Dim average As Double
average = size / count
Messagebox Cstr(count) & " Dokumente haben " & Cstr(size) & " bytes. Durchschnitt: " & Cstr(Average)
Exit Sub
ERRORHANDLING_SPEZIELL_FUER_koehlerbv:
Messagebox( "Ein Fehler ist im Agenten 'Size Of Appointments' aufgetreten.Details: " & Error() & ", " & Err() & ", " &Erl() )
--- Ende Code ---
In meiner Mail-DB:
Ohne Notices: 4.143 Dokumente mit 59,7 MB
Mit Notices: 4.228 Dokumente mit 60,4 MB
Tode:
@Bernhard: ich habe einen Punkt gefunden, wo das Script auf die Nase allen kann...
Einen Punkt, auf den ich auch nie gekommen wäre, wenn ich nicht kürzlich selbst mal wieder drauf gestossen wäre:
Eine auf diese Art erzeugte Collection enthält manchmal (frag mich aber nicht unter welchen Umständen, vielleicht muss einfach die DB gross genug sein) auch DeletionStubs.
Ob ein DeletionStub noch eine Eigenschaft size hat, weiss ich aus dem Stehgreif nicht, aber da könnte es ein Problem geben, wenn man nicht auf IsValid / Items (isDeleted liefert bekanntermassen nicht immer True zurück auch wenn es das sollte) prüft...
Nur um auch ein wenig "Klugscheisserei" zu diesem Thema beigetragen zu haben... ;)
Tode
koehlerbv:
Torsten, das war eigentlich das einzige "kaum", was mir auch spontan eingefallen ist - exakt dieses. Eine üble Geschichte, und WARUM dem MANCHMAL so ist, habe ich auch noch nicht herausfinden können. Ich prüfe daher genauso wie Du auf eventuelle "Geister" ab.
DAS wollte ich aber nicht auch noch posten - das Thema des Threads ist ja nun nicht soooo weltbewegend, der Fragesteller hat sich keine 20 Minuten nach Fragestellung erstmal abgemeldet, und Martin hat meine Aufzieherei natürlich gar nicht verdient.
Nun kann man aber hoffen, dass per Zufall jemand mit dem "Geister-Dokumente"-Problem hierüber mal stolpert oder es doch möglichst viele lesen und irgendwie im Hinterkopf behalten. Obwohl es ja nun mit der Grösse aller Appointments / Notices nur sehr mittelbar zu tun hat.
Bernhard
m3:
Tode, danke für den Hinweis, das war mir neu. Man sollte sich die Zeit nehmen, auch von "bekannten" Objekte ab und an die Doku lesen, dann findet man so was:
--- Zitat ---A deletion stub is returned for a document deleted after creation of the collection or for a document to which you do not have read access. Use IsValid in NotesDocument to check whether a document is real (True) or a deletion stub (False).
--- Ende Zitat ---
Daher folgender Code:
--- Code: --- Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim dc As NotesDocumentCollection
Dim size As Long
Dim count As Long
On Error Goto ERRORHANDLING_SPEZIELL_FUER_koehlerbv
Set db = session.CurrentDatabase
Set dc = db.Search( {Form="Appointment" | Form ="Notice"}, Nothing, 0)
size = 0
count = 0
If( dc Is Nothing Or dc.Count = 0) Then
Messagebox "Keine Collection!"
Exit Sub
End If
Set doc = dc.GetFirstDocument
While( Not doc Is Nothing )
'A deletion stub is returned for a document deleted after creation of the collection or for a document to which you do not have read access.
' Therefore: Check, if document is valid, otherwise it's a deletion stub.
If doc.IsValid = True Then '
count = count + 1
size = size + doc.Size
End If
Set doc = dc.GetNextDocument(doc)
Wend
Dim average As Double
average = size / count
Messagebox Cstr(count) & " Dokumente haben " & Cstr(size) & " bytes. Durchschnitt: " & Cstr(Average)
Exit Sub
ERRORHANDLING_SPEZIELL_FUER_koehlerbv:
Messagebox( "Ein Fehler ist im Agenten 'Size Of Appointments' aufgetreten.Details: " & Error() & ", " & Err() & ", " &Erl() )
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln