Hallo zusammen,
ich habe mal wieder einen komischen Effekt, den ich mir irgendwie nicht erklären kann.
Szenario: Ich bastel an einer Inventurdatenbank, mit der so ziemlich sämtliche Infos zu allen Datenbanken auf allen Servern gesammelt werden. Also gehe ich mit Hilfe des NotesDbDirectory-Objektes alle Datenbanken eines Servers durch. Auch solche, bei denen ich keinen Zugriff habe (das ist auch ok so). Zu allen Datenbanken werden noch zusätzliche Informationen in einer anderen Datenbank gesucht....
Nun zum eigentlichen Problemchen: Bei folgendem Code wird durch die Zeile "Set db2 = s.GetDatabase(s.CurrentDatabase.Server, "names.nsf", False)" das Objekt "db1" auf Nothing gesetzt. Dieser Effekt tritt nur bei Datenbanken auf, bei denen man keinen Zugriff hat. Zum Test habe ich mir eine Datenbank "noaccessdb.nsf" angelegt.
| |
| Dim db1 As NotesDatabase |
| Dim db2 As NotesDatabase |
| Dim dbdir As NotesDbDirectory |
| Dim s As NotesSession |
| Dim str_noaccessdb As String |
| |
| Set s = New NotesSession |
| Set dbdir = New NotesDbDirectory(s.CurrentDatabase.Server) |
| str_noaccessdb = "noaccessdb.nsf" |
| |
| Set db1 = dbdir.GetFirstDatabase(DATABASE) |
| Do Until db1 Is Nothing |
| |
| If db1.FilePath = str_noaccessdb Then |
| |
| If db1.IsOpen = False Then |
| On Error 4060 Resume Next |
| Call db1.Open(db1.Server, db1.FilePath) |
| If Err = 4060 Then |
| Print Error |
| Err = 0 |
| End If |
| On Error Goto 0 |
| End If |
| |
| If db1 Is Nothing Then |
| Msgbox "db1 is nothing" |
| Else |
| Msgbox "db1 is NOT nothing" |
| End If |
| |
| Set db2 = s.GetDatabase(s.CurrentDatabase.Server, "names.nsf", False) |
| |
| If db1 Is Nothing Then |
| Msgbox "db1 is nothing" |
| Else |
| Msgbox "db1 is NOT nothing" |
| End If |
| |
| End If |
| |
| Set db1 = dbdir.GetNextDatabase |
| Loop |
| |
Dat is doch nich normal, oder?
Gruß
Johnson
PS: Ich nutze Notes 7.0.3 auf einer Windows XP SP3 Büchse