Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Tode am 27.02.07 - 15:39:59

Titel: Regel- Ordner: Object Variable not set
Beitrag von: Tode am 27.02.07 - 15:39:59
Ich habe hier in einem Regel- Ordner bei einem User folgendes Problem:

Client: 6.5.5, Mail- Schablone, Server 6.5.5

Erstellt er eine Regel, geht alles wunderbar.
Öffnet er sie ein zweites Mal, geht es auch noch, beim dritten Aufruf kommt dann "Object Variable not set".

Und zwar in diesem Code
Code
Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
	
	Dim oldrule As notesdocument
	Dim uidoc As notesuidocument
	Dim ruledocs As notesdocumentcollection
	
	Set ruledocs = source.documents
	Set oldrule = ruledocs.getfirstdocument
	
	If oldrule.HasItem("RuleType")  And oldrule.GetItemValue("RuleType")(0) = "BU"  Then
		If oldrule.GetItemValue("RuleType")(0) = "BU" Then
			Dim JunkRule As New JunkRules 
			Call JunkRule.ManageList() 
		End If				
	Else
		If (ws.dialogbox("Mailrule", True, True,True, False, False, False,"Regel bearbeiten",oldrule, True, True)) Then
		'The user clicked on OK, process their information in the form of a new filter document
			Call oldrule.save(True, False,True)
		End If
	End If
	ws.viewrefresh
	continue = False
End Sub

An der Stelle:
   If oldrule.HasItem("RuleType")  And oldrule.GetItemValue("RuleType")(0) = "BU"  Then

Problem ist:
- Source ist gefüllt
- ruledocs ist eine Collection mit Count = 1
- oldrule ist Nothing

Und das verstehe ich nicht.. wie kann ein getfirstdocument schief laufen, wenn ich eine Collection habe, die auf dem aufbaut, was ich SEHE, und nach dem Fehler sehe ich das Dokument immer noch, nur "getfirstdocument" kriegt das Dokument nicht...

Hat jemand ne mögliche Erklärung hierfür ?

Thanx
Tode
Titel: Re: Regel- Ordner: Object Variable not set
Beitrag von: webchild am 01.02.08 - 17:03:13
Hallo Tode,

hast du zu diesem Problem irgendwelche Infos erhalten? Ich stehe nämlich vor einem ähnlichen Problem.

Danke, Krista
Titel: Re: Regel- Ordner: Object Variable not set
Beitrag von: ata am 01.02.08 - 21:30:15
... so wie ich das sehe, geht es nicht um's doc, sondern um das Item:

Zitat
If oldrule.HasItem("RuleType")  And oldrule.GetItemValue("RuleType")(0) = "BU"  Then

... du prüfst, ob es das Item gibt und ob der erste Wert darin "BU" ist - und hier scheint ein Hund begraben. Es werden beide Prüfungen gemacht, und nicht nach der ersten abgebrochen, weil es das Item nicht gibt. Gibt es dieses nicht, läufst du im zweiten Zweig in ein Object Variable not set , da es das Item nicht gibt...

Die zwei Prüfungen müssen hintereinander ablaufen - dann siehst du vermutlich weiter...

... oder du prüfst nur mit

If oldRule.RuleTYpe(0) = "BU" Then...


Toni ::)
Titel: Re: Regel- Ordner: Object Variable not set
Beitrag von: koehlerbv am 02.02.08 - 01:48:34
Nö, Toni, das kann es nicht sein.

If oldrule.HasItem("RuleType")  And oldrule.GetItemValue("RuleType")(0) = "BU"  Then

Der erste Teil prüft ab, ob es das Item gibt. Wenn nicht, passiert auch nichts. Der zweite Teil
oldrule.GetItemValue("RuleType")(0)
gibt immer einen Wert zurück und ist aquivalent zu
oldrule.RuleType (0)

Ob es dabei das Item gibt, ist egal. Das Ergebnis der gesamten Terms wäre True oder False - abhängig von den Bedingungen und ihrer Erfüllung. Ein "object variable not set" kann es nicht werfen - es sei denn, oldrule ist kein gültiges Objekt.

Davon abgesehen: Diese Sache ist sehr dubios, wie 6.5.5 an anderen Stellen auch. Ich habe daher diese Version auf keiner meiner vier Boxen mehr installiert.

Fragen an Torsten bzw. Krista:
Wie verhält sich das, wenn das Mailfile gegen eine 6.5.6er Version ausgetauscht wird?
Wie verhält sich das gleiche Mailfile unter einer anderen Client-Version?
Was passiert, wenn man
ruledocs.getfirstdocument
gegen
rulecocs.GetNthDocument (1)
austauscht? Da da ja irgendwo der Wurm begraben liegt, sollte dies eigentlich nichts ändern, aber ... das Ergebnis würde mich interessieren.

Bernhard
Titel: Re: Regel- Ordner: Object Variable not set
Beitrag von: ata am 04.02.08 - 10:02:41
@Bernhard,

... ich hatte den entsprechenden Fall genaus so in einer DB. In gestaffelten Verweigungen hatte ich das Problem dann nicht mehr - kann aber jetzt nicht mehr sagen, in welcher Version das war...

Toni
Titel: Re: Regel- Ordner: Object Variable not set
Beitrag von: ata am 04.02.08 - 10:13:31
... wer lesen kann ist klar im Vorteil  :-X :-[

Zitat
oldrule ist Nothing

... ich habe das Konstrukt auf meiner 6er-Version getestet - funktioniert wie Bernhard dies auch beschreibt - allerdings habe ich keinen 6.55 mehr...

Toni

*** edit ***

... könnte es sich um einen Lösch-Stub handeln?