Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: mind1 am 23.02.11 - 11:42:48

Titel: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: mind1 am 23.02.11 - 11:42:48
Hallo zusammen,

ich habe ein seltsames Phänomen auf einer neu aufgesetzten Maschine. Die ist in der version 8.5.2FP1 in der 64bit Version auf Win Server 2008 R2 installiert. Der Dienst läuft mit dem von IBM herausgegebenen Workaround für Win 2008 R2.
An verschiedenen Stellen funktioniert nun "getDocumentByKey" nicht mehr. Und zwar genau dann, wenn ich eine LS-Librory von einer Eingabemaske aus bediene. In der Librory hole ich mir ganz klassisch über eine View ein Document mit dieser Methode, bekomme aber anschließend, wenn ich es benutzen möchte, "Object Variable Not Set". Liegt die Datenbank auf einem 8.5.1FP4 (auch 64bit), funktioniert alles wunderbar. Der Fehler ist beliebig oft reproduzierbar. Alle zugehörigen Variablen (doc, view, key) sind in der Librory global definiert, in der auch der beschriebene Code ist.
Clean und das gesamte LS neu kompilieren halfen nichts. Das einzige, das half, war ein Workaround über "database.search()". Damit funktioniert alles wie geschmiert.

Also anstatt

set doc=view.getDocumentByKey(..)

dies:
set coll = db.search(...)
set doc=coll.getFirstDocument()

Ist das Problem bekannt? Oder gibt es dafür einen allgemeinen Fix?

Danke! Gruß, Bernd

Edit: Load updall -R habe ich auch schon versucht.
Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: koehlerbv am 24.02.11 - 00:53:28
1. Ich kann mir nicht vorstellen, dass das an der Server-Version liegt, vor allem, da Du lt. Deinem Post das ganze im Client alaufen lässt.
2. Ich kann mir nicht vorstellen, dass das an der Server-Version liegt, vor allem, da diese essentielle Funktion nicht nur von Dir in dieser Konstellation benutzt wird.
3. Was spricht der Debugger?
4. Was ist eine "Librory"??

Bernhard
Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: pram am 24.02.11 - 09:27:59
Poste mal etwas mehr Code.
Welche "Object Variable is not set" ? (->Debugger/Errorhandler)
Wie holst du dir die View?
Etwa über session.currentDatabase.getView?

Hat einer der Dominoserver vielleicht DIR-Links (siehe: http://atnotes.de/index.php/topic,49963.msg321066.html#msg321066 )

Gruß
Roland
Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: DAU-in am 24.02.11 - 10:29:22
hallo,

unter 8.5.2 gibt es bei uns im Haus ebenfalls Probleme mit Backendagenten und dem Zugriff über getdocumentByKey. Die genaue Konstellation kenn ich nicht, aber 8.5.2. ist nicht ganz bugfrei an dieser Stelle.

Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: CarstenB am 24.02.11 - 10:43:43
es gab unter 8.5.1 Probleme, da IBM dort die Funktionalität abgeändert hatte. Siehe hier:
http://www.edbrill.com/ebrill/edbrill.nsf/dx/about-that-issue-that-erik-brooks-found

Evtl. hat man es auch unter 8.5.2 noch nicht ganz im Griff.

Allerdings handelt es sich dann nicht um einen "Object variable not set" Fehler.

Gruß
Carsten
Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: kawie am 24.02.11 - 13:35:24
Dieser Fehler wurde bereits im 8.5.1 behoben (ich glaube FP3)

Und ganz recht "Object variable not set"  hatte damit nichts zu tun.


unter 8.5.2 gibt es bei uns im Haus ebenfalls Probleme mit Backendagenten und dem Zugriff über getdocumentByKey. Die genaue Konstellation kenn ich nicht, aber 8.5.2. ist nicht ganz bugfrei an dieser Stelle.

Habe ich bisher noch nichts von gehört. Gibt es diesbezüglich irgendeine Referenz oder ein Beispiel ?

Gruss

Kai
Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: DerAndre am 24.02.11 - 15:19:58
Was es geben kann ist

This collection has become invalid (http://www-01.ibm.com/support/docview.wss?uid=swg21424178)
Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: mind1 am 25.02.11 - 10:09:50
Hallo zusammen,

sorry für die späte Antwort! Bin etwas im Stress :-)

Ich versuche mal, die Fragen zu beantworten.

Es geht um ein Analyse-Tool, mit dem ich Auswertungen über eine Maske anwerfe. Die Maske "used" eine LS-Librory, die die Sub "setGlobals" enthält. Diese hat den Zweck, globale Einstellungen zu setzen, wie z.B. alle beteiligten Datenbanken und auch ein Dokument mit globalen settings. Das ist allerdings das, was ich mit der erwähnten Maske geöffnet habe und von der ich aus "setGlobals" starte. Das Doc ist natürlich vorher gespeichert.

Dies hier ist Teil der setGlobals. Die Variablen sind global in der Librory deklariert.
Code
	
Dim session As New NotesSession
Set db = session.CurrentDatabase
	Set vwGlobalSettings = db.GetView("vwGlobalSettings")
		'##########################################################################################################
	'Set docGlobalSettings = vwGlobalSettings.GetDocumentByKey(strDedicatedTo + "~" + strDominoServer, True)
	'Fix for Version 8.5.2 FP1
	Dim collTmp As NotesDocumentCollection
	Set collTmp = db.search({Form="frmGlobalSettings" & fldDedicatedTo="} + strDedicatedTo + {" & fldServerName="} + strDominoServer + {"},Nothing,0)
	Set docGlobalSettings = collTmp.getFirstDocument
	'##########################################################################################################

Die Ansicht "vwGlobalSettings" enthält in der ersten Spalte zwei Textfelder, die über die Tilde miteinander verbunden sind. (fldDedicatedTo + "~" + fldServerName, z.B. "0~CN=S01/O=COMPANY"). Also ganz simpel. Den Key habe ich schon ausgeprintet, der passt.
Wie man im Code erkennt, ist dort mein angesprochener Fix schon drin. Der bezieht sich ja auf die gleichen Felder und MUSS deshalb eigentlich auch das selbe Ergebnis liefern. Das tut er aber nur, wenn der Agent auf einem 8.5.1FP4 läuft und nicht auf einem 8.5.2FP1. Immer von der gleichen Workstation mit 8.5.2 ausgehend.

Läuft der Code auf dem 8.5.2er, kommt immer exakt dann der Fehler "Object Variable Not Set", wenn ich zum ersten Mal auf das Doc zugreifen möchte. Ich sehe mir das jetzt mal mit dem Debuger an.


Ich hatte bei der Umstellung von 8 auf 8.5 schon einmal ein ähnliches Problem. Damals sah der Domino-Server es bei Server-Agenten plötzlich etwas enger. An einigen Stellen hatte ich versehendlich ein und dieselbe NotesDatabase-Variable doppelt "gesettet", also ein mal in Initialize und ein mal in einer Sub. Beides natürlich mit derselben Datenbank, die dahinter steht (also zwei identische Zeilen in einem Agenten). Bei 8.5. war das ergebnis dann "Object Variable Not Set".

Gruß, Bernd
Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: kawie am 25.02.11 - 10:35:27
Hi Bernd,

ich habe versucht es irgendwie nachzustellen bekomme es aber nicht hin.
Habe eigentlich auch nur zwei ideen für dich.

1) Checken der Selektionsformel der View (Hast du sicher schon gemacht)
2) Ein
Code
Call notesView.Refresh
bevor du das Dokument holst.

Gruss

Kai

Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: mind1 am 25.02.11 - 11:09:09
Oh mann, nach unzähligen Printbefehlen ist mir nun der Fehler aufgefallen. Es gab eine zweite View mit dem gleichen Alias-Namen und anscheinend läuft die "Rangfolge" gleicher Namen bei der neuen Version nun anders herum ab. Zuvor nie als Problem aufgetaucht wird einem so eine Unaufmerksamkeit dann irgendwann doch zum Verhängnis.

Vielen Dank für alles!
Titel: Re: GetDocumentByKey läuft teilweise nicht auf 8.5.2FP1 64bit
Beitrag von: koehlerbv am 26.02.11 - 01:11:53
In diese Falle ist wohl schon jeder mal gestolpert  ;) Blödes Copy & Paste  ;D

Meine Frage ist aber noch unbeantwortet, Bernd: Was verstehst Du unter einer "Librory"??

Bernhard