$FILE

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

$FILE

Messagepar yop » 05 Mars 2003 à 16:17

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.
yop
 

Re: $FILE

Messagepar Raziel » 05 Mars 2003 à 17:01

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.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: $FILE

Messagepar yop » 05 Mars 2003 à 17:33

^__^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 ?
yop
 

Re: $FILE

Messagepar Sylvain » 05 Mars 2003 à 17:57

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%]
Avatar de l’utilisateur
Sylvain
Maître-posteur
Maître-posteur
 
Message(s) : 473
Inscrit(e) le : 16 Déc 2004 à 00:20
Localisation : Rennes

Re: $FILE

Messagepar yop » 05 Mars 2003 à 22:50

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.
yop
 

Re: $FILE

Messagepar Sylvain » 06 Mars 2003 à 09:44

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%]
Avatar de l’utilisateur
Sylvain
Maître-posteur
Maître-posteur
 
Message(s) : 473
Inscrit(e) le : 16 Déc 2004 à 00:20
Localisation : Rennes

Re: $FILE

Messagepar yop » 06 Mars 2003 à 10:27

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.
yop
 

Re: $FILE

Messagepar yop » 06 Mars 2003 à 10:35

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.
yop
 

Re: $FILE

Messagepar yop » 06 Mars 2003 à 10:48

j'ai créé un doc avec 2 PJ. une dans le champ body, l'autre rattaché à part.voici le script :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")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'
yop
 

Re: $FILE

Messagepar yop » 06 Mars 2003 à 10:54

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')
yop
 

Re: $FILE

Messagepar Sylvain » 06 Mars 2003 à 10:58

As tu essayé le getAttachment sans le tild ?[%sig%]
Avatar de l’utilisateur
Sylvain
Maître-posteur
Maître-posteur
 
Message(s) : 473
Inscrit(e) le : 16 Déc 2004 à 00:20
Localisation : Rennes

Re: $FILE

Messagepar yop » 06 Mars 2003 à 11:08

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.
yop
 

Re: $FILE

Messagepar yop » 06 Mars 2003 à 11:13

remarque que si je prends le champ body, j'ai un 'variant does not contain a container' avec ta ligne 11.
yop
 

Re: $FILE

Messagepar raisin » 06 Mars 2003 à 12:39

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.
raisin
 

Re: $FILE

Messagepar yop » 06 Mars 2003 à 13:43

y'a vraiment pas moyen de copier le rattachement sans passer par une sauvegarde temporaire sur le serveur, snif snif... bouhouhou...
yop
 

Suivant

Retour vers Développement

cron