Selection documents

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

Selection documents

Messagepar camilleB » 08 Fév 2013 à 02:14

Bonjour, je cherche à sélectionner dans une vue des documents
- sur 6 mois depuis le début de l'année. (vue A)
- Ensuite permettre de saisir une période pour le critère de sélection (rendre dynamique la vue) (vue B)

Merci à vous
cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Selection documents

Messagepar Michael DELIQUE » 08 Fév 2013 à 10:27

salut

pour les 6mois tu peux faire un select sur le date, mais ça bouffe bcp de ressource.

pour les vues avec un select dynamique, la seule solution est de passé par du LS pour changer la formule.
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Selection documents

Messagepar camilleB » 08 Fév 2013 à 20:46

Michael DELIQUE a écrit:salut

pour les 6mois tu peux faire un select sur le date, mais ça bouffe bcp de ressource.

pour les vues avec un select dynamique, la seule solution est de passé par du LS pour changer la formule.



1 /La modification de la formule de sélection implique d'être concepteur dans l'ACL!!

2 / Effectivement l'utilisation de @today et @now sont pas conseillés
Select @adjust(dateaccord;0;0;-180;0;0;0)<=@Environnement("Today") me semble t-il!

MErci pour votre aide
cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Selection documents

Messagepar Michael DELIQUE » 08 Fév 2013 à 23:04

plus que pas conseillé quelque soit la méthode employé dans le select (@now, @today...)

bon d'un autre coté si ta base et ta vue contiennent peu de documents ça va pas changer la face du monde.

mais il faut bien comprendre que l'heure changent constamment le refresh d'une vue est bcp plus long. une fois j'ai eu une vue qui mettait plus de 3 minutes a se rafraichir et quelques secondes en utilisant un méthodes qui mettait un flag dans les documents a afficher
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Selection documents

Messagepar camilleB » 17 Fév 2013 à 20:48

Salut,
Bon! je reviens d'une petite croisière dans la caraïbes! Et il me faut reprendre le boulot lol
Je suis en train de tester cette technique (Une parmi pleins d'autres)!

1. Ma sélection de documents dans la vue: Select @adjust(@Environnement("Today");0;0;-180;0;0;0)<DateReference<@Environnement("Today")
2. Création d'un agent planifié qui va mettre à jour une variable d'env. $Today dans le notes.ini du serveur (après minuit)
@SetEnvironment("Today";@Text(@Today))
3. Création d'un doc programme pour indexer la vue en question
UPDALL nomdb -r -t nomvue

Toutes ces méthodes ont leurs inconvénients et avantages!
cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Selection documents

Messagepar camilleB » 17 Fév 2013 à 23:43

Salut, je rencontre quelques petits soucis.
Aucun document n'est retourné par la formule! Quelle est la variable du notes.ini qui est pris en compte dans ce cas (serveur ou client)?
datemin:=@adjust(@Environnement("Today");0;0;-180;0;0;0)
datemax:=@Environnement("Today")
select form="NomForm" & datemin<dateReference<datemax
Merci pour vos lumières
cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Selection documents

Messagepar Michael DELIQUE » 18 Fév 2013 à 11:41

salut

les @enivronement ne fonction pas dans le select des vues. passe @today directement
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Selection documents

Messagepar camilleB » 18 Fév 2013 à 15:37

Salut, oups!
J'ai suivi une des techniques implémentées ici:
http://lotus-blogs.blogspot.com/2007/07/how-timedate-views-cause-performance.html

Dans ma formule de sélection j'ai essayé aussi pour voir l'effet:
datemin:=@Adjust(@Today;0;0;-1;0;0;0);
datemax:=@Today;
SELECT (Form="frmDos" & Forcage="Oui" & datemin<DateReference<datemax)

Rien n'est affiché!

cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Selection documents

Messagepar camilleB » 19 Fév 2013 à 03:35

Salut,
Bien je change alors de méthode et je test un agent qui va mettre à jour la formule de sélection de la vue. Je n'avais jamais effectué ce genre de manip avant!
Code de l'agent
Code : Tout sélectionner
Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim sToday As String
   Dim sYesterday As String
   Dim view As NotesView
   Dim sActualSelFormula As String
   Dim sNewSelFormula As String
   Dim sActualColFormula As String
   Dim sNewColFormula As String
   Dim dateTime As New NotesDateTime( "" )
   Dim vYesterday As Variant
   Dim col As notesviewcolumn
   
   On Error Goto processError
   Call initViewData()
   Set db = s.currentDatabase
   dateTime.LSLocalTime = Now
   sToday = dateTime.Dateonly
   Forall vw In lstViewList
      Set view = db.getView(Listtag(vw))
      On Error Goto processNext
      'again do not make this stuff for folders...
      If view.isFolder = False Then
         sActualSelFormula = ""
         sNewSelFormula = ""
         sActualSelFormula = view.Selectionformula
         If sActualSelFormula <> ""  Then
            sNewSelFormula = Replace(vw, "@Today", {@TextToTime("}+sToday+{")})
            sNewSelFormula = Replace(sNewSelFormula, "@Yesterday", {@TextToTime("}+sYesterday+{")})
            view.SelectionFormula = sNewSelFormula [b]<--Erreur ici et sortie de la boucle[/b]
         End If
         Call view.Refresh()
         
      End If
processNext:
   End Forall
   On Error Goto processError
   Exit Sub
processError:
   Call raiseError()

la procédure initViewData() contient le code suivant:
Code : Tout sélectionner
Sub initViewData
   lstViewList("vwDossierForce") = {SELECT Form = "fmDossier" & (@Adjust(@Today;0;0;-180;0;0;0)<=dteForcage}
End Sub

En exécutant l'agent manuellement le code plante au niveau de view.SelectionFormula = sNewSelFormula !! Je ne comprends pas l'erreur car je suis gestionnaire de la base!
En planifiant l'agent j'ai une erreur à la console domino "Amgr: Error opening document in .... document after receiving agent document update message!
Dans la formule de sélection de la vue j'ai mis SELECT Form = "fmDossier" & (@Adjust(@Today;0;0;-180;0;0;0)<=dteForcage donc j'ai encore l'icone bleu de refresh qui s'affiche.
Merci de votre aide si vous avez mis en place se genre de vue!
cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Selection documents

Messagepar Michael DELIQUE » 19 Fév 2013 à 22:21

avec un peu de retard

SELECT (Form="frmDos" & Forcage="Oui" & datemin<DateReference<datemax) devrait marcher meme sije préfère séparer les conditions. es-tu sur que DateRéférence est une date

pour le LS a mon avis ta formule a un pb. mais vue que tu passe en LS et que ton agent va tourner tous les jours pourquoi tu passerais pas directement la date du jours ce qui t'éviterais les pb de delais de rafraichissement a rallonge
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Selection documents

Messagepar camilleB » 20 Fév 2013 à 11:50

Salut,
merci pour ta réponse Michael!
Après relecture de la formule, tu avais raison il y avait bien une erreur ")" que je ne voyais pas à force!
Code : Tout sélectionner
sNewSelFormula = Replace(vw, "@Today",sToday)

La formule de sélection de la vue est bien modifiée par exemple si je ré-ouvre la vue dans Designer. Pour l'instant l'agent est lancé manuellement (je suis Gestionnaire dans l'ACL)!
Code : Tout sélectionner
SELECT form="frmDossier" & Forcage= "Oui"& (dteForcage>@Adjust(@textToTime(20/2/2013);0;0;-180;0;0;0))

Mais par contre l'icone de refresh est toujours affichée! Est-ce normal?
Je vais tester avec uniquement la date du jour dans l'agent!

cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45

Re: Selection documents

Messagepar Michael DELIQUE » 20 Fév 2013 à 13:29

re,

pour l'icone regarde les options de refresh de ta vue

pour le select changé par un agent essais ça

dim MaDate as String

MaDate = "12/05/2018"

{form="frmDossier" & Forcage= "Oui"& (dteForcage>[}+MaDate+{])}

tu n'a plus le souci de lenteur d'un select sur @today ou @now, mais l'agent doit mettre a jours le select tout les jours.
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Re: Selection documents

Messagepar camilleB » 04 Mars 2013 à 14:15

J'ai fait une grande avancée avec la modification du Sélect de la vue!
Je comprends mieux le procédé maintenant.
Dans le même ordre d'idée, je dois faire la sélection de documents en fonction d'une plage date début à date fin.
Comme je ne veux pas rendre l'utilisateur "Concepteur" dans l'ACL j'ai pensé à procéder ainsi:
0. rendre la vue partagée, devenant privée à la 1ère utilisation pour que la formule select soit différente pour chaque utilisateur
1. L'utilisateur rempli un masque avec les dates début et date fin
2. Il execute un agent RunOnserver qui va modifier le select de la vue et faire le refresh
une recommandation quelquonque? Merci par avance!
Cdt
camille
camilleB
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 176
Inscrit(e) le : 18 Jan 2012 à 23:45


Retour vers Développement

cron