Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: robertpp am 28.04.03 - 17:28:57

Titel: Problem mit RTFeld kopieren.
Beitrag von: robertpp am 28.04.03 - 17:28:57
Ich hab im Forum gesucht und auch gefunden aber nicht das was ich brauche.
Ich möchte nachdem erstellen eines neuen doc's ein mail versenden das mir dann den text des rtf "BemAuftraggeber" in das doc sendoc im body einfügt das anschließend versendet wird. Das doc wurde noch nicht gespeichert.
Ich hab in meinem Querysave dieses Script:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim s As New NotesSession   
   Dim rtitem As NotesRichTextItem   
   Dim itemdoc As Variant
   Dim senddoc As NotesDocument   
   Dim db As NotesDatabase   
   Set db= s.CurrentDatabase
   Set senddoc = New NotesDocument(db)   
   Dim doc As NotesDocument
   Set doc=Source.Document
   If doc.Abteilung(0) ="" Then
      Msgbox "Sie müssen eine Abteilung eingeben",16,"Falsche oder fehlender Wert"
      Continue =False
      Call Source.FieldSetText("Schliessen","False")
      Source.GotoField("Abteilung")
      Exit Sub
   Elseif source.IsNewDoc Then
      With senddoc
         .Form = "Memo"
         .SendTo = doc.Zuhanden
         .Subject = "Neuer Prüfauftrag ''" + doc.Projekt(0) +"''"
         Set rtitem = New NotesRichTextItem( senddoc, "Body" )
         Call rtitem.AppendText("Klicken sie auf die Dokumentenverknüpfung um den Prüfauftrag einzusehen:")
         Call rtitem.AddNewLine(2)
         Call rtitem.AppendDocLink( doc, doc.Projekt(0) )
         If doc.BemAuftrSenden(0) ="ja" Then
            dim plainText as Variant
            Call rtitem.AddNewLine(1)
            Set itemdoc = doc.GetFirstItem("BemAuftraggeber")
            plainText = itemdoc.GetFormattedText( False, 0 )   
            hier bekomm ich immer einen fehler
            object varible not set

            Call rtitem.AppendText("Bemerkung: ")

         End If
         Call senddoc.send(True)
      End With

   End If
End Sub

Ich vermute das das doc einmal gespeichert werden muss das man auf das rtf zugreifen kann!! wie mach ich das am besten.
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: ata am 28.04.03 - 17:59:16
... dein Code sieht so schlecht nicht aus, überprüfe doch mal den Feldnamen, der sieht falsch aus...

ata
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: robertpp am 29.04.03 - 08:20:12
der feldname stimmt schon ich habs sogar mit einem "test"-rtf ausprobiert. und ich bekomm den gleichen fehler. er setzt mir das itemdoc nicht bleibt leer im LS-Debugger. Wenn ich das doc jedoch einmal gespeichert habe und geschlossen dann funktioniert das script. aber wie kann ich das jetzt so realisieren? ich hab aber auch schon in das script in der if schleife doc.BemAuftrSenden(0) ="ja" ein Call doc.save(True,False) eingebaut aber das geht auch nicht!!
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: klaussal am 29.04.03 - 08:57:56
... uidoc speichern und dann uidoc reload könnte helfen.
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: Performance am 29.04.03 - 09:05:25
ist BemAuftraggeber ein rtf Feld ?

cu
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: robertpp am 29.04.03 - 09:19:32
@Performance
natürlich ;) ist BemAuftraggeber ein rtf aber die frage gehört trotzdem gestellt.
ich habs ja uach schon mit einem test-rtf probiert.

@klaussal
man kann wenn man im querysave ein script hat kein uidoc save einbauen da sonst eine ineinander verschachtelter fehler auftritt.

ich weiß auch nicht weiter was es sonst sein kann.
Das problem ist das wenn ich LS-Debugger das doc anschaue das das rt-feld noch garnicht vorhanden ist.
das wird ja erst beim speichern angelegt wenn ich mich nicht irre.
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: Performance am 29.04.03 - 09:31:43
rtf erst abfragen wenn es gespeichert wurde ....


cu
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: robertpp am 29.04.03 - 09:42:00
aber ich möchte das mail doch versenden mit dem inhalt des rt-feldes!?
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: klaussal am 29.04.03 - 09:49:03
... rtf -felder werden erst beim speichern angelegt.
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: Performance am 29.04.03 - 09:49:10
das ist ja ok - aber wenn du im rtf was einfügen willst in script muss erst gespeichert werden  ;D

cu
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: ata am 29.04.03 - 14:03:32
... es funktioniert auch ohne Speichern, wenn du dem Feld nur Text mitgibst.

SendDoc.RTFeld = "Dein Text, den du mitgeben willst"

... du darfst das Feld nicht per RtItem erstellen, sondern nur den Wert zuweisen. Das Dokument geht davon aus, daß es ein Textfeld ist und versendet es. Beim Empfänger ist dann ein Richtext-Feld...

ata
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: Performance am 29.04.03 - 16:34:40
Das Dokument geht davon aus, daß es ein Textfeld ist und versendet es. Beim Empfänger ist dann ein Richtext-Feld...

oder so...

@ata
in erster Linie ist es ein Feld vom Typ item, kann also auch ein Number Typ sein.  ;D;D;D


cu
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: robertpp am 29.04.03 - 16:47:16
@ata ich möchte ja mein senddoc mit einem rt-feld "body" das verschickt wird, mit dem rt-feld "BemAuftraggeber" vom currentdocument füllen das uidoc wurde aber noch nicht gespeichert! was ich anschließend noch brauche das auch die datein die im RTF "BemAuftraggeber" drinnen sind das die auch mitgesendet werden.
Titel: Re:Problem mit RTFeld kopieren.
Beitrag von: Performance am 29.04.03 - 18:57:22
@robertpp
im UI dok mit Anhang im rtf geht halt nur mit speichern....
- du kannst ja das dok immer noch im nachhinein löschen

- im backend geht es ohne das dok zu speichern - mit Anhang -
- im UI hast du das Problem das das Feld noch nicht gespeichert ist und du deine Infos nicht rausziehen kannst, du hast zwar deine $File items aber das wird dann zu kompliziert.....
 

 Set itemdoc = doc.GetFirstItem("BemAuftraggeber")
- diese statement funktioniert nur wenn das doc gespeichert wurde

- deine if Funktion ist ein wenig komisch - ein if.. elseif Konstrukt bezieht sich immer auf das gleiche item mit unterschiedlichen Ausprägungen halt, sozusagen ein case Konstrukt.

Ergo:
Die send Mail Funktion in Postsave reinhauen - das dok wurde im querysave gespeichert und du hast jetzt dein rtf zur Verfügung.


cu