Autor Thema: Objektvariable not Set  (Gelesen 3282 mal)

Offline Thunder

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 728
  • Geschlecht: Männlich
Objektvariable not Set
« am: 23.10.03 - 14:02:34 »
Hallo,

kleines Scriptproblem:
Ich habe dieses Script aus einem Forum entnommen (funzt auch ganz gut) und wollte es etwas erweitern.Leider läuft das nicht so ganz, wie ich mir das gedacht habe-ist aber bestimmt nur eine Kleinigkeit.
Das Script schreibt einfach nur Einträge in den aktuellen Kalender.
Ich habe eine Maske, womit man Urlaub, Gleittage, sonstige Abwesenheiten beantragen kann. Diese möchte ich in den Kalender übernehmen. Es gibt also 3x die Felder VOM - BIS mit natürlich anderer Bezeichnung.Ich dachte mir also - kopiere das Script noch einmal drunter, ändere es etwas ab und alles ist gut. Er wirft mir aber leider den Fehler ' Objektvariable not Set' raus. Was muß ich noch definieren ?

Sub Click(Source As Button)
     Dim Session As New NotesSession
     Dim Workspace As New NotesUIWorkspace
     Dim TheDocument As NotesDocument
     Dim db As notesDatabase
     Dim UserName As String
     
     Set UIDoc = Workspace.CurrentDocument
     Set TheDocument = UIDoc.Document
     
     Set db = New NotesDatabase("", "")
' Open user's mail database
     db.openmail
     
' Notestime variabels
     Dim StartDatum As String
     Dim EindDatum As String
     

' Urlaub ------------------------------------------------------------

' Get variabels from document
     StartDatum = Uidoc.FieldGetText("gA_vom_1")
     EindDatum = Uidoc.FieldGetText("gA_bis_1")
     
     
'Conversion for string to datefield
     Set datum1 = New NotesDateTime (StartDatum)
     Set datum2 = New NotesDateTime (EindDatum)
     Call datum2.AdjustDay( 1 )
     
     Startdatum = Cstr(datum1.DateOnly)
     Einddatum = Cstr(datum2.DateOnly)
     
'The do while places the calendar item everyday unit startdate and endate are the same.
     Do While StartDatum <> EindDatum
         
'Call calender
          Dim CalendarEntry As New NotesDocument(db)
          Dim rtitem As New NotesRichTextItem(CalendarEntry, "Body")
          Call rtitem.AppendText("Voor details bekijk bijgesloten verlof verzoek")
          Call rtitem.AddNewline(1)
          Call rtitem.AppendDocLink(TheDocument, "Verlof")
          UserName = Session.CommonUserName
         
          CalendarEntry.Form = "Appointment"
          CalendarEntry.Principal = UserName
         
          CalendarEntry.Chair = Session.UserName
          CalendarEntry.ExcludeFromView = "D"
          CalendarEntry.OrgTable = "CO"
          CalendarEntry.SequenceNum = 1
          CalendarEntry.Subject = "Urlaub (Zina)"
         
         
'Appointment Type 4 = Reminder , 3 = meeting, 2 = event, 1 = anniversary, 0 = Personal
'Place string in calender fields
          CalendarEntry.AppointmentType = "4"
          CalendarEntry.StartDate = Cdat(StartDatum)
          CalendarEntry.StartDateTime = Cdat(StartDatum)
          CalendarEntry.CalendarDateTime = Cdat(StartDatum)
          CalendarEntry.EndDateTime = Cdat(StartDatum)
         
          Call CalendarEntry.save(True, True)
          Call datum1.AdjustDay( 1 )
          Startdatum = Cstr(datum1.DateOnly)
          Einddatum = Cstr(datum2.DateOnly)
     Loop
     
' Gleittage  -----------------------------------------------------------------------------------------
     
     
' Get variabels from document
     StartDatum = Uidoc.FieldGetText("gA_vom_4")
     EindDatum = Uidoc.FieldGetText("gA_bis_4")
     
     
'Conversion for string to datefield
     Set datum1 = New NotesDateTime (StartDatum)
     Set datum2 = New NotesDateTime (EindDatum)
     Call datum2.AdjustDay( 1 )
     
     Startdatum = Cstr(datum1.DateOnly)
     Einddatum = Cstr(datum2.DateOnly)
     
'The do while places the calendar item everyday unit startdate and endate are the same.
     Do While StartDatum <> EindDatum
         
'Call calender
          Call rtitem.AppendText("Voor details bekijk bijgesloten verlof verzoek")
          Call rtitem.AddNewline(1)
          Call rtitem.AppendDocLink(TheDocument, "Verlof")
          UserName = Session.CommonUserName
         
          CalendarEntry.Form = "Appointment"
          CalendarEntry.Principal = UserName
         
          CalendarEntry.Chair = Session.UserName
          CalendarEntry.ExcludeFromView = "D"
          CalendarEntry.OrgTable = "CO"
          CalendarEntry.SequenceNum = 1
          CalendarEntry.Subject = "Gleittage (Zina)"
         
         
'Appointment Type 4 = Reminder , 3 = meeting, 2 = event, 1 = anniversary, 0 = Personal
'Place string in calender fields
          CalendarEntry.AppointmentType = "4"
          CalendarEntry.StartDate = Cdat(StartDatum)
          CalendarEntry.StartDateTime = Cdat(StartDatum)
          CalendarEntry.CalendarDateTime = Cdat(StartDatum)
          CalendarEntry.EndDateTime = Cdat(StartDatum)
         
          Call CalendarEntry.save(True, True)
          Call datum1.AdjustDay( 1 )
          Startdatum = Cstr(datum1.DateOnly)
          Einddatum = Cstr(datum2.DateOnly)
     Loop
     
End Sub

Notes Server: 9.0.1 FP10
Workstations: 9.0.1 (ca.350)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #1 am: 23.10.03 - 14:04:27 »
Was sagt der Debugger ?

Offline g202e

  • Senior Mitglied
  • ****
  • Beiträge: 361
  • Geschlecht: Männlich
  • Was nicht tötet, härtet ab!
Re:Objektvariable not Set
« Antwort #2 am: 23.10.03 - 14:04:57 »
Wie wär's mit SESSION?
Domino 5.0.11/LN 5.011(german)/NT4 + SP6a

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #3 am: 23.10.03 - 14:08:53 »
Was soll mit Session sein ?

Offline Thunder

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 728
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #4 am: 23.10.03 - 14:14:52 »
Das Script funzt wiegesagt bis zu den Gleittagen.
Wenn ich die Geschichte durch den Debugger laufen lasse
läuft er genau zu der Zeile -
    Call rtitem.AppendText("Voor details bekijk bijgesloten verlof verzoek")
im Gleittage-Abschnitt und sagt "Objekt variable not Set "
gruselig
Notes Server: 9.0.1 FP10
Workstations: 9.0.1 (ca.350)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #5 am: 23.10.03 - 14:24:42 »
Schau Dir mal Deine Programmlogik an: Wenn StartDatum = EndDatum, dann wird auch rtitem nicht instantiiert.

Offline Thunder

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 728
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #6 am: 23.10.03 - 14:29:04 »
Ist nicht mein Script - bei den Urlaubseinträgen funktioniert es ja auch.
Das ist es, was ich nicht verstehe.
Notes Server: 9.0.1 FP10
Workstations: 9.0.1 (ca.350)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #7 am: 23.10.03 - 14:45:46 »
Eben: Weil dort Startdate <> EndDate. Gleitzeit über mehrere Tage wird auch funktionieren.

Offline Thunder

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 728
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #8 am: 23.10.03 - 14:49:19 »
Nein - funzt aber nicht !
Notes Server: 9.0.1 FP10
Workstations: 9.0.1 (ca.350)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #9 am: 23.10.03 - 15:49:38 »
Dann schau Dir das Ganze mal peu à peu im Debugger an und achte dabei darauf, wann das Set rtitem = ... nicht ausgeführt wird.

Bernhard

Offline Thunder

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 728
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #10 am: 23.10.03 - 16:25:10 »
 :-[
bei Gleittage:
Die Variable RItem ist sofort da und ändert sich bis zur Fehlermeldung auch nicht.

bei Urlaub:
hier werden die Einträge in RItem reinsgeschrieben - ohne Fehlermeldung.
Notes Server: 9.0.1 FP10
Workstations: 9.0.1 (ca.350)

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Objektvariable not Set
« Antwort #11 am: 23.10.03 - 16:27:19 »
Was heisst, ist sofort da, hat sie auch Inhalt?
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #12 am: 23.10.03 - 16:31:01 »
Die Frage ist: Was bedeutet bei Dir "ist da"? Das Ding muß ja noch nicht instantiiert sein - es steht unter "Variablen" zwar da, aber ohne jede Zusatzinformation.
Schreib einfach mal vor die Fehlerzeile
If rtitem is nothing then
   Messagebox "Shit !"
   Exit Sub
End If

Dann wirst Du feststellen, daß die Set-rtitem-Zeile von Deiner Programmlogik nicht ausgeführt wird. Und dann mußt Du diese Programmlogik umstellen.

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Objektvariable not Set
« Antwort #13 am: 23.10.03 - 16:37:31 »
Ansonsten, die Grundkenntnisse zur Programmierung mal aufpolieren
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Thunder

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 728
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #14 am: 24.10.03 - 09:32:56 »
Will ich ja - deswegen bin ich doch hier. Wenn ich alles wüßte, brauche ich dieses Forum nicht.
Ich verstehe nur nicht, warum die RItem-Geschichte im oberen Teil funktioniert - übrigens auch, wenn das Anfangsdatum gleich dem Enddatum ist - und der untere Teil nicht, obwohl genau dasselbe drinsteht !!!
Dann werde ich halt mehrere Buttons machen müssen. Einen für Urlaub, einen für Gleittage, ...

Gruß
Notes Server: 9.0.1 FP10
Workstations: 9.0.1 (ca.350)

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Objektvariable not Set
« Antwort #15 am: 24.10.03 - 09:37:50 »
Ich denke mal, das Forum wird Dir nie in genügender Weise Grundlagen und Erfahrungen beibringen, da musst Du schon selber mal investieren und der Umgang mit dem Debugger kommt nur mit der eigenen Uebung, bei den meisten Leuten etwas schneller mit Anleitung als ohne (aber das ist individuell unterschiedlich, je nach Lerntyp). Deine Umsetzungen der Tips aus diesem Thread lassen leider erkennen, dass zu wenig eigenes Verständnis vorhanden ist, daher auch mein Hinweis. Also alleine hier kommst Du ganz sicher nicht über die entscheidende Schwelle.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
Re:Objektvariable not Set
« Antwort #16 am: 24.10.03 - 11:17:53 »
Hi Thunder,
ich würde vor der Zeile
Call rtitem.AppendText("Voor details bekijk bijgesloten verlof verzoek")
bei den Gleittagen folgende Zeilen ergänzen:
...
' Gleittage  -----------------------------------------------------------------------------------------
   
   
' Get variabels from document
   StartDatum = Uidoc.FieldGetText("GleitStartdatum")
   EindDatum = Uidoc.FieldGetText("GleitEnddatum")
   
   
'Conversion for string to datefield
   Set datum1 = New NotesDateTime (StartDatum)
   Set datum2 = New NotesDateTime (EindDatum)
   Call datum2.AdjustDay( 1 )
   
   Startdatum = Cstr(datum1.DateOnly)
   Einddatum = Cstr(datum2.DateOnly)
   
'The do while places the calendar item everyday unit startdate and endate are the same.
   Do While StartDatum <> EindDatum
      
'Call calender
      Set CalendarEntry = New NotesDocument( db )
      Set rtitem = New NotesRichTextItem( CalendarEntry, "Body" )

      Call rtitem.AppendText("Gleittage")
      Call rtitem.AddNewline(1)
      Call rtitem.AppendDocLink(TheDocument, "Beschreibung")
      UserName = Session.CommonUserName
...
P.S.: Allerdings bekomme ich beim ursprünglichen Code keinen Fehler, er haut nur ein Dokument mit allen Verknüpfungen für die Gleittage in den Kalender.
Gruß
sloe
Gruß
sloe

Offline Thunder

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 728
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #17 am: 24.10.03 - 13:21:39 »
Hallo Sloe,
das wars !  
Danke für die Hilfe

Gruß
Notes Server: 9.0.1 FP10
Workstations: 9.0.1 (ca.350)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #18 am: 24.10.03 - 17:36:50 »
Hallo, Donner,

ich habe mir den Code eben nochmal angeschaut und befürchte - wenn ich nicht ganz schief gucke so auf die Schnelle - dann wird das auch mit sloe's (völlig korrektem) Tip nicht richtig funktionieren:
Wenn jemand Urlaub oder Gleitzeit in den Kalender eintragen will, bei denen Beginn und Ende am gleichen Tag liegen, dann wird weder die eine noch die andere Bedingung
Do While StartDatum <> EindDatum
erfüllt sein.

Das Problem mit diesem Button bist Du auf jeden Fall noch nicht (wirklich) los ...

Bernhard

Offline Thunder

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 728
  • Geschlecht: Männlich
Re:Objektvariable not Set
« Antwort #19 am: 27.10.03 - 09:35:54 »
Ich würde eigentlich auch sagen, daß das nicht klappen kann. Aber er macht es trotzdem - frage mich nicht warum.
Böse ist auch, daß wenn der User kein Enddatum einträgt, daß Script den ganzen Kalender vollmacht - vom Startdatum halt. Aber das kann man ja vorher abfangen.
Wünsche eine schöne Woche
Notes Server: 9.0.1 FP10
Workstations: 9.0.1 (ca.350)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz