Page 1 sur 1

Recalcul des champs à l'Affichage en fonctions d'un autre ch

MessagePublié: 05 Août 2003 à 14:47
par sandrine
Bonjour,j'ai un masque qui contient des champs "calculé à l'affichage" car il récupère des valeurs par rapport à une vue.J'aimerai que tant que mon champs A soit vide, chaque fois qu'on ouvre le document les champs soient recalculés.Je ne connais pas suffisamment le Lotus Script pour me dépatouiller toute seule.Est-il possible de faire recalculer certains champs mais pas tous ?Merci[%sig%]

Re: Recalcul des champs à l'Affichage en fonctions d'un autr

MessagePublié: 05 Août 2003 à 15:55
par Droad
Pas sûr d'avoir bien compris, pourquoi du LS ?[%sig%]

Re: Recalcul des champs à l'Affichage en fonctions d'un autr

MessagePublié: 06 Août 2003 à 07:24
par sandrine
Bonjour,j'ai pensé en LS à cause du queryopen mais s'il y a une autre solution ça me va aussi.Ce masque est une demande de congé, étant donné qu'une personne peut faire plusieurs demandes simultannées mais tant qu'elles ne sont pas validées par la DRH son "compteur" ne se décrémente pas. Dans ce masque je récupère le nombre de jours de congé restant du demandeur, si une de ses demandes est accepté alors quand la drh ouvrira une autre à valider il faut que dans le champs où je récupère le nombre de jours de congé restant soit remis à jours.J'ai mis le champ "calculé à l'affichage" mais ça fonctionne hélas pas comme il faut, d'où l'idée d'utiliser le queryopen.Mais comme je l'ai dit plus haut s'il y a une autre solution no problem !En tout cas merci de t'être penché sur la question.[%sig%]

Re: Recalcul des champs à l'Affichage en fonctions d'un autr

MessagePublié: 06 Août 2003 à 10:07
par Droad
Quelle est la formule du champ ?[%sig%]

Re: Recalcul des champs à l'Affichage en fonctions d'un autr

MessagePublié: 06 Août 2003 à 10:16
par sandrine
Pour une (récup valeur par rapport à une vue)lutype := "Notes":"NoCache";db := "":"";vue := "VFE";cle :=demandeur;col := 7;FIELD A := @DbLookup(lutype;db;vue;cle;col);lutype1 := "Notes":"NoCache";db1 := "":"";vue1 := "VFE";cle1 :=demandeur;col1 :=5;FIELD B :=@DbLookup(lutype1;db1;vue1;cle1;col1);Ac := v_actuel;ensuite j'en ai une autre qui est lancer via un bouton, voici le codeSub Click(Source As Button) Dim session As New NotesSession Dim ws As New notesuiworkspace Dim doc As NotesDocument Dim uidoc As NotesUIDocument Dim startdate As NotesDateTime Dim enddate As NotesDateTime Dim startitem As NotesItem Dim enditem As NotesItem Dim counter As Integer Dim flag As Integer Dim days As Integer Dim counterbis As Integer Dim save As Integer Dim hookdoc As NotesDocument Dim hookview As NotesView Dim db As NotesDatabase Dim duration() As String Set db = Session.currentdatabase Set doc = ws.currentdocument.document Set startitem = doc.GetFirstItem("startdate") Set startdate = startitem.DateTimeValue Set enditem = doc.GetFirstItem("enddate") Set enddate = enditem.DateTimeValue Set hookview = db.GetView("holidays") Set hookdoc = hookview.getdocumentbykey("holidays",True) If doc.startdate(0) ="" Or doc.enddate(0)="" Then doc.TotalDays1="" And doc.TotalDays2="" End If Do While startdate.TimeDifference(enddate) <= 0 flag = 0 days = Weekday(startdate.LSLocalTime) If days <> 1 And days <> 7 Then Forall holiday In hookdoc.allholidays If Cdat(holiday) = startdate.LSLocalTime Then flag = 1 End Forall If flag = 0 Then Redim Preserve duration (0 To counter) duration(counter) = startdate.LSLocalTime counter = counter+1 End If End If Call startdate.AdjustDay(1) Loop REM If doc.actueln1(0) != 0 Then REM doc.totaldays2 = counter REM Else REM doc.totaldays1 = counter REM End If If counter <= doc.actueln1(0) Then doc.totaldays1 = counter Else If counter > doc.actueln1(0) And doc.actueln1(0) <>0 Then save = doc.actueln1(0) counterbis = counter - doc.actueln1(0) doc.totaldays1 = save doc.totaldays2 = counterbis Else doc.totaldays2 = counter End If End If Dim workspace As New NotesUIWorkspace Set uidoc = workspace.CurrentDocument Call uidoc.Refresh Call uidoc.RefreshEnd Subet pour finir un champs qui se calcul en fonction du résultat de ces deux là.A := @TextToNumber(v_actuel);B := @TextToNumber(v_totaldays);@If (B = NULL; actuel;A - B)il y a des @TexttoNumber car les champs sont modifiables pour récup des valeurs et je les cache pour qu'ils ne puissent être modifié par les demandeurs et consort.Merci[%sig%]

Re: Recalcul des champs à l'Affichage en fonctions d'un autr

MessagePublié: 06 Août 2003 à 15:54
par Droad
Boudiou, désolé mé cé toujours pô clair ...>> Pour une (récup valeur par rapport à une vue)>> ...>> Ac := v_actuel;C'est dans une action, un champ (lequel) ?ensuite j'en ai une autre qui est lancer via un bouton, voici le code>> Sub Click(Source As Button)>> ...>> End SubOk. totaldays1 et totaldays2 sont mis à jour (mais tu les utilises ou ensuite ?)>> et pour finir un champs qui se calcul en fonction du résultat de ces deux là.>>>> A := @TextToNumber(v_actuel);>> B := @TextToNumber(v_totaldays);>> @If (B = NULL; actuel;A - B)D'ou viennent les valeurs v_actuel, v_totaldays et actuel ?[%sig%]

Re: Recalcul des champs à l'Affichage en fonctions d'un autr

MessagePublié: 07 Août 2003 à 07:52
par sandrine
Bonjour,je vais essayé d'expliquer le masque et de dire qui fait quoi.La plupart des champs sont modifiables et sont modifiés par des action tel que : "envoyer demande", "accepter" "refuser". Pour qu'ils ne soit pas modifier par des intervenants mais il faut les voir quand même j'ai des chmaps qui sont calculés à l'affichage et qui reprennent la valeur du champs auquels ils sont rattachés. voici un exemple:champs modifiable : actuel et le champs qui sert pour l'affichage v_actuel.Tous les champs qui servent à afficher la valeur d'un autre champs commence par "v" (visu).Ensuite pour ne pas faire compliquer ma direction m'a demandé que les congés soient visibles sur 2 années mais que ce soit distinct.De plus il faut éviter que les gens calculent le nombre de jours de congé pris (c'est le prog en Lotus Script qui intègre en plus s'i faut déduire de l'année précédente si les congés ne sont pas soldés ou solde les congés de l'année précédente et déduit de l'année en cours).Afin que ce joli petit monde ne réfléchisse pas. J'ai créé un masque "Fiche Employé" qui contient certaines informations dont les jours de congé. Et à l'aide d'un @Dblookup je récupère les informations dont j'ai besoin. Nombre de jours restants notamment.Pour le Ac : Dans le @dblookup en fait je regarde 2 valeurs les jours de congé initiaux et les jours de congé restants. Mes Fameux A et B le Ac récupère en fait la valeur du champs actuel au cas où ce n'est pas un nouveau document; car si ce n'est pas un nouveau document et que par ailleurs il a été validé par la DRH il ne doit pas modifié par le @dblookup.Une fois qu'on a récupéré combien il lui reste à ce charmant individu, on calcul le nombre de jours de congé pris (totaldays 1 ou 2 suivant l'année)Puis on fait une joli soustraction pour lui dire combien il lui restera (reste).Tant que ce n'est pas validé par la DRH, les champs doivent se calculer à chaque ouverture du masque car si la personne a fait plusieurs demandes en même temps et que certaines ont été validé par la DRH ses jours de congé restants ne sont plus les mêmes.je suis passé par les champs de visu (v_totaldays par exemple) car lors de la soustraction j'avais des erreurs et donc j'ai trouvé cette solution (qui n'est sans doute pas la meilleure et la plus performante) pour résoudre mon soucis.J'espère que tu me suis toujours......En résumé tout doit se recalculer y compris le script du bouton d'action ( et oui le calcul du nombre de jours est actionné par un bouton) tant que la drh n'a pas validé.J'ai essayé le calculé à l'affichage mais ça fonctionne bizarrement ça vient du code que j'y ai mis mais .....Si tu as des suggestions (ormis acheter un logiciel tout prêt qui tourne sous Notes) je suis à ton écoute.Car pour corser le tout je dois créer un autre masque calqué sur celui-ci mais il est destiné à un chef qui fait une demande pour ses subalternes et là le @dblookup me fait une joli erreur car quand j'ouvre le masque n'ayant pas encore sélectionné l'employé il ne peut pas faire le @dblookup et je ne sais pas comment faire pour qu'il se lance après la sélectionner de l'employé sauf en utilisant un bouton.Merci de m'avoir lu jusqu'au bout et ene espérant avoir été un peu plus clair.[%sig%]

Re: Recalcul des champs à l'Affichage en fonctions d'un autr

MessagePublié: 07 Août 2003 à 12:28
par sandrine
Bonjour,j'ai mis mon Script dans un Agent et lorqu'on clique sur le bouton ça lance l'agent. j'ai revu tous ce qui concerne le masquage des boutons et l'affichage on fonction.J'ai fait plusieurs tests, ça fonctionne presque parfaitement.Je sais rafraichir une vue en Script ce que je souhaiterai c'est dans le query open lancer mon agent et faire un refresh.Quelqu'un pourrait-il me l'écrire SVP?Merci[%sig%]