Guten Tag,
ich habe ein Problem mit dem u.a. Script.
Mir wurde von einem entfernten Kollegen enorm geholfen, der auch hier
im Forum aktiv ist. Grüße und Dank.
Das Script soll einen NOTES.INI Eintrag setzen. Das funktioniert.
Außerdem soll eine Reihe von Datenbanken in der Arbeitsbereichseite hinzugefügt werden. Aber nur, wenn die Rechte vorhanden sind.
Also ein INSTALL-Script für alle Mitarbeiter.
Jedoch erhalte ich einen "Overflow"-Fehler, weil "iCount" bis 32767 zählt.
Ist wird innerhalb des Error-Handling-Abschnitts hochgezählt.
Das Script springt nicht mehr in die Schleife zurück.
Wenn ich das "Resume" entferne, dann wird nur in 2er Schritten gezählt.
Aber ich will ja jede Datenbank haben.
Leider bin ich überhaupt kein Script-Profi. Vielleicht könnt ihr mir einen Tipp geben. Ich denke, dass es nur eine Kleinigkeit ist.
Vielen Dank.
Sub Click(Source As Button)
Dim oSession As New NotesSession
Dim oDb As NotesDatabase
Dim oUiWs As New NotesUiWorkspace
Dim sDb() As String ' String-Array für die div. Datenbanken
Dim sServer As String ' String für den Server
Dim iCount As Integer ' Integer zum counten in der Forall-Loop
Dim iArray As Integer ' Integer für die Größe des Array
Dim oReg As New NotesRegistration
Dim db As NotesDatabase
Dim sUser As String
Dim sMailServer As String
Dim sUsersServerChoice As String
Const VBMADMINDB$ = "ADMIN\ADMIN.NSF" 'Pfad und Filename der ADMIN-Datenbank
Set db =oSession.CurrentDatabase
sServer = db.server
Set oSession = New NotesSession
Set oUiWs = New NotesUiWorkspace
oReg.RegistrationServer = sServer
sUser = oSession.Username
Call oReg.getUserInfo(sUser,sMailServer)
Dim cMailServer As New NotesName(sMailServer)
'***************************************************************************
'User nach dem Server fragen / Hierbei wird als Default sein Mail-Server angeboten
'***************************************************************************
sUsersServerChoice = Inputbox$ ("Bitte wählen Sie den Server Ihrer Fililale:", _
"Server", cMailServer.common)
If sUsersServerChoice = "" Then Exit Sub 'Klickt der Nutzer auf Cancel wird die Funktion sofort verlassen
'***************************************************************************
'NOTES.INI Einträge setzen
'***************************************************************************
Call oSession.SetEnvironmentVar("AdminPfad",sUsersServerChoice+"!!"+VBMADMINDB,False)
'*******************************************************************************
'Prüfen, ob NOTES.INI Einträge korrekt gesetzt
'*******************************************************************************
iEnvironmentValidation = 1 'Validierungs-Variable initialisieren
If Not oSession.GetEnvironmentString("AdminPfad",False) = sUsersServerChoice+"!!"+VBMADMINDB Then iEnvironmentValidation = 0
'Wenn NOTES.INI Einträge nicht so ausgelesen werden, wie sie eigentlich geschrieben wurden: Abbrechen + Fehlermeldung
If Not iEnvironmentValidation = 1 Then
errormessage = |Die benötigten Einträge in der Datei NOTES.INI Ihres Clients konnten nicht korrekt gesetzt werden.
Bitte versuchen Sie erneut. Sollten Sie diese Fehlermeldung wieder auftreten, informieren Sie Ihren System-Administrator.|
Messagebox errormessage,16,"Admin-Pfad in der NOTES.INI falsch."
Exit Sub
Else
Print "Notes.ini Ihres Client wurde erfolgreich angepaßt."
End If
'***************************************************************************
'Datenbanken hinzufügen
'***************************************************************************
' In diesem Fall bietet sich kein Resume an, sondern hier sollte bei einem Fehlerfall zu einer Sprungmarke gewechselt werden.
On Error Goto ErrorHandling
' Und hier beginnen die Array-assignments für die Datenbanken
Redim sDb(25) ' Hier wird die Größe des Array fest definiert (Anzahl der DB - 1)
sDb(0) = "db1.nsf"
(...)
sDb(25) = "db2.nsf"
' Wieviel Elemente hat der Array - 1 (da ein Array immer mit 0 beginnt muss hier 1 subtrahiert werden)
iArray = Ubound(sDb())-1
' So jetzt beginnen wir die Schleife
For iCount = 0 To iArray
' Wenn jetzt der Fehler aufläuft, dann wird in der Sprungmarke weitergemacht.
Set oDb = oSession.getDatabase(sMailServer,sDb(iCount))
' Wenn die DB noch nicht offen ist => Öffnen
If oDb.isopen=False Then
Call oDb.open("","")
Else
' Super, die DB ist offen => dann fügen wir die Db dem Workspace hinzu...
Call oUiWs.addDatabase(sMailServer,sDb(iCount))
Print (oDb.title+" wurde Ihrer Arbeitsoberfläche hinzugefügt.")
End If
ErrorHandling:
' Der Trick ist die Nutzung der Sprungmarke. Wenn die DB nicht geöffnet werden darf, dann wird hierhin verzweigt.
' Somit wird die Schleife nicht verlassen und der Array hochgecountet.
iCount = iCount + 1
' Resume
Next
Print ("Die Datenbanken wurden erfolgreich hinzugefügt.")
' Msgbox "Ihr Client wurde erfolgreich konfiguriert!",64,"Konfiguration erfolgreich"
End Sub