Page 1 sur 2
$FILE

Publié:
05 Mars 2003 à 16:17
par yop
petit problème.j'ai un doc avec des rattachements.les rattachements ne sont pas dans un champ Body ou tout autre champ texte riche, ils sont A PART.je veux copier ces rattachements vers un autre doc.si je fais "copyallitems", ça marche, mais je récupère tout le reste aussi

comment copier seulement les items $FILE d'un doc vers un autre.j'ai essayé "copyitem" et "copyitemtodocument" mais cela ne fonctionne pas.ps: j'ai pas oublié le tilde.qui a une idée ?merci.
Re: $FILE

Publié:
05 Mars 2003 à 17:01
par Raziel
Tu peux boucler sur les objets contenu dans ton champ Body.EX : Dim Body as variantSet Body = doc.GetFirstItem( "Body" )If ( Body.Type = RICHTEXT ) Then Forall Objets In Body.EmbeddedObjects If ( Objets.Type = EMBED_ATTACHMENT ) Then ... End If End ForallEnd If// le EmbeddedObjects te retourne tous les attachements, liens... contenu dans ton champ body.// le EMBED_ATTACHMENT signifie que cet objet est un fichier.
Re: $FILE

Publié:
05 Mars 2003 à 17:33
par yop
^__^merci, mais tu as mal lu mon problème.mes fichiers ne sont pas dans un champ texte riche, ni Body, ni n'importe quel autre champ.C'est juste des $FILE, rien d'autre.Comment les copier vers un autre document ?
Re: $FILE

Publié:
05 Mars 2003 à 17:57
par Sylvain
Tu peux initialiser ton champ $FILE : Set item = doc.GetFirstItem("$FILE")puis : Set embedObject = doc.GetAttachment(Cstr(item.values(0))) ou la méthode Raziel du Forall.[%sig%]
Re: $FILE

Publié:
05 Mars 2003 à 22:50
par yop
Je peux pas employer la méthode Raziel du Forall."Forall Objets In Body.EmbeddedObjects"J'ai pas de champ Body, ni de champ texte riche. Les rattachements sont à part. Personne n'enregistre des rattachements comme moi ??Pour expliquer, si tu ouvres le doc comme un mail dans le client Notes, normalement, les rattachements sont à la fin de ton texte du champ Body. Moi, après le texte du champ body, j'ai une ligne qui fait toute la longueur et sous cette ligne, j'ai les pièces jointes. Ceci, sur le client Notes (pas web).Dans ce cas, on a des $FILE, mais aucun champ texte riche ne considère que les PJ lui appartient.donc, je peux faire tous les forall que je veux sur un "champ.embeddedobjects", j'ai une erreur vu qu'ils ne sont dans aucun champ. Lotus emploi le code 1084 pour ça.par contre, je testerais demain ton "Set embedObject = doc.GetAttachment(Cstr(item.values(0)))" en espérant que ça marche. d'ailleurs, je comprends pas trop cette ligne.
Re: $FILE

Publié:
06 Mars 2003 à 09:44
par Sylvain
J'vois la tête quelles zont tes pièces jointes.Le $FILE même s'il n'y parait pas est rien de plus qu'un champ dont le nom commence par un $ histoire de faire peur aux développeurs mais on peut le manipuler sans problème.Bon il est vrai que le $ empeche l'utilisation du forall.Pour récupérer une piece jointe bien précise il faut passer par un getAttachemnt.Par contre si tu veux récupérer l'ensemble des pieces jointes, je pense que tu peux faire un item.EmbeddedObjects à vérifier.[%sig%]
Re: $FILE

Publié:
06 Mars 2003 à 10:27
par yop
les champs qui commencent par $ ne me font pas peur, car je connais le truc de la mort qui tue pour les manipuler. c'est ce que j'ai mis dans mon premier message : "je n'ai pas oublié le tilde".car pour appeler un tel champ, il faut mettre ~$.ex:set item=doc.getfirstitem("~$FILE")mais même avec ça, je peux l'initialiser mais c tout.je teste ta méthode maintenant.
Re: $FILE

Publié:
06 Mars 2003 à 10:35
par yop
parce que sans tilde, tu as un 'type mismatch'.lotus ne divulgue pas trop ce truc, car normalement, on ne peut pas appeler un champ commençant par $ pour le modifier. mais de cette manière, si.
Re: $FILE

Publié:
06 Mars 2003 à 10:48
par yop
j'ai créé un doc avec 2 PJ. une dans le champ body, l'autre rattaché à part.voici le script

im s As New notessessionDim db As notesdatabaseDim v As notesviewDim doc As notesdocumentDim rtitem As notesrichtextitemDim objet As notesembeddedobjectSet db=s.currentdatabaseSet v=db.getview("osallbyform")Set doc=v.getfirstdocumentSet rtitem=doc.getfirstitem("~$file")Forall x In rtitem.embeddedobjects Msgbox x.nameEnd Forallsi je remplace ~$file par body, je récupère le nom de la pièce jointe sans problème (celle qui se trouve dans body, pas l'autre)si je laisse ~$file, j'ai un 'object variable not set'
Re: $FILE

Publié:
06 Mars 2003 à 10:54
par yop
Dim s As New notessessionDim db As notesdatabaseDim v As notesviewDim doc As notesdocumentDim rtitem As notesrichtextitemDim objet As notesembeddedobjectSet db=s.currentdatabaseSet v=db.getview("osallbyform")Set doc=v.getfirstdocumentSet rtitem=doc.getfirstitem("~$file")Set objet = doc.GetAttachment(Cstr(rtitem.values(0)))ça marche pas non plus avec le getattachment ('object variable not set')
Re: $FILE

Publié:
06 Mars 2003 à 10:58
par Sylvain
As tu essayé le getAttachment sans le tild ?[%sig%]
Re: $FILE

Publié:
06 Mars 2003 à 11:08
par yop
on peut pas appeler un champ $ sans tilde.si je le fait, j'ai un 'type mismatch'Sub Initialize1 Dim s As New notessession2 Dim db As notesdatabase3 Dim v As notesview4 Dim doc As notesdocument5 Dim rtitem As notesrichtextitem6 Dim objet As notesembeddedobject7 Set db=s.currentdatabase8 Set v=db.getview("osallbyform")9 Set doc=v.getfirstdocument10 Set rtitem=doc.getfirstitem("~$file")11 Set objet = doc.GetAttachment(Cstr(rtitem.values(0)))End Subavec le tilde (ce qui est la forme correcte), j'ai une erreur en 11 'object variable not set'.sans le tilde (forme incorrecte), j'ai évidemment l'erreur en 10 'type mismatch'.logique.ça m'énerve ce truc.
Re: $FILE

Publié:
06 Mars 2003 à 11:13
par yop
remarque que si je prends le champ body, j'ai un 'variant does not contain a container' avec ta ligne 11.
Re: $FILE

Publié:
06 Mars 2003 à 12:39
par raisin
Si ca peut t'aider:If doc.HasItem( "$FILE" ) Then Set item = doc.GetFirstItem( "$FILE" ) Forall v In item.Values objectname = v End ForallSet object = doc.GetAttachment(Cstr(objectname)) Call object.ExtractFile("\repertoire\" & Cstr(objectname)) Set rtitem = NewDoc.CreateRichTextItem( "ContFichierjoint" )Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", "\repertoire\" & Cstr(objectname)) Kill "\repertoire\" & Cstr(objectname)End IfDonc récupère le fichier joint, l'extrait, le copie et le supprime dans le rep.
Re: $FILE

Publié:
06 Mars 2003 à 13:43
par yop
y'a vraiment pas moyen de copier le rattachement sans passer par une sauvegarde temporaire sur le serveur, snif snif... bouhouhou...