Masque de PROFILE

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

Masque de PROFILE

Messagepar sandrine antunes » 24 Mars 2003 à 13:45

Bonjour à tous,j'ai besoin de récupérer des infos d'un doc A pour un doc B puis de mettre une infos du doc B dans le doc A. CE qui relie les 2 c'est le nom du demandeur. D'après ce que j'ai lu sur ce site et d'autres, ainsi que la doc designer et suite à une de mes questions, il faudrait que j'utilise un masque dit de "profile" avec lequel je communiquerai à partir d'un GetFieldProfile et SetFieldProfile.LE hic ; mon doc A (document Profile) ne sera pas créé par le demandeur mais par une personne tierce, par contre le doc B lui le sera.Comment fait-on pour créer ce masque de profile car franchement je me noie, peut-être dans un verre d'eau ( et encore) dirons certains d'entre-vous, mais c'est plus une tasse c'est l'océan.Merci de bien vouloir m'expliquer avec moultes détails en long en large et même en travers comment on crée un masque et un doc profil et tout et tout.MErci encore infiniment de m'avoir lu même si vous pouvez pas m'aider.[%sig%]
sandrine antunes
 

Re: Masque de PROFILE

Messagepar Raziel » 24 Mars 2003 à 14:19

Salut,Il faut que tu garde à l'idée que les docs de profile sont des docs très particuliers. Par ex, tu ne peux les afficher dans une vue.Tu n'as pas besoin de créer un masque (sauf si tu veux l'éditer, dans ce cas tu créer un masque comme tu le ferai pour n'importe quel doc) pour pouvoir utiliser un document de profil (il n'existe d'ailleur pas d'option au niveau du masque pour spécifier ce type de chose).Tu as deux types de document de profil : 1. Il y a ceux qui sont "rattaché" à un nom d'utilisateur : dans ce cas tu dois renseigner le dernier champ [nomUtilisateur] 2. Il y a ceux propre à la base : dans ce cas tu mets le dernier champ à vide.Enfin, on peut considérer qu'il y a un troisième type de doc de profil qui est une variant de 1er. En fait, dans pour le champ [nomUtilisateur] tu peux mettre n'importe quoi.Pour créer un doc de profil :En LS : Set notesDocument = notesDatabase.GetProfileDocument( profilename$ [ , username$] )Si le doc n'existe pas, il sera créerEn Formule : @GetProfileField(nomProfil ; nomChamp [ ; nomUtilisateur] ) -> Pour récupérer une valuer @SetProfileField(nomProfil ; nomChamp ; valeur [ ; nomUtilisateur] ) -> Pour affecter une valeurPour éditer un doc de profile : (dans ce cas il te faut un masque)En LS : Set notesUIDocument = notesUIWorkspace.EditProfile( profileName$ [ , userName$] )En Formule : @Command( [EditProfile] ; nomMasque; nomUtilisateur )Voilà, j'espère avoir répondu à ta question
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: Masque de PROFILE

Messagepar sandrine » 24 Mars 2003 à 14:48

Bonjour Raziel,merci pour tes éclaircissments.Mon doc A doit être vu par le service qu'il l'a créé et par la personne concernée, donc le doc profile ne fait pas l'affaire.Comment puis-je faire par rapport à mon problème qui est surtout de mettre à jour un champs de mon doc B vers mon doc A sachant que ce qui les relie est le nom du demandeur. Dans le doc B il est obtenu par un @username et dans mon doc A c'est un champs nom qui est renseigné.Merci pour ta réponse.[%sig%]
Bonne journée.
Sandrine
Avatar de l’utilisateur
sandrine
Maître-posteur
Maître-posteur
 
Message(s) : 431
Inscrit(e) le : 23 Déc 2004 à 09:10
Localisation : Gigondas

Re: Masque de PROFILE

Messagepar Raziel » 24 Mars 2003 à 15:15

Si j'ai bien compris, tu veux à partir du doc B mettre à jour un champ du Doc A.La problématique est de récupérer le doc A. Pour cela tu peux t'appuyer sur une vue dont la permière colonne triée affiche le champ nom du doc A. Dans le cas ou ce champ est multi evalué, coche l'option "Afficher les valeurs multiples comme entrées distinctes"(onglet 2) de la colonne en question.Ensuite tu fait un getdocumentbykey(Cle, true) => Tu as récupéré le doc A.Ne te reste plus qu'à mettre à jour le doc A avec la valeur du doc B.J'espère avoir bien compris cette fois ci ;-))) ? Si c'est pas le cas, n'hésite pas à me le dire...
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: Masque de PROFILE

Messagepar sandrine » 24 Mars 2003 à 16:20

C'est moi, j'hésite pas , j'abuse.tu dis qu'avec la commande "getdocumentbykey" je récupère le doc , ok mais où ???!!!!!!! il est virtuel le temps de la mise à jour du champs ou définitif dans le document créé?Une fois le doc récupéré, je peux faire un FIELD = ce que je veux ,et ça roule ou faut faire autrement ?Heu si c'est du LotusScript pas encore eu cours alors patience , patience.MerciLa 1ère fois tu as très bien compris aussi car je voulais des explications sur le masque "Profile" et ç'été impec ! Merci encore[%sig%]
Bonne journée.
Sandrine
Avatar de l’utilisateur
sandrine
Maître-posteur
Maître-posteur
 
Message(s) : 431
Inscrit(e) le : 23 Déc 2004 à 09:10
Localisation : Gigondas

Re: Masque de PROFILE

Messagepar Raziel » 24 Mars 2003 à 16:59

Heu, j'suis un peu perdu là...Ton Doc A a été créé par une personne (il n'est donc pas virtuel). Même chose pour ton doc B qui est, si j'ai bien compris, ton doc de Profil.Puisque ces deux doc existent, tu peux les récupérer. Visiblement, tu es parti sur des formules. Hors en formule tu ne peux récupérer un doc mais juste une valeur de ce document.Il y a donc 2 possibilités : 1. Tu dois avoir le doc A ouvert en modification pour pouvoir mettre à jour le champ à partir du doc profil B. 2. Tu passes par du LS***Solution 1 : ValeurChampDocB := @GetProfileField(nomProfil ; nomChamp [ ; nomUtilisateur] ). S'il n'y a pas de nomUtilisateur, tu ne renseigne que les 2 permiers paramètres.Ensuite tu fais:FIELD NomChampDocA := ValeurChampDocB=> Le champ du doc A est mis à jour par la valeur du champ du Doc B***Solution 2 (LS). Le doc A n'a pas besoin d'être ouvert.Dim Session as new notessessionDim db as notesdatabaseDim Vue as notesviewDim DocA as notesdocumentDim DocB as notesdocumentset db = Session.currentdatabaseset Vue = db.getview(NomVue) -> Nom de la vue qui liste le doc A est donc la 1ere colonne triée contient le nom du demandeurset DocA = Vue.getdocumentbykey(NomDemandeur, true)set DocB = db.getprofiledocument( profilename$ [ , username$] )if DocA is nothing then exit sub' Mise à jour des champs du doc Acall DocA.replaceitemvalue(NomDuChampDocA, DocB.getitemvalue(NomDucChampDocB)(0))....' Sauvegarde du doc ADocA.save true, falsetu peux mettre le code dans un bouton, dans un agent, un évenement de masque...Si tu veux plus d'infos, n'hésite pas à abuser ;-))
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: Masque de PROFILE

Messagepar sandrine » 25 Mars 2003 à 15:10

Bonjour Raziel,je comprends la philosophie du LS mais j'ai quelques soucis avec profilename$ et [,username$].JE remets tout à plat pour que tu ne sois pas perdu.Mon doc A :c'est la fiche employé , elle contient le nom de l'employe(champs: employe), le nom de son manager le nombre de jours de congé auquels il a droit et un champs ( celui que je veux modifier à travers l'autre doc) qui s'appelle n_restant et qui est le nombre de jours de congé qu'il lui reste quand sa demande est accepté.Ce doc est créé par la drh.Mon doc B:c'est la demande de congé. Il y a le champs "demandeur" qui se rempli tout seul ( @username) des dblookup pour récupérer le nom de son manager et le nombre de jours de congé qui lui reste.et un champs qui s'appelle "reste" qui est le résultat de la soustraction :nbre jours qu'il a moins nbre de jours qu'il vient de prendre.Quand la DRH clique sur "accepter", je souhaite que ce champs "reste" se copie dans la fiche employe du demandeur et dans le champs "n_restant".Pour vérifier que ça fonctionne j'ai créé un bouton auquel j'ai associé ton LS, mais il me met comme erreur "Variable not set".PS: le docA et le docB doivent être vu, d'où le fait que le "doc profile" n'est plus d'actualité car lui est censé être invisible.voilà en plus détaillé si tu peux m'aider. Merci beaucoup.[%sig%]
Bonne journée.
Sandrine
Avatar de l’utilisateur
sandrine
Maître-posteur
Maître-posteur
 
Message(s) : 431
Inscrit(e) le : 23 Déc 2004 à 09:10
Localisation : Gigondas

Re: Masque de PROFILE

Messagepar Raziel » 25 Mars 2003 à 15:29

Salut Sandrine,Merci pour tes explications, j'y vois déjà bcp plus clair. Tu as donc face à deux doc "physiques". On laisse donc tomber le doc de profilEssaie le code suivant derrière ton bouton :Dim Session as new notessessionDim ws as notesuiworkspaceDim Db as notesdatabasedim Vue as notesviewDim DocEmploye as notesdocumentDim DocConge as notesdocumentset db = Session.currentdatabaseset Vue = db.getview(Nom de la vue qui liste les employés dont la 1ère colonne triéé est le nom)set DocConge = ws.currentdocument.documentset DocEmploye = Vue.getdocumentbykey(NomDuDemandeur, true)if DocEmploye is nothing then msgbox "Document Employé introuvable", 0,+16, "Erreur" exit subend ifcall DocEmploye.replaceitemvalue("n_Restant", DocConge.getitemvalue("Reste")(0))DocEmploye.save true, trueVoilà, si tu as d'autres pb ou questions n'hésite pas.
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: Masque de PROFILE

Messagepar sandrine » 25 Mars 2003 à 17:00

Re, re Bonjour,puisque c'est si gentillement proposé..... :)))J'ai mis ton code derrière mon bouton et ....mais il doit y avoir une virgule qu'il n'aime pas.dans le msgbox "Document Employé introuvable),0,+16, "Erreur"il n'aime pas ce qui est après le +16, il me met la ligne en rouge et j'ai droit a un : unexpected: End-of-line, Expected: Expression; ,J'ai donc enlevé ce qui est après le +16, la plus de ligne rouge et quand je clique sur mon bouton magique .... tadaaaaa"A required argument has not been provided".Dans la Fiche Employe le champs s'appelle Employe et dans la Demande de congé il s'appelle Demandeur, je me suis dit ben c'est soit l'un soit l'autre.Que neni même avec de guillement au niveau du champs.A croire que Notes me deteste, si si je t'assure, il n'était pas comme ça au début.Désolée de t'embêter, en tout cas j'apprécie grandement ton aide.
Bonne journée.
Sandrine
Avatar de l’utilisateur
sandrine
Maître-posteur
Maître-posteur
 
Message(s) : 431
Inscrit(e) le : 23 Déc 2004 à 09:10
Localisation : Gigondas

Re: Masque de PROFILE

Messagepar Raziel » 25 Mars 2003 à 17:11

Effectivement, je devrais enlever mes moufles lorsque je tape sur mon clavier.Le bon code me msgbox est le suivant :if DocEmploye is nothing thenmsgbox "Document Employé introuvable", 0+16, "Erreur"exit subend ifPeut importe le nom des champs. Le principal, c'est que dans ta vue, la première colonne(qui doit être triéé) affiche le champ EMPLOYE.Pour le getdocumentbykey tu dois avoir une syntaxe comparable à celle ci.set DocEmploye = Vue.getdocumentbykey(DocConge.getitemvalue("Demandeur")(0), true)Si Notes t'envoie de nouveau une insulte, envoie moi ton code que j'y regarde.Tu ne m'embêtes absolument pas....
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: Masque de PROFILE

Messagepar sandrine » 27 Mars 2003 à 09:53

Bonjour Raziel,Il m'insulte toujours: " A required argument has not been provided".Voici le code:Sub Click(Source As Button) Dim Session As New notessession Dim ws As notesuiworkspace Dim db As notesdatabase Dim Vue As notesview Dim FE As notesdocument Dim DC As notesdocument Set db = Session.currentdatabase Set Vue = db.getview(VFE) Set DC = ws.currentdocument.document Set FE = Vue.getdocumentbykey(DC.getitemvalue("demandeur")(0),True) If FE Is Nothing Then Msgbox "Document Employé introuvable",0+16, "Erreur" Exit Sub End If Call FE.replaceitemvalue("n_restant", DC.getitemvalue("reste")(0))FE.save True, True End Submerci de ton aide, A+Sandrine
Bonne journée.
Sandrine
Avatar de l’utilisateur
sandrine
Maître-posteur
Maître-posteur
 
Message(s) : 431
Inscrit(e) le : 23 Déc 2004 à 09:10
Localisation : Gigondas

Re: Masque de PROFILE

Messagepar Raziel » 27 Mars 2003 à 10:02

Salut Sandrine,Notes n'est pas content car le nom de la vue pour le getview doit être entre guillemetsce qui donne : Set Vue = db.getview("VFE")
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: Masque de PROFILE

Messagepar sandrine » 27 Mars 2003 à 10:18

Ca va un peu mieux....maintenant j'ai "Objet Variable not Set",le nom des champs sont corrects j'ai vérifié x fois.L'employé il le trouve car sinon j'aurai le message "Document Employé introuvable".D'autant que j'utilise déjà cette vue pour récupérer des infos à travers un dblookup.C'est grave Docteur?!
Bonne journée.
Sandrine
Avatar de l’utilisateur
sandrine
Maître-posteur
Maître-posteur
 
Message(s) : 431
Inscrit(e) le : 23 Déc 2004 à 09:10
Localisation : Gigondas

Re: Masque de PROFILE

Messagepar Raziel » 27 Mars 2003 à 10:22

Ton erreur vient de ta déclaration de ton notesuiworkspace. Il te faut utiliser la méthode new.Ce qui donne ceciDim ws As new notesuiworkspace
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: Masque de PROFILE

Messagepar sandrine » 27 Mars 2003 à 10:27

Ca marche !Génial !!Gros bisous , merci infiniment !!!
Bonne journée.
Sandrine
Avatar de l’utilisateur
sandrine
Maître-posteur
Maître-posteur
 
Message(s) : 431
Inscrit(e) le : 23 Déc 2004 à 09:10
Localisation : Gigondas


Retour vers Développement

cron