Autor Thema: neues Memo aus Dok heraus erstellen  (Gelesen 2576 mal)

Offline cordi

  • Frischling
  • *
  • Beiträge: 34
  • Ich liebe dieses Forum!
neues Memo aus Dok heraus erstellen
« am: 20.04.05 - 16:09:20 »
Hallo,
ich bin neu hier und programmiere noch nicht lange mit Script. Habe alle Foren, Hilfen, etc. durch und breche bald zusammen. Das Problem: aus einem geöffneten Dokument heraus soll ein neues Mail in der Mail-DB geöffnet werden. Und zwar (wichtig) mit der Grußformel des Users (also MfG etc.). Des weiteren habe ich in dem Dokument der ersten Datenbank zwei RTF-Felder, deren Inhalt in das Body-Feld der Mail übertragen werden sollen. "Natürlich" sollen die RTF-Inhalte oberhalb der Grußformel stehen...
Die Probleme nun:
wenn die RTF-Inhalte tatsächlich im neuen Memo gelandet sind, dann hinter der Grußformel und es wird ein weiteres Mail geöffnet, indem der Text steht, der eigentlich noch in das richtige Mail sollte, dort aber nicht auftaucht...
Ich habe schwer den Eindruck, dass ich hier mit Front- und Back-End durcheinander komme. Kann mir bitte jemand helfen?
Ich hänge das script jetzt einfach dran, vielleicht kann mir jemand was dazu sagen.
Vielen Dank schonmal.

Sub Click(Source As Button)
   
   'BackEnd   
   Dim session As New NotesSession
   Dim db As NotesDatabase   
   Dim doc As NotesDocument
   Set db = session.CurrentDatabase
   Dim item As NotesItem
   Dim itemA As NotesItem
   
   'FrontEnd
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = workspace.CurrentDocument
   
   'Attachments holen   
   Set doc=uidoc.Document
   uidoc.EditMode = True
   Call uidoc.Save
   Set item = doc.GetFirstItem( "attachments" )
   Set itemA=doc.GetFirstItem("bemerkungen")
   
   'Mail mit Att. u. Text erstellen
   Dim rtitem As Variant
   Dim rtitemA As Variant
   Dim mailDb As New NotesDatabase("" , "")
   Call maildb.OpenMail
   Set uidoc = workspace.ComposeDocument( maildb.server, maildb.filepath, "Memo" )   
   'Set uidoc = workspace.CurrentDocument         Call uidoc.FieldSetText ( "Subject", "Vom " + Cstr(doc.datum(0))+ " - " +doc.nachhaken(0))
   Call uidoc.save
   
   'Set maildb = session.CurrentDatabase
   'Set doc = New NotesDocument(maildb)
   Set doc=uidoc.Document
   Call doc.CopyItem(itemA, "Body")   
   Set rtitemA = doc.GetFirstItem( "Body" )
   Set rtitem =doc.GetFirstItem( "Body" )
   If ( rtitemA.Type = 1) Then
      
      Call rtitemA.AddNewLine( 1 )
      Call rtitemA.AddNewLine( 1 )
      Call rtitemA.Appendrtitem(itemA)
      Call rtitem.AppendrtItem(item)   
      Call rtitem.AppendText( "Name: " + doc.anrede(0) + " " + doc.vname(0)+" " + doc.nname(0))
      'Call doc.Save(True,True)
   End If
   'Set  uidoc As NotesDocument
   'Call uidoc.Save
   
   Call uidoc.refresh
End Sub

Glombi

  • Gast
Re: neues Memo aus Dok heraus erstellen
« Antwort #1 am: 20.04.05 - 16:25:13 »
Script und Rich Text Felder und UI Dokumente. Das ist schon eine Herausforderung  ;D

Ich denke für Deinen Fall wäre es das beste, den ganzen Backendkram wegzulassen. Das sollte gehen, da das Dokument mit den 2 RTF Felder offen ist, wenn ich das richtig verstanden habe.

Vorschlag:
Setze den Cursor in das 1. RTF Feld mit
Call notesUIDocument.GotoField( fieldName$ )

Markiere alles mit
Call notesUIDocument.SelectAll

Kopiere in Zwischenablage mit
Call notesUIDocument.Copy

Füge in neues Memo ein mit
Hier dann als UI das neue Mail
Call notesUIDocument.GotoField( "Body" )
Call notesUIDocument.Paste

Du musst aber noch vor dem Paste den Cursor an den Anfang von Body setzen. Das geht vielleicht dann eher so
Call notesUIDocument.GotoField( "Subject" )
Call notesUIDocument.GotoNextField
Call notesUIDocument.Paste

Andreas

Offline cordi

  • Frischling
  • *
  • Beiträge: 34
  • Ich liebe dieses Forum!
Re: neues Memo aus Dok heraus erstellen
« Antwort #2 am: 20.04.05 - 17:17:41 »
Hallo -
vielen Dank für den Hinweis mit dem Back-End. Soweit alles klar, aber hier kommen die nächsten Probleme:
ich will noch ein paar Daten aus dem geöffneten Urpsrungsdok auslesen und in das Body-Feld der Mail vor den beiden reinkopierten RTF-Items und der Grußformel packen. z.Zt. sieht es so aus, dass er mir den Inhalt des ersten RTF-Feldes ins Body von der Mail packt, dann meine gesammelten Daten aus dem Ursprungs-Dok und dann die Grußformel natürlich überschreibt. Die Anhänge aus dem zweiten RTF-Feldes der Ursprungsdoks kriege ich z.Zt. noch gar nicht.
Hast du nochmal eine Idee? Danke!

Offline cordi

  • Frischling
  • *
  • Beiträge: 34
  • Ich liebe dieses Forum!
Re: neues Memo aus Dok heraus erstellen
« Antwort #3 am: 20.04.05 - 17:21:11 »
Stimmt nicht ganz meine Beschreibung:
Reihenfolge ist: Inhalt erstes RTF, dann Grußformel, dann gesammelte Daten aus Ursprung. Sorry.

Offline cordi

  • Frischling
  • *
  • Beiträge: 34
  • Ich liebe dieses Forum!
Re: neues Memo aus Dok heraus erstellen
« Antwort #4 am: 20.04.05 - 18:26:46 »
Das haut alles hinten und vorne nicht hin: jetzt bekomme ich zwar irgendwie meine Anhänge und den Text aus dem 2. RTF, aber leider ist der Text im zweiten RTF formatiert, wird aber in der neuen Mail nicht formatiert angezeigt. Außerdem kriege ich meine ausgelesenen Daten immer nur hinter die Anhänge und die Grußformel ist weg...Das kann doch nicht so schwer sein - oder?!?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: neues Memo aus Dok heraus erstellen
« Antwort #5 am: 20.04.05 - 19:56:49 »
Hi,

na ja, so ganz einfach ist das nicht. Das Handling von RTF-Feldern mit Script hat mich schon manchmal die letzten Nerven gekostet.

Ich hab' mal ein bisschen gebastelt und das ist dabei herausgekommen:

Code

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim maildb As NotesDatabase
Dim maildoc As NotesDocument
Dim profile As NotesDocument
Dim rtitem As NotesRichTextItem
Dim mailrtitem As NotesRichTextItem

Set uidoc = workspace.CurrentDocument
Set doc=uidoc.Document
 
Set maildb = New NotesDatabase("","")
maildb.OpenMail
'Handle auf Profildokument mit den ganzen Vorgaben des Users in der Mail-DB
Set profile = maildb.GetProfileDocument("CalendarProfile")

'Anlegen eines neuen Dokumentes	
Set maildoc = New NotesDocument(maildb)
maildoc.Form = "Memo"
maildoc.Logo = profile.DefaultLogo(0)  'Setzen des, vom User eingestellten Bildchens
maildoc.Principal = profile.Owner(0)
maildoc.Subject = "Vom " + Cstr(doc.datum(0))+ " - " +doc.nachhaken(0))

'Zugriff auf Bodyfeld im Memo	
Set mailrtitem = New NotesRichTextItem( maildoc, "Body" )

'Anhängen des ersten RTF-Feldes
Set rtitem = doc.GetFirstItem("Attachments")
Call mailrtitem.AppendRTItem(rtitem)

'Einfügen von zwei Leerzeilen
Call mailrtitem.AddNewline(2)

'Anhängen des zweiten RTF-Feldes
Set rtitem = doc.GetFirstItem("Bemerkungen")
Call mailrtitem.AppendRTItem(rtitem)
	
'Anhängen von zwei Leerzeilen und der Signatur
Call mailrtitem.AddNewline(2)
Call mailrtitem.AppendText(profile.Signature(0))	

'Speichern des Backend-Dokumentes	
Call maildoc.Save(True,False)
'Öffnen im Frontend
Call workspace.EditDocument(True, maildoc)
'Löschen des Backend-Dokumentes
Call maildoc.Remove(True)


Ich hab's mal probiert und ich denke so funktioniert's wie gewünscht. Wenn du noch Info's aus anderen FEldern brauchst, kannst du die einfach zwischenrein schieben.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline cordi

  • Frischling
  • *
  • Beiträge: 34
  • Ich liebe dieses Forum!
Re: neues Memo aus Dok heraus erstellen
« Antwort #6 am: 21.04.05 - 06:14:31 »
Hallo Axel -
vielen Dnk, ich werde das nachher gleich ausprobieren. Das mit dem letzten Nerv: gestern hätte ich echt schreien können....
Grüße!

Offline cordi

  • Frischling
  • *
  • Beiträge: 34
  • Ich liebe dieses Forum!
Super, Super, Super!!!!!
« Antwort #7 am: 21.04.05 - 11:00:55 »
Danke sehr - klappt großartig!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz