Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: TGroener am 25.06.08 - 13:51:40

Titel: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 25.06.08 - 13:51:40
Hallo Forum,

ich programmiere eine Anbindung an den LN-Client 7.2. aus einer VB6-Anwendung heraus. Nun habe ich das Problem, das, wenn ich eine Email versenden möchte, nach dem .Send nichts passiert (die Mails also im Drafts-Ordner bleibt). Hier der entsprechende Code-Schnippsel:

Code
'erstmal der ganze Initialiserungs-Kram
...
'Initialiserung fertig

Set lvobjNotesDoc = gvobjNotesDB.CreateDocument

lvobjNotesDoc.Form = "Memo"
lvobjNotesDoc.SendTo = "ich@testaccount.xy"
lvobjNotesDoc.Subject = "Test-Betreff"

Set lvobjRTItem = lvobjNotesDoc.CreateRichTextitem("Body")

call lvobjNotesDoc.Save(True, False)

Set lvobjNotesUIDoc = gvobjNotesWorkspace.EditDocument(False, lvobjNotesDoc)

call lvobjNotesUIDoc.GotoField("Body")
call lvobjNotesUIDoc.Import("Microsoft RTF", "c:\test.rtf")
call lvobjNotesUIDoc.GotoField("Subject")
call lvobjNotesUIDoc.Save
call lvobjNotesUIDoc.Document.ReplaceItemValue("ActionInProgress", "4194304")
call lvobjNotesUIDoc.Save

If pvblnSend then
   'Das klappt irgendwie nicht :-(
   call lvobjNotesUIDoc.Send
endif

call lvobjNotesUIDoc.Close(True)

'und hier alles wieder fein säuberlich aufräumen
...
'Aufräumen fertig

Zur Erläuterung: Wenn pvblnSend = False ist läuft alles einwandfrei. Ist der Wert allerdings True wird die .Send Zeile ausgeführt, im Client ist allerdings keine Veränderung festzustellen.

MfG

Thomas

P.S. Ich hoffe ich war nicht blind und habe eine gleiches / ähnliches Thema in der Suche übersehen ;-)
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: Driri am 25.06.08 - 16:23:23
Warum machst Du das über das Frontend ? Backend wäre IMO sauberer, da dann z.B. gleichzeitig stattfindende Notes-Client-Aktionen nicht behindern (Dialogboxen, etc.).
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 26.06.08 - 08:26:20
Warum machst Du das über das Frontend?

Weil ich bisher keine andere Lösung gefunden habe ;D

Wenn es da etwas ohne Frontend gäbe wäre mir das natürlich lieber, aber für das importieren des RTF-Textes in das Body-Feld habe ich nichts im Backend gefunden (bin auch nicht so wirklich bewandert, was die ganzen LN-Schnittstellen angeht).
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: Driri am 26.06.08 - 09:18:36
Ach, Mist. Für den Import gibt es so direkt keine identische Funktion fürs Backend. Wenn es nur um Text geht, könnte man natürlich die RTF zeilenweise auslesen und jeweils in das RichTextItem schreiben.

Aber vielleicht hat ja noch jemand eine andere Idee.
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 26.06.08 - 09:22:48
Wenn es nur um Text geht, könnte man natürlich die RTF zeilenweise auslesen und jeweils in das RichTextItem schreiben.

Hmm ... gefällt mir erstmal nicht bzw. müsste ich probieren.

Das Problem wird hier eher die Menge der Aufrufe sein. Das ganze läuft in einer Schleife und kann auch schon mal ein paar hundert Aufrufe haben zusätzlich können die RTF-Dokumente schon relativ umfangreich sein (mehrere Seitenm evtl. mit Grafiken usw.).
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: Driri am 26.06.08 - 09:30:59
Wenn Grafiken enthalten sind, fällt das sowieso flach. Wenn das überhaupt funktioniert, würde es dann schon sehr aufwändig.
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 30.06.08 - 08:22:50
Hallo zusammen,

ich hab ein wenig gebastelt und bin einen Schritt weiter gekommen:

Ich habe die Stelle

Code
call lvobjNotesUIDoc.Save
call lvobjNotesUIDoc.Document.ReplaceItemValue("ActionInProgress", "4194304")
call lvobjNotesUIDoc.Save

If pvblnSend then
   'Das klappt irgendwie nicht :-(
   call lvobjNotesUIDoc.Send
endif

call lvobjNotesUIDoc.Close(True)

in

Code
call lvobjNotesUIDoc.Save

If pvblnSend then
   call lvobjNotesUIDoc.Send
else
   call lvobjNotesUIDoc.Document.ReplaceItemValue("ActionInProgress", "4194304")
   call lvobjNotesUIDoc.Save
endif

call lvobjNotesUIDoc.Close(True)

umgebaut. Beim debuggen sah das auch alles so weit ok aus. Wenn ich das ganze allerdings normal laufen lasse bekomme ich in der .Send-Zeile eine Meldung im LN-Client, ob ich die Änderungen speichern möchte (aber das mache ich doch eine Zeile vorher??).

Grüße

Thomas
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: Driri am 30.06.08 - 09:51:50
Du könntest nach dem Save noch das Item "SaveOptions" auf "0" setzen. Dann entfällt die Abfrage.

Call lvobjNotesUIDoc.FieldSetText("SaveOptions", "0")
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 30.06.08 - 10:13:36
Hmm ... leider folgende Meldung:

Fehler 7412 Notes Error - Cannot locate field
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: koehlerbv am 30.06.08 - 10:29:02
Dann gibt es das nicht im Frontend, was aber natürlich nicht weiter schlimm ist. Dann muss es eben im Backend belegt werden:
lvobjNotesUIDoc.Document.SaveOptions = "0"

Bernhard
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 30.06.08 - 10:31:57
Ihr seit die besten  :)

Klappt einwendfrei  :knuddel:
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 30.06.08 - 10:36:33
uups zu schnell ... jetzt liegen die Dokumente wieder im Drafts-Ordner und werden nicht gesendet ...

Schade


aber gut seit ihr trotzdem ;-)
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: Driri am 30.06.08 - 10:43:02
Das ist aber klar. Im Else-Zweig wird ja auch nur ein Save abgesetzt, dann wird das Dokument halt einfach gespeichert.
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 30.06.08 - 10:46:33
also ich hab das jetzt so:

Code
call lvobjNotesUIDoc.Save

If pvblnSend then
   call lvobjNotesUIDoc.Document.ReplaceItemValue("SaveOptions", "0")
   call lvobjNotesUIDoc.Send
else
   call lvobjNotesUIDoc.Document.ReplaceItemValue("ActionInProgress", "4194304")
   call lvobjNotesUIDoc.Save
endif

call lvobjNotesUIDoc.Close(True)

und er läuft definitiv in den ersten Zweig mit dem .Send rein. Nehm ich die Zeile mit den SaveOptions raus kommt die Meldung, diese betsätige ich und das Ding landet im Send-Ordner.

Hab ich da jetzt ein Denkfehler? Hätte vllt. gestern doch nicht so lange das verlorene Finale betrauern sollen ;-)
Titel: Re: UIDocument.Send sendet nicht ...
Beitrag von: TGroener am 30.06.08 - 12:35:09
Das gute alte TryAndError-Prinzip hat weiter geholfen  >:D

Mit
Code
call lvobjNotesUIDoc.Document.ReplaceItemValue("SaveOptions", "1")
klappt es jetzt wunderbar.

Danke nochmal an alle.