Page 1 sur 1

Selection documents

MessagePublié: 08 Fév 2013 à 02:14
par camilleB
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

Re: Selection documents

MessagePublié: 08 Fév 2013 à 10:27
par Michael DELIQUE
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.

Re: Selection documents

MessagePublié: 08 Fév 2013 à 20:46
par camilleB
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

Re: Selection documents

MessagePublié: 08 Fév 2013 à 23:04
par Michael DELIQUE
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

Re: Selection documents

MessagePublié: 17 Fév 2013 à 20:48
par camilleB
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

Re: Selection documents

MessagePublié: 17 Fév 2013 à 23:43
par camilleB
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

Re: Selection documents

MessagePublié: 18 Fév 2013 à 11:41
par Michael DELIQUE
salut

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

Re: Selection documents

MessagePublié: 18 Fév 2013 à 15:37
par camilleB
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

Re: Selection documents

MessagePublié: 19 Fév 2013 à 03:35
par camilleB
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

Re: Selection documents

MessagePublié: 19 Fév 2013 à 22:21
par Michael DELIQUE
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

Re: Selection documents

MessagePublié: 20 Fév 2013 à 11:50
par camilleB
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

Re: Selection documents

MessagePublié: 20 Fév 2013 à 13:29
par Michael DELIQUE
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.

Re: Selection documents

MessagePublié: 04 Mars 2013 à 14:15
par camilleB
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