Autor Thema: Regel- Ordner: Object Variable not set  (Gelesen 2061 mal)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Regel- Ordner: Object Variable not set
« 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
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline webchild

  • Junior Mitglied
  • **
  • Beiträge: 94
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Regel- Ordner: Object Variable not set
« Antwort #1 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
Grüße, Krista

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Regel- Ordner: Object Variable not set
« Antwort #2 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 ::)
Grüßle Toni :)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Regel- Ordner: Object Variable not set
« Antwort #3 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

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Regel- Ordner: Object Variable not set
« Antwort #4 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
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Regel- Ordner: Object Variable not set
« Antwort #5 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?
« Letzte Änderung: 04.02.08 - 10:15:44 von ata »
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz