Autor Thema: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht  (Gelesen 2302 mal)

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
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

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


[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.
« Letzte Änderung: 15.11.11 - 23:31:25 von gstueb »

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht
« Antwort #1 am: 16.11.11 - 07:31:05 »
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...
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline ghostmw

  • Aktives Mitglied
  • ***
  • Beiträge: 201
  • Geschlecht: Männlich
    • BELOS - Raum+Ressourcenmanagement unter Lotus Notes
Re: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht
« Antwort #2 am: 16.11.11 - 07:57:06 »
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
« Letzte Änderung: 16.11.11 - 08:01:50 von ghostmw »
Grüße
Marco Weller
Lotus Domino / Lotus Notes seit 1996 (ab 4.5x)

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht
« Antwort #3 am: 16.11.11 - 08:46:00 »
Hallo Marco,

danke für den Hinweis - wieder etwas dazugelernt :)

Gruß
Marco
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht
« Antwort #4 am: 17.11.11 - 01:01:02 »
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

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Re: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht
« Antwort #5 am: 17.11.11 - 11:34:43 »
"Zieh dem "Kind" den Vater / die Mutter weg, und das Kind strauchelt". Das ist das Grundprinzip. Und es lässt sich umgehen.

Hallo Bernhard,

ich nehme an, es lässt sich umgehen, indem ich a) dem Kind die Eltern nicht wegziehe, oder indem ich b) die Daten kopiere, statt nur die Referenz zu kopieren...

Kannst Du mir ein paar Stichworte oder einen Link nennen, damit ich mir die alten Threats mal durchlesen kann?

Danke & Gruß,
Gregor

Offline ghostmw

  • Aktives Mitglied
  • ***
  • Beiträge: 201
  • Geschlecht: Männlich
    • BELOS - Raum+Ressourcenmanagement unter Lotus Notes
Re: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht
« Antwort #6 am: 17.11.11 - 11:40:07 »
Sorry ... muss dich leider enttäuschen.

ByVal klappt nur bei Skalaren (String, Long, etc.) , nicht bei Klassen und Objekten.

Wenn du das meintest, oder kopierts du die Informationen aus den Feldern raus ?
Grüße
Marco Weller
Lotus Domino / Lotus Notes seit 1996 (ab 4.5x)

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Re: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht
« Antwort #7 am: 17.11.11 - 11:47:39 »
Sorry ... muss dich leider enttäuschen.
ByVal klappt nur bei Skalaren (String, Long, etc.) , nicht bei Klassen und Objekten.
Wenn du das meintest, oder kopierts du die Informationen aus den Feldern raus ?

Ich meinte, dass es meines Wissens nach generell ja nur die beiden Möglichkeiten Referenz oder Kopie geben kann. Dass eine Kopie bei einem NotesDocument nur von Hand geht, und nicht "ByValue", weiß ich.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz