Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Jürgen Schomann am 03.03.15 - 16:21:58

Titel: LotusScript: NotesSession.GetDatabase
Beitrag von: Jürgen Schomann am 03.03.15 - 16:21:58
Wenn ich folgenden Anweisung ausführe:

Set NotesDatabase = NotesSession.GetDatabase(server$, dbfile$, createonfail)

mit dem Parameter createonfail = False und die Datenbank ist nicht vorhanden, wird mir trotzdem ein Datenbankobjekt und nicht wie in der Designer-Hilfe beschrieben Nothing zurückgeben.
Dazu kommt noch wenn ich den Parameter dbfile$ leer lasse erhalte ich auch ein Datenbankobjekt wobei NotesDatabase.FilePath und NotesDatabase.Server jeweils gleich sind also die Serverangabe.
NotesDatabase.IsOpen ist in beiden Fällen richtig = False aber eine Prüfung nach o. g. Anweisung auf Nothing für dasDatenbankobjekt scheint nicht zu funktionieren oder verstehe ich hier etwas falsch?
Titel: Re: LotusScript: NotesSession.GetDatabase
Beitrag von: Ralf_M_Petter am 04.03.15 - 10:12:24
Kann ich so nicht bestätigen. Wenn ich folgenden Agent ausführe, wird bei mir Nothing ausgegeben:

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db=session.Getdatabase("", "NV.nsf", false)
   If db Is Nothing Then
      Print"Nothing"
   else
      Print db.Isopen
   End if
End Sub

Wobei NV.nsf nicht vorhanden ist.
Titel: Re: LotusScript: NotesSession.GetDatabase
Beitrag von: Jürgen Schomann am 04.03.15 - 12:54:15
Wenn man den Parameter createonfail direkt angibt läuft es richtig wenn man aber eine Variable benutzt verhält es sich so wie ich beschrieben habe.

Aber auch wenn man den Parameter direkt mit 'False' angibt wird das Datenbankobjekt nicht mit Nothing überschrieben wenn es vorher mit einem anderen Datenbankobjekt belegt war.
Titel: Re: LotusScript: NotesSession.GetDatabase
Beitrag von: Peter Klett am 04.03.15 - 13:02:55
Dann schreib doch ein Set db = Nothing in die Zeile darüber ...
Titel: Re: LotusScript: NotesSession.GetDatabase
Beitrag von: Jürgen Schomann am 04.03.15 - 13:05:28
Das ist richtig aber ändert ja nichts an der Fehlfunktion. Außerdem muss ein Rückgabewert immer gesetzt werden je nach Ergebnis.
Titel: Re: LotusScript: NotesSession.GetDatabase
Beitrag von: Keydins am 04.03.15 - 13:32:35
Wo steht denn, dass man den Parameter [createonfail] als Variable übergeben darf?

Ich vermute mal, dass das so nicht vorgesehen ist und der Parameter in dem Fall einfach ignoriert wird.

Gruß Dirk
Titel: Re: LotusScript: NotesSession.GetDatabase
Beitrag von: Ralf_M_Petter am 04.03.15 - 14:17:07
Wo steht denn, dass man den Parameter [createonfail] als Variable übergeben darf?

Ich vermute mal, dass das so nicht vorgesehen ist und der Parameter in dem Fall einfach ignoriert wird.

Gruß Dirk

Prinzipiell steht bei keinem Paramter, dass man diesen als Variable übergeben darf und trotzdem geht es. Ich habe es jetzt bei mir nocheinmal probiert und es sieht eindeutig nach einen Bug aus. Ich würde einen PMR eröffnen.
Titel: Re: LotusScript: NotesSession.GetDatabase
Beitrag von: Tode am 05.03.15 - 09:59:50
Ist definitiv ein Bug: Habe es grade mal ausprobiert:
Wenn man den Code so ändert, funktioniert es auch wieder:
Code
Dim blnCreateOnFail as Boolean
blnCreateOnFail = False
Set db=session.Getdatabase("", "NV.nsf", CBool( blnCreateOnFail  ) )

>>>> PMR
Titel: Re: LotusScript: NotesSession.GetDatabase
Beitrag von: Ralf_M_Petter am 05.03.15 - 10:03:02
@Thorsten. Danke für den Workaround