Hallo zusamen,
ich versuche mich grade an einer Lösung für die automatische Anpassug der Quoten und Warnwerte der Maildatenbanken unserer Mitarbeiter. Das Auslesen der aktuellen Werte und die Berechnung der neu einzusetzenden Werte funktioniert schon, allerdings klappt das Schreiben der neuen Werte in die Datenbank leider (noch) nicht.
Das Verfahren läuft zur Zeit über eine Maske, in der der zu bearbeitende Server gewählt wird. Das Skript trägt zu Dokumentationszwecken alle relevanten Daten in die Maske ein, so dass man die Anpassungen bei Bedarf nachvollziehen kann.
Laut Beschreibung der Noteshilfe muss die Datenbank nicht geöffnet werden (
SizeQuota property: ... The database does not need to be open to use this property).
Starte ich den Prozess über den Aktionsschalter in der Maske, erhalte ich die Fehlermeldung '
Database SERVER!!mail\maildatenbank has not been opend yet' (SERVER und maildatenbank sind Platzhalter, dort stehen in der Fehlermeldung die korrekten Angaben) sobald das Script die Zeile '
db.SizeQuota = quotaSize60 * 1024' erreicht.
Der Notesuser, mit der der Prozess gestartet wird, hat auf allen Servern und den Maildatenbanken administrative Rechte.
Hat jemand eine Idee warum das Verfahren nicht wie erwartet funktioniert?
Gruß Dirk
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Dim nServer As String
Dim count As Integer
Dim nSize As Double
Dim dbSizeAkt As Double
Dim qoutaSizeAkt As Double
Dim warnSizeAkt As Double
Dim quotaSize60 As Double
Dim warnSize85 As Double
Dim nSum As Double
Dim gsum As Double
nServer = uidoc.FieldGetText( "NotesServer" )
nSize = 0
Dim dbdir As New NotesDbDirectory(nServer)
Dim db As NotesDatabase
Set db = dbdir.GetFirstDatabase(DATABASE)
While Not(db Is Nothing)
If (Instr(Lcase$(db.FilePath), "mail\" ) > 0) And Not (Instr(Lcase$(db.FilePath), "archive" ) > 0)Then
count = count + 1
nSize = nSize + db.Size
dbSizeAkt = (db.Size / 1024 / 1024)
quotaSize60 = Round((dbSizeAkt * 100 / 65),-1)
If db.SizeQuota > 0 Then
qoutaSizeAkt = (db.SizeQuota / 1024)
If db.SizeWarning > 0 Then
warnSizeAkt = (db.SizeWarning / 1024)
End If
Else
qoutaSizeAkt = 0
warnSizeAkt = 0
End If
If quotaSize60 < 500 Then
quotaSize60 = 500
Elseif qoutaSizeAkt < quotaSize60 Then
quotaSize60 = qoutaSizeAkt
End If
warnSize85 = Round((quotaSize60 * 0.85),-1)
Call uidoc.FieldAppendText( "NameDB", Ucase(Strtoken(db.FileName,".",1)) & Chr(10))
Call uidoc.FieldAppendText( "Mitarbeiter", db.Title & Chr(10))
Call uidoc.FieldAppendText( "FileSize", db.Size & Chr(10))
Call uidoc.FieldAppendText( "qSize", qoutaSizeAkt & Chr(10))
Call uidoc.FieldAppendText( "wSize", warnSizeAkt & Chr(10))
Call uidoc.FieldAppendText( "qSize60", quotaSize60 & Chr(10))
Call uidoc.FieldAppendText( "wSize85", warnSize85 & Chr(10))
db.SizeQuota = quotaSize60 * 1024 '<--
db.SizeWarning = warnSize85 * 1024 '<--
End If
Set db = dbdir.GetNextDatabase
Wend
nSum = nSize / 1024
nSum = nSum / 1024
nSum = nSum / 1024
gsum = nSum
Call uidoc.FieldSetText( "SummeDB", Cstr(nSum))
Call uidoc.FieldSetText( "ges_SummeDB", Cstr(gSum))
Call uidoc.FieldSetText( "ges_AnzahlDB", Cstr(count))
Call uidoc.FieldSetText( "lo2_datum", Cstr(Today))
Call uidoc.FieldSetText( "lo2_uhrzeit", Cstr(Time))
Call uidoc.Refresh
End Sub