Hallo zusammen,
momentan bin ich ein wenig verwirrt, denn mein Notes Client macht im Moment eine etwas komische Aktion.
Ich habe einen Agent programmiert, welcher eine Funktion aus einer Script Lib aufruft.
In der Lib gehe ich auf einem Server das DB Directory durch und greife auf die ACL der DBen zu. Da schaue ich mir ein paar Einträge an und logge etwas.
Soweit so gut. Das klappt auch alles.
Wenn das Skript nun auf das "Exit sub" kommt, bekomme ich die "red box of death" und sicherheitshalber noch einen NSD hinterher.
Ich habe direkt vor dem "exit sub" eine Messagebox, die auch noch einwandfrei ausgegeben wird. Danach schepperts.
Das ganze passiert auf einem 6.5.4er als auch auf einem 6.5.5er Notes Client.
Das steht in meinem Agenten:
Use "slProzesses"
und im Initialize das hier:
Call getACLs()
In der getACLs kommen dann halt ein paar getDatabase, getDocumentbyKey usw. Was ja auch funktioniert.
Selbst wenn ich während der Laufzeit einfach mal "Strg + Unterbr" drücke, kommt die Box und der NSD.
Ich habe auch schon mal "Recompile all Lotus Script" gemacht, den Agenten erneuert und die Lib kopiert. Nichts bringt was.
Hat jemand eine Idee was das sein könnte oder habe ich da grob fahrlässig bei der Programmierung was übersehen?
Hier mal die Funktion getACLs, wenn die Kugel gerade nicht zur Hand ist
Sub getACLS()
On Error Goto error_handling
Dim session As New NotesSession
Dim dbCur As NotesDatabase
Dim dbNAB As NotesDatabase
Dim viewServers As NotesView
Dim viewUsers As NotesView
Dim noteUser As NotesDocument
Dim noteServer As NotesDocument
Dim dbDIR As NotesDbDirectory
Dim dbTemp As NotesDatabase
Dim aclTemp As NotesACL
Dim aclEntry As NotesACLEntry
Set dbCur = session.CurrentDatabase
Set dbNAB = session.GetDatabase(dbCur.Server, "names.nsf")
Set viewUsers = dbNAB.GetView("($Users)")
Set viewServers = dbNAB.GetView("($Servers)")
Set noteServer = viewServers.GetFirstDocument
While Not (noteServer Is Nothing)
Set dbDir = New NotesDbDirectory(noteServer.ServerName(0))
Set dbTemp = dbDir.GetFirstDatabase(DATABASE)
While Not (dbTemp Is Nothing)
Print dbTemp.Title
Call dbTemp.Open("", "")
Set aclTemp = dbTemp.ACL
Set aclEntry = aclTemp.GetFirstEntry
While Not (aclEntry Is Nothing)
Set noteUser = viewUsers.GetDocumentByKey(aclEntry.Name)
If Not (noteUser Is Nothing) Then
If Lcase(noteUser.Form(0)) = "person" Then
Print "Processing " + aclEntry.name
End If
Else
Print aclEntry.Name + " not found"
End If
Set aclEntry = aclTemp.GetNextEntry(aclEntry)
Wend
next_db:
Set dbTemp = dbDir.GetNextDatabase()
Wend
Set noteServer = viewServers.GetNextDocument(noteServer)
Wend
ende:
Messagebox "Exit sub..."
Exit Sub
error_handling:
If Err = 4060 Then
Print "Could not open DB"
Resume next_db
Else
Print "###### " + "ERL: " & Cstr(Erl) & " - ERR: " & Cstr(Err) & " - ERROR: " & Error & " - " & Cstr(Getthreadinfo(1))
Resume ende
End If
End Sub
Alles anzeigen