Guten Morgen allerseits,
ich schreibe an einem Agenten, der verschiedene Datenbanken auf einem Server öffnet und dort Dokumente ausliest.
Natürlich wird versucht, die Datenbank über die Funktion NotesDatabase.Open([ServerName], [FilePath], False) zu öffnen.
Zum Abfangen von Fehlern füge ich zuvor ein "On Error lsERR_NOTES_DBNOACCESS Resume Next" ein und prüfe nachträglich auf diesen Fehler. Dabei ist mir aufgefallen, dass der User in einigen Datenbanken auf "No Access" steht, aber dennoch die Datenbank öffnen kann, da eben die Eigenschaften "Read public documents" und/oder "Write public documents" gesetzt ist. Somit wird der Fehler lsERR_NOTES_DBNOACCESS folgerichtig nicht geworfen:
%INCLUDE "lsxbeerr.lss"
Sub Initialize
Dim db As NotesDatabase
Dim s As NotesSession
Dim str_filepath As String
Dim str_server As String
' initialize
Set s = New NotesSession
str_filepath = "db.nsf"
str_server = "CN/OU/O"
' try to get database
On Error lsERR_NOTES_DBNOACCESS Resume Next
Set db = s.GetDatabase(str_server, str_filepath, False)
' check database
If db Is Nothing Then
MessageBox "Could not get database!"
Exit Sub
End If
' check access level
If db.IsOpen Then
If db.CurrentAccessLevel = ACLLEVEL_NOACCESS Then
Error lsERR_NOTES_DBNOACCESS
End If
End If
' check error
If Err = lsERR_NOTES_DBNOACCESS Then
MessageBox "Zonk!" & Chr(10) & Error
Err = 0
End If
End Sub
Die Funktion Error gibt mir ein "User-defined error" zurück!
If errNumber is a LotusScript-defined error number, this Error statement simulates a LotusScript error. If it is not, this statement creates a user-defined error. When the Error statement is executed, LotusScript behaves as if a run-time error has occurred. If no error handling is in effect (set up by an On Error statement) for the specified error, execution ends and an error message is generated.
The error message generated is msgExpr if it is specified. If msgExpr is omitted, the error message is the LotusScript error message for the specified error number, if that number designates a LotusScript error. Otherwise the message "User-defined error" is generated.
User-defined errors must be in the range 1000-1999. Errors less than 1000 are reserved for the LotusScript language; the constant ErrLast is the highest error number implemented. Errors greater than 1999 are reserved for Lotus products that use LotusScript.
Ein kleiner Code zum testen:
%INCLUDE "lsxbeerr.lss"
Sub Initialize
Error lsERR_NOTES_DBNOACCESS
End Sub
Wieso bringt Notes mir hier ein "User-defined error"