Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: bend0r am 16.08.07 - 15:03:41

Titel: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bend0r am 16.08.07 - 15:03:41
Hallo  ...

Folgender Code:

Sub Exiting(Source As Field)
   
   Dim uiw As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As Notesdocument
   Dim rtitem As NotesRichTextItem
   Dim boo_isnewdoc As Boolean
   
   Set uidoc = uiw.CurrentDocument
   boo_isnewdoc = uidoc.IsNewDoc
   
   Set doc=uidoc.Document
   Set rtitem = doc.GetFirstItem("Body")
   
   If boo_isnewdoc Then
      ....
   Else
      .....
   End If
   
   Call uidoc.Refresh(True)
   
End Sub


Lustigerweise wehrt sich Notes permanent das RichTextItem zu belegen obwohl besagtes Feld auch ein Richtextiten ist.

Zur Zusatzinfo : Das Feld hat einen Vorgabewert.  Existiert also auch schon.

jemand lust mir zu helfen?

grüsse rene
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: HH am 16.08.07 - 15:12:17
Kann es sein, dass die Ausführung bereits hier

Code
Set uidoc = uiw.CurrentDocument

abgebrochen wird? Wo wird uiw initialisiert?

Hubert
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: Glombi am 16.08.07 - 15:13:38
Ist das ein neues Dokument?

Falls ja, gibt es Einschränkungen bzgl. Rich Text Feldern. Die stehen erst nach dem Speichern zur Verfügung.
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bend0r am 16.08.07 - 15:15:42
hmm, ist ein neues Dokument

ich kann aber via fieldsettext Wörter reinschreiben
... ein doc.Save(... , ... ) hatte ich eigentlich nicht vor direkt daraufzuschiessen
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bend0r am 16.08.07 - 15:18:35
hrmmm, selbst wenn ich ein doc.Save davorsetze kommt immer noch die Fehlermeldung. Keine Ahnung woran das liegen könnten.

doc, uidoc, uiw sind alle richtig initialisiert
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bikerboy am 16.08.07 - 15:25:56
Hast du mal mit einem "doc.HasItem"- geprüft ob es da ist ?

Wenn es ein neues Dokument ist solltest du vllt auch :

Code
Dim rtItem as New NotesRichTextItem(doc,"body")

versuchen und dann mit dem

Code
rtItem.appendText("TESTTEST")

arbeiten
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: m3 am 16.08.07 - 15:27:42
Works as designed.

Du erstellst ein neues Dokument, das Feld "Body" existiert noch nicht. Laut Designer-Hifle zu "GetFirstItem":
Zitat
Returns Nothing if the document does not contain an item with this name.

Du willst
Code
Set rtitem = New NotesRichTextItem ( doc, "Body" )
verwenden.
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bikerboy am 16.08.07 - 15:30:24
M3 hat recht.

Da fällt mir ein das die RichtextOperationen im Front-End sowieso sehr eingeschränkt sind. Mein Vorschlag mach es im Back-end und Reloade das Dokument wieder.
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bend0r am 16.08.07 - 15:35:44
hmmkay,

1. das item ist da .... (Laut debugger zumindest :-)  )
2. die operationen mach ich ja im back-end ---> doc = uidoc.document

Die Designer-Hilfe ist mir bekannt, oder zumindest die Einträge dazu. ..  Jedoch funktioniert es noch nicht einmal wenn ich vorher ein Save drüberjage
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: Glombi am 16.08.07 - 15:42:42
Beachte auch folgendes aus der Hilfe:

If you specify a new NotesRichTextItem object but do not add content to it, an item is not created when the document is saved.
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: DAU-in am 16.08.07 - 15:44:24
Ein Kollge von mir hatte damit auch mal Ärger. ich glaube, im Debugger wird das angezeigt, ist aber 'in echt' nicht da.
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bend0r am 16.08.07 - 15:47:34
gerade nochmals durchgetestet:

neues rtitrm erstellt, zwei Zeilen dran gehangen , text hinzugefügt , gesaved

gleiche spiel
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: Glombi am 16.08.07 - 16:01:59
Wenn das was in RTF Feld schreibst, dann darf das UI Dokument nicht im Bearbeitenmodus sein. Andernfalls wird das RTF Feld sonst beim Speichern des UI Dok. wieder überschreiben - und zwar mit dem Wert der aktuell im UI Dok. drin steht.
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bend0r am 16.08.07 - 16:09:17
hrmmm ....
*grumml*

das sind leider so die backgrounds die einem als Student fehlen. Leider ...

Werde mich jetzt nochmal intensiv mit der designer-hilfe beschäftigen und erstmal in einer test-db weiterarbeiten

danke nochmals für die zahlreichen antworten

grüsse rene
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: pete_bla am 16.08.07 - 19:49:43
 ??? muss mal ne "blöde Frage" stellen,
aber was hast du im Exciting (ist ja eigentlich UI) mit dem backend-RTItem eigentlich vor ???

Sub Exiting(Source As Field)
   
[...]
   
   Set doc=uidoc.Document
   Set rtitem = doc.GetFirstItem("Body")
   
[...}
   
   Call uidoc.Refresh(True)
   
End Sub
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bend0r am 16.08.07 - 22:21:59
@pete_bla:

es geht konkret um eine art Trouble-Ticket-System. Um möglichst schnell die erforderlichen Daten eingeben zu können arbeite ich viel mit entering und exiting ereignisse. Beispielsweise um zu feldern zu springen, felder automatisch zu füllen, etc.

nun zu deiner frage. Meines Erachtens ist es grundsätzlich komfortabler im Back-End anstatt im Front-End zu arbeiten.
Hoffe das war ausführlich genug ;-)

grüsse rene
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: pete_bla am 17.08.07 - 12:32:52
dann würd ich sagen,dass du dich für ein neus RichtText-Feld entscheiden musst..
wenn schon ui dann auch die daten mit ui-funktionen eintragen/bearbeiten...

ansonsten kommst du bei nem rt-feld kaum ums speichern des docs.

hab mal dein code ausprobiert und muss sagen, klar ist das "object" da aber eben nicht das feld (solange nicht gespeichert..)

->
entscheide dich:
-> das feld muss bereits vor der erstellung da sein um backend damit zu arbeiten
-> das doc muss eben zuvor gespeichert werden (ev. mit nem flag "temporär")
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: DerAndre am 17.08.07 - 12:42:12
Um eine Art TT-System?
Ist !!HELP!! zu mächtig?
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: bend0r am 20.08.07 - 14:36:33
!!HELP!! müsste zu stark auf unsere Bedürfnisse bzgl. Auswertungen, etc. angepasst werden


grüsse rene
Titel: Re: ObjectVariable not set (NotesRichTextItem)
Beitrag von: pete_bla am 20.08.07 - 15:00:02
nun zu deiner frage. Meines Erachtens ist es grundsätzlich komfortabler im Back-End anstatt im Front-End zu arbeiten.
stimm ich Dir schon zu (im ui ist halt einfach zu krakelig und backend so 'schön'...),
, aber mit RT-Feldern nur, wenns eben nicht wie hier um neue UIDocs geht....

Sub Exiting(Source As Field)
ist ja eindeutig UI

   Call uidoc.Refresh(True)
bring nicht viel für backend geänderte rtitems und schon garnicht, wenn du nicht zwischen-speichern willst! (aber so weit waren wir ja noch garnichtnicht)

Soweit aus der Desinger-Help: Reload method:
(zwar unter UIDoc.Reload, gilt aber auch für refresh!)
Zitat
Modifications made to items on the corresponding back-end document accessed outside the front-end document (for example, by an agent or another user) do not appear unless the document is closed and reopened.