Domino 9 und frühere Versionen > ND8: Entwicklung
[Erledigt] Klasse merkt sich NotesDocument-Daten nicht
gstueb:
Hallo,
wo ist der Fehler in nachfolgendem Code?
Ich will Daten aus einer zentralen Anwender-DB über eine Klasse bereitstellen. Wenn ich den Agenten
--- Code: ---Dim BI As New TestClass("X1234XX") ' Vorhandener User
Print BI.Username
--- Ende Code ---
ausführe, wird mit aber "nix" zurückgegeben. Im Debugger sehe ich, dass beim Eintritt in die Property Get mydoc = nothing ist. Warum ist das so?
Danke & Gruß,
Gregor
--- Code: ---' ##################################################
' TestClass
' ##################################################
Class TestClass
Private mydoc As NotesDocument
Sub New (strKey As string)
Dim session As New NotesSession
Dim strServer As String
Dim strAnwinfo As String
Dim view As NotesView
Dim doc As NotesDocument
Dim db As NotesDatabase
strServer = session.Currentdatabase.Server
strAnwinfo = "eigene\anwenderdb.nsf"
Set db = New NotesDatabase(strServer, strAnwinfo)
Set view = db.GetView("(UserId)")
Set doc = View.GetDocumentByKey ( UCase(strKey) )
Set mydoc = doc
If Not mydoc Is Nothing Then Print "==> " & mydoc.Notes_Name(0) ' wird ausgegeben
End Sub
Property Get Username
If mydoc Is Nothing Then
Username = "nix" ' Das hier wird zurückgegeben
Else
Username = mydoc.Notes_Name(0)
End If
End Property
End Class
--- Ende Code ---
[Edit]
Hat sich erledigt. Die Referenz auf mydoc wurde ja zerstört, sobald ich das Sub New verlasse. Wenn ich db für die ganze Klasse und nicht nur für das sub new deklariere, funktioniert es.
marschul:
Oder Du hättest auf doc verzichtet und mydoc direkt über View.GetDocumentByKey instanziert.
Was mich wundert: Die Referenz doc geht ja mit dem Verlassen von New auch flöten. Dass das generelle Deklarieren von db geholfen hat, verstehe ich nicht ganz...
ghostmw:
Moin,
ist aber leider so.
Wenn das NotesDatabase-Objekt lokal (in einer Sub oder Funktion) definiert und zugewiesen ist, gehen alle davon erstellten "Unterobjekte" flöten, nach dem Verlassen der Sub / Funktion.
Also NotesViews, NotesDocumentCollection, NotesDocument, etc.
Gruß
Marco
marschul:
Hallo Marco,
danke für den Hinweis - wieder etwas dazugelernt :)
Gruß
Marco
koehlerbv:
Nur mal als Nebenbemerkung: Dieses "Phänomen" (was simpel erklärbar ist) betrifft nicht nur Classes und wurde hier schon sehr tiefschürfend erwähnt.
"Zieh dem "Kind" den Vater / die Mutter weg, und das Kind strauchelt". Das ist das Grundprinzip. Und es lässt sich umgehen.
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln