Page 1 sur 3
Vue integrée / selection d'une ligne et ouverture d'un doc

Publié:
21 Juin 2011 à 15:42
par MdmZ
Bonjour,
Je souhaite à l'aide d'une vue integrée dans une form (ouverte dans un dialogbox) ouvrir un document héritant du document sélectionnée dans la vue lors de l'appui sur le bouton Ok.
voici le code :
nSuccess = workspace.DialogBox("frmofSelection",True,True,False,False,False,False,"Title",Doc,True)
If nSuccess Then
//Code
End If
A la place de //Code, je souhaite donc récuperer la ligne sélectionnée et ouvrir l'autre document ayec pour père le document sélectionnée.
Merci,

Publié:
21 Juin 2011 à 15:44
par Michael DELIQUE
salut
ne passe pas par une dialogbox mais par pciklistcollection.

Publié:
21 Juin 2011 à 15:46
par MdmZ
Le problème c'est que le document que je veux ouvrir n'est pas celui sélectionné mais un document héritant de celui-ci.
Ca ne résoud donc pas mon problème..

Publié:
21 Juin 2011 à 15:50
par Michael DELIQUE
re,
c'est un document pere ou fils que tu veux récupéré ?
si pere tu aurra son universalid dans le champ $ref (zut j'ai un trou de mémoire sur le nom du champ) ou ParentDocumentUNID
si c'est un document fils via notesDocument.Responses

Publié:
21 Juin 2011 à 15:52
par MdmZ
je veux créer un document fils à l'aide du document selectionné.
Et pr récuperer le document de la ligne sélectionnée, comment on fait ?

Publié:
21 Juin 2011 à 15:58
par Michael DELIQUE
re,
pur créé un document fils regarde à "Call notesDocument.MakeResponse( document )" dans l'aide en ligne
et pour récupéré le doc sélectionné d'une vue intégré c'est une question déjà abordé =>
http://forum.dominoarea.org/vue-a-inser ... 27147.html

Publié:
21 Juin 2011 à 16:43
par roubech
comme l'a dit Michael : PickListCollection + MakeResponse
quelquechose de ce genre :
[syntax="LotusScript"]set dc = ws.PickListCollection( PICKLIST_CUSTOM , False, db.Server, db.FilePath, "MaVue", "Sélection", "Sélectionner le doc" , False)
if dc.Count = 0 then
print "Opération abandonnée"
exit sub
end if
set docParent = dc.GetFirstDocument
set docFils = New NotesDocument( db )
docFils.Form = "MonMasqueReponse"
call docFils.MakeResponse( docParent )
call ws.EditDocument( docFils, True )
[/syntax]

Publié:
21 Juin 2011 à 17:09
par MdmZ
Merci bcp ! J'ai l'erreur "incorrect argument type : object expected" sur la dernière ligne, sur la méthode EditDocument, qui est censée ouvrir le document je suppose..

Publié:
21 Juin 2011 à 17:59
par roubech
j'ai tapé ça vite fait dans l'éditeur du site, donc pas de complétion automatique comme dans le designer avec la liste des arguments ...
donc comme ça m'arrive souvent avec cette méthode, j'ai inversé les 2 arguments
Ce que tu aurai pu voir par toi même en vérifiant l'aide en ligne
http://publib.boulder.ibm.com/infocente ... ETHOD.html

Publié:
22 Juin 2011 à 09:14
par MdmZ
Oui pardon, j'ai regardé mais je devais etre ailleurs.. (pas très fort de ma part).
Par contre, je ne sais pas pr quelle raison, mais les champs calculés du document fils devant hériter du document parent sont vides lors de l'appel de ce bout de code. (Cela marche quand je ne passe pas par la picklist, que j'ouvre le document parent, et que je crée le document fils, mais pour une question d'ergonomie ce n'est pas terrible..)
J'ai l'impression que l'héritage ne fonctionne pas lorsque l'on utilise une picklist..

Publié:
22 Juin 2011 à 09:21
par roubech
tous simplement à cause du context
dans la mesure ou tu te trouve sur un doc A
tu passes par la picklist pour selectionner le doc B
et tu ouvres un nouveau doc C
mais le doc courant au moment de l'ouverture du doc C est toujours le doc 1 et non le doc B
doc C ne peut donc rien hériter de doc B puisqu'il n'a pas été ouvert à l'écran
soit après avoir sélectionné dans la picklist tu ouvres le oc B et tu fait un autre bouton sur le masque B pour créer le doc C
soit tu alimente directement les champs qui doivent hériter dans le code, entre la picklist et l'ouverture
[syntax="LotusScript"]docFils.Form = "MonMasqueReponse"
' ici ajoute tout ce qui doit être repris
docFils.Champ1 = docParent.Champ1
docFils.Champ2 = MonCalcul(docParent.Champ1)
docFils.AccesAuteur = docParent.AccesAuteur
docFils.AccesLecteur = docParent.AccesLecteur
docFils.RefParent = docParent.RefDoc
docFils.RefDoc = docParent.RefDoc(0) + "-1"
' ...
call docFils.MakeResponse( docParent )[/syntax]

Publié:
22 Juin 2011 à 09:40
par MdmZ
Ok donc j'en reviens à mon premier problème, si j'utilise le deuxième solution, comment je fais pour récupérer le lien vers le document parent et le mettre dans un champ calculé ? (A la base il avait pour valeur @InheritDocumentUniqueID)

Publié:
22 Juin 2011 à 09:42
par Michael DELIQUE
re,
comme je ne vois pas trop de qu'elle genre de lien tu parle, regarde dans l'aide en ligne à
Call notesRichTextItem.AppendDocLink( linkTo, comment$ [, HotSpotText$ ] )
ou NotesDocument.UniversalID

Publié:
22 Juin 2011 à 09:53
par roubech
le MakeResponse fait le lien natif Notes (alimente le $Ref)
maintenant si tu veut stocker dans un autre champ un "lien", soit c'est un lien doc au sens Notes et là tu as AppendDocLink comme mentionné par Michael, soit tu as comme dans mon exemple de code, la possibilité d'alimenter un champ du doc fils avec un clé du doc parent : docFils.RefParent = docParent.RefDoc ou si tu veut travailler avec le UNID docFils.ParentUNID = docParent.UniversalID, mais à mon sens ça n'apporte rien car le MakeResponse aliment ce UNID dans le champ $Ref et tu le récupères ensuite avec la méthode native ParentDocumentUNID
je suppose que tu parle de ce post là
http://forum.dominoarea.org/lien-dun-do ... 27155.html
dans lequel je t'ai proposé un bout de code pour ouvrir le doc parent

Publié:
22 Juin 2011 à 09:54
par MdmZ
J'ai trouvé une autre solution en créant un hotspot contenant la valeur "NotesURL" du document parent !
Tout fonctionne,
Merci beaucoup pour tout !