Autor Thema: Kalendergröße  (Gelesen 3180 mal)

Offline aleroosen

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
Kalendergröße
« am: 20.12.06 - 12:44:30 »
Hallo zusammen,

ich bin auf der Suche nach einer Möglichkeit die Gesamtgröße des Kalenders in einer Maildatenbank zu berechnen/darzustellen, also die Summe aller Kalendereinträge z.B. in der Ansicht Besprechungen. Hintergrund ist, dass einige unserer Anwender wissen möchten wieviel MB der Kalender im Mailfile in Anspruch nimmt. Kennt jemand eine Lösung hierfür?

Gruss Alex
« Letzte Änderung: 11.01.07 - 10:55:33 von aleroosen »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Kalendergröße
« Antwort #1 am: 20.12.06 - 14:25:12 »
einfach eine Ansicht mit entsprechender Spalte erstellen, in der Spalte die Grösse anzeigen (@Doclength) und summieren... Oder Du ergänzt die Besprechungs- Ansicht um eine entsprechende Spalte.. ist in 2 Minuten erledigt, wenn man weiss was man tut...

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Kalendergröße
« Antwort #2 am: 20.12.06 - 14:37:41 »
Ich hab da einen Agent:
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

Set db = session.CurrentDatabase
Set dc = db.Search( {Form="Appointment"}, 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:
Print "Fehler"
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendergröße
« Antwort #3 am: 20.12.06 - 14:45:21 »
Geiles ErrorHandling, Martin  ;D

Haarspalterei: Eigentlich gehören doch bestimmte "Notices" (Besprechungsinformationen) auch zum Kalender - die müsste man also "eigentlich" auch noch mitzählen.

Bernhard

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Kalendergröße
« Antwort #4 am: 20.12.06 - 14:50:31 »
Geiles ErrorHandling, Martin  ;D
  :P
Ist mehr als in so manchem Code, den ich hier gefunden habe.  :'(

Zitat
Haarspalterei: Eigentlich gehören doch bestimmte "Notices" (Besprechungsinformationen) auch zum Kalender - die müsste man also "eigentlich" auch noch mitzählen.
Pipifax. benutzt doch eh keiner. ;)
IIRC hab ich mich an der Selektionsformel der Kalenderansicht orientiert.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendergröße
« Antwort #5 am: 20.12.06 - 15:44:35 »
Geiles ErrorHandling, Martin  ;D
  :P
Ist mehr als in so manchem Code, den ich hier gefunden habe.  :'(

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

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Kalendergröße
« Antwort #6 am: 20.12.06 - 16:54:23 »
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() )

In meiner Mail-DB:
Ohne Notices: 4.143 Dokumente mit 59,7 MB
Mit Notices: 4.228 Dokumente mit 60,4 MB
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Kalendergröße
« Antwort #7 am: 20.12.06 - 17:04:20 »
@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
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendergröße
« Antwort #8 am: 20.12.06 - 17:11:08 »
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

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Kalendergröße
« Antwort #9 am: 20.12.06 - 21:38:41 »
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).

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() )
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendergröße
« Antwort #10 am: 20.12.06 - 22:30:25 »
Das ist jetzt in keinster Weise kleinlich gemeint, ich bin vielmehr selber schon darüber gestolpert, dass selbst Isvalid nicht ausreichte. Daher folgender Vorschlag für einen Code, der bei mir seit 2003 in hunderten DBs nie einen Fehler brachte (was natürlich auch noch nichts zu sagen hat):

Code
If (doc.IsValid = True) And (Isarray (doc.Items)) True Then

Mit Torstens Posting scheint sich dies zu decken. Auch die Reihenfolge Isvalid / Isarray is wegen der Abarbeitung wichtig - wenn schon Isvalid auf die Nase fällt, würde Isarray erst recht scheitern, wird aber schon nicht mehr ausgeführt.

HTH,
Bernhard

PS: Aus der Frotzelei ist ja nun noch was wirklich wichtiges geworden  ;)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Kalendergröße
« Antwort #11 am: 21.12.06 - 11:06:36 »
So, das IsArray musst Du mir jetzt aber erklären. Das versteh ich nicht.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kalendergröße
« Antwort #12 am: 21.12.06 - 11:35:46 »
Ein gelöschtes Dokument (bzw. sein deletion stub) erkennt man auch daran, dass es schlicht keine Items mehr enthält. Stösst man auf solch ein "NotesDocument", ist mit diesem also etwas oberfaul.

Bernhard

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Kalendergröße
« Antwort #13 am: 21.12.06 - 17:55:48 »
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline aleroosen

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
Re: Kalendergröße
« Antwort #14 am: 11.01.07 - 10:53:35 »
Hallo zusammen,
vielen Dank für die ausführlichen Antworten. Ich habe als erstes den Vorschlag von Tode umgesetzt und mir eine persönliche Ansicht auf Grundlage der Besprechungsansicht erstellt und lasse mir dort für die Spalte Größe zusätzlich die Gesamtsumme anzeigen. Den von m3 aufgeführten Code werde ich auch noch testen, bin allerdings im Lotus Script nicht der fiteste, hoffe aber trotzdem damit zurechtzukommen.

Grüsse, Alex

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz