Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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.
-
... dein Code sieht so schlecht nicht aus, überprüfe doch mal den Feldnamen, der sieht falsch aus...
ata
-
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!!
-
... uidoc speichern und dann uidoc reload könnte helfen.
-
ist BemAuftraggeber ein rtf Feld ?
cu
-
@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.
-
rtf erst abfragen wenn es gespeichert wurde ....
cu
-
aber ich möchte das mail doch versenden mit dem inhalt des rt-feldes!?
-
... rtf -felder werden erst beim speichern angelegt.
-
das ist ja ok - aber wenn du im rtf was einfügen willst in script muss erst gespeichert werden ;D
cu
-
... 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
-
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
-
@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.
-
@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