Copie de richtext, positionner sur item

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Copie de richtext, positionner sur item

Messagepar albator » 21 Août 2003 à 13:45

Hello,A partir d'un mail reçu, je crée un nouveau document, dans lequel je veux copier le fichier rattaché du mail qui est un fichier PDF.J'arrive pas à copier correctement le champ body du mail dans le champ body du docVoilà mon code : Qu'est ce que j'ai oublié ? Dim itemmail As NotesItem Dim itemdoc As NotesItem Dim rtitemmail As Variant Dim rtitemdoc As Variant 'Initialisations Set s = New NotesSession Set db = s.CurrentDatabase Set w = New NotesUIWorkspace Set doc = w.CurrentDocument Set mailnote = doc.Document 'Si il n'y pas de demande on en crée une Set newdoc = w.ComposeDocument ( "", "", "Derogation" ) Set note = newdoc.Document ' Passage en mode Edition du document newdoc.EditMode = True '------------------- 1er ESSAI 'Ca, ça me met le fichier attaché en fin de doc, pas dans l'item Body le texte du body du mail 'n'est pas visible Set item1 = New NotesRichTextItem (note, "Body" ) Call item1.AppendRTItem(mailnote.GetFirstItem("Body")) '------------------- 2ème ESSAI ' pareil que 1 Set itemmail = mailnote.GetFirstItem("Body") Set itemdoc = note.GetFirstItem("Body") Set itemdoc = itemmail.CopyItemToDocument(note, "Body" ) '------------------- 3ème essai ' erreur : object variable not set Set rtitemmail = mailnote.GetFirstItem( "Body" ) Set rtitemdoc = note.GetFirstItem( "Body" ) Call rtitemdoc.AppendRTItem( rtitemmail ) '------------------- 4ème essai ' le même que le 3 en declarant rtitemmail, rtitemdoc en NotesRichTextItem au lieu de Variant ' pareil Set rtitemmail = mailnote.GetFirstItem( "Body" ) Set rtitemdoc = note.GetFirstItem( "Body" ) Call rtitemdoc.AppendRTItem( rtitemmail )J'ai vérifié avec le debugger, et Lotus considère que dans mon masque, il n'y a pas d'item Body. Alors je l'ai initialisé avec un valeur texte "bidon" et du coup il ne le considère pas comme un richtext mais comme un item .... (bouh le vilain) note.Save True, False newdoc.Reload newdoc.RefreshHideFormulas newdoc.Save Call newdoc.Close En plus, j'ai un autre souci, quand je met dans mon masque de document, d'ouvrir automatiquement le1er rattachement, le fichier PDF s'ouvre, mais pas le document.Alors bon j'ai ôté ça, mais maintenant, je ne sais pas comment me positioner sur le champ Body quicontient le rattachemnt pour utiliser @Command( [AttachmentView] ) et ouvrir le PDF. Je précise queje ne peux pas utiliser @Command( [EditGoToField] ; "Body" )car le document peut être ouvert en lecture seule.Des pistes ???Merci beaucoup, beaucoup.
albator
 

et en utilisant GetEmbeddedObject ??

Messagepar Jerome Capodano » 22 Août 2003 à 09:08

Tu declares un obj dim obj as NotesEmbeddedObjectun rich text ton rich text rtiemmail as variant Set rtitemmail = mailnote.GetFirstItem( "Body" )set obj = rtitemmail.GetEmbeddedObject( "nomfichier.pdf" )
Jerome Capodano
 

Re: et en utilisant GetEmbeddedObject ??

Messagepar albator » 22 Août 2003 à 10:39

D'accord mais ça me pemet de faire quoi ?
albator
 

Re: Copie de richtext, positionner sur item

Messagepar Droad » 22 Août 2003 à 11:09

Sub Click(Source As Button) Dim db As NotesDatabase Dim s As New NotesSession Dim w As New NotesUIWorkspace Dim mailnote As NotesDocument, doc As NotesUIDocument, note As NotesDocument Set db = s.CurrentDatabase Set doc = w.CurrentDocument Set mailnote = doc.Document Set note = mailnote.CopyToDatabase(db) Forall i In note.Items If Lcase$(i.name)<>"$file" And Lcase$(i.name)<>"body" Then Call i.remove() End Forall note.Form="Derogation" Call note.ComputeWithForm(True,False) Call note.Save(True, False) %REM Call w.EditDocument(False, note)%END REMEnd Sub[%sig%]
Droad
 

Re: Copie de richtext, positionner sur item

Messagepar albator » 22 Août 2003 à 13:54

Je poste ça en espérant que si quelqu'un a ce genre de souci il galérera moins longtemps que moi :En fait, j'ai trouvé ce qui ne va pas : 1ère Etape------------------------------CODE 1 :Set rtitemmail = mailnote.GetFirstItem("Body")Call note.RemoveItem("Body")Set rtitem1 = note.CreateRichTextItem ("Body")Forall objet In rtitemmail.EmbeddedObjects If ( objet.Type = EMBED_ATTACHMENT ) Then sourceName = objet.Source Call objet.ExtractFile( "W:\\" & Cstr(sourceName) ) Set embed = rtitem1.EmbedObject( EMBED_ATTACHMENT, "", "W:\\" & Cstr(sourceName) ) End IfEnd ForallCall note.ComputeWithForm(False, False)Call note.Save(False, True)Là OK, le PDF est bien rattaché dans BODY mais comme j'ai pas fait de newuidoc.refresh, newuidoc.Save mes champs ne dont pas recalculés & la sauvegarde ne se fait pas comme je veux ...CODE 2 : Set rtitemmail = mailnote.GetFirstItem("Body")Call note.RemoveItem("Body")Set rtitem1 = note.CreateRichTextItem ("Body")Forall objet In rtitemmail.EmbeddedObjects If ( objet.Type = EMBED_ATTACHMENT ) Then sourceName = objet.Source Call objet.ExtractFile( "W:\\" & Cstr(sourceName) ) Call newuidoc.GotoField( "Body" ) Call newuidoc.CreateObject("Derogation", "", "W:\\" & Cstr(sourceName) ) End IfEnd Forallnewuidoc.Reloadnewuidoc.RefreshHideFormulasnewuidoc.SaveLa pas de pb, mais j'ai pas un rattachement, j'ai un objet OLE (que d'ailleurs je dois double-cliquer 2 fois dessus au lieu d'1 pour l'activer, et même qu'il ne s'active pas forcément du 1er coup même quand j'ai mis lancer le 1er objet OLE dans le masque ...)2ème Etape------------------------------J'avais enlevé l'Autoreload du masque, pour le gérer manuellement parce que c'est censé être + efficace ...J'ai remis l'autoreload, & la miracle mon CODE 1 fonctionne. Youpi !!!!!!!!!!!Des fois je me dis quand même que j'aurais bien besoin qu'on m'explique toutes ces subtilités d'Autoreload, Refresh, ComputeWithForm & autres parce que même en lisant la doc ça peut rester nébuleux .....Ah oui au fait, je ne sais toujours pas comment me positionner sur un champ particulier quand on est en mode Lecture (ce champ contient mon petit fichier attaché préféré) alors si someone is here ...@+
albator
 


Retour vers Développement