Autor Thema: [Erledigt] Klasse merkt sich NotesDocument-Daten nicht  (Gelesen 2259 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