Page 1 sur 1
Selection documents

Publié:
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

Publié:
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

Publié:
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

Publié:
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

Publié:
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

Publié:
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

Publié:
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

Publié:
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.htmlDans 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

Publié:
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

Publié:
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

Publié:
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

Publié:
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

Publié:
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