fonction selection premier doc d'une vue

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

fonction selection premier doc d'une vue

Messagepar cyril08 » 21 Juin 2011 à 07:41

bonjour,

je connais @dbcolumn et @dblookup pour selectionner colonne et doc d'une vue.

j'ai une vue X comprenant divers document enregistré, je souhaiterais que ma vue Y m'affiche uniquement le dernier doc de la vue X enregistré et si possible le contenu d'un tableau de ce document.

Est ce réalisable??
cyril08
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 349
Inscrit(e) le : 22 Nov 2010 à 17:11

Messagepar Michael DELIQUE » 21 Juin 2011 à 10:11

salut

uniquement avec les xpages. sinon il faut faire un petit agent qui ajoute un flag au derniere document de ta vue X pour qu'il soit pris en compte par ta vue y
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

Messagepar cyril08 » 21 Juin 2011 à 15:30

comment je peux m'y prendre pour flaguer un doc avec un agent? je n'en est pas encore utilisé
cyril08
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 349
Inscrit(e) le : 22 Nov 2010 à 17:11

Messagepar Michael DELIQUE » 21 Juin 2011 à 15:33

re,

as tu lu ça => http://forum.dominoarea.org/index.php?f=68

c'est simple tu selection le document voulue tu y ajoute un champ de ton cru genre "MonFlag" auquel tu donne la valeur "1"

et dans ta vue tu rajoute MonFlag = "1"
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

Messagepar roubech » 21 Juin 2011 à 15:56

bonjour,

si je peux éclaircir un peu,
une liste liste des documents en fonction de différents critères basés sur le contenus des champs des documents
un @DbColum retourne toutes les valeurs d'une colonne d'une vue
un @DbLookup retourne les valeurs d'une colonne ou d'un champ pour une partie des documents d'une vue, en se basant sur la première colonne de la vue pour limiter les docs

pourquoi faire une vue pour afficher uniquement un doc, et uniquement un champ de ce doc ?
"le dernier doc de la vue X" ? quel est le critère de selection de ta vue X et comment et elle triée ? si c'est trié sur une donnée texte, tu peux requéter sur la valeur voulue. si c'est trié sur une date, tu inverses le tri, le dernier devient le premier et un petit script peux te ramener le contenu du champ souhaité
set doc = view.tgetFirstDocument
doc.MonChampMultivalue

quoique, getLastDocument existe, donc meme sans inverser le tri
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar cyril08 » 22 Juin 2011 à 06:14

Je n'ai pas qu'un seul champ a récupérer il y a en a plusieurs. Un doc est crée au lancement de la base puis il est mis a jour en duppliquant le précédent. Voilà pk afficher uniquement le contenu du dernier doc enregistré.

Sur la question du flag javai cela en tête mais comment faire devenir le champ flag différents de 1 pour le faire disparaitre de la vue ne faire apparaitre que le nouveau?

Dans ma vue des donnees d' texte et date sont affichées.
cyril08
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 349
Inscrit(e) le : 22 Nov 2010 à 17:11

Messagepar Michael DELIQUE » 22 Juin 2011 à 07:46

re,

simple avant de traiter ton "nouveau" premier document tu recherche via un NotesDatabase.search tout les documents qui ont le le champ à 1
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

Messagepar cyril08 » 22 Juin 2011 à 08:10

Michael DELIQUE a écrit:re,

simple avant de traiter ton "nouveau" premier document tu recherche via un NotesDatabase.search tout les documents qui ont le le champ à 1


ou dois je implanté un notesDatabase.search?

ensuite je fais un SELECT ALL et je passe tout a "0" ?
cyril08
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 349
Inscrit(e) le : 22 Nov 2010 à 17:11

Messagepar Michael DELIQUE » 22 Juin 2011 à 08:13

re,

ben tu l'implemente dans le traitement qui flag ton document. et je te déconseil de faire un "select all" mais plustot de rechercher les documents ayant ton flag.
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

Messagepar roubech » 22 Juin 2011 à 09:30

j'ai pas tout le contexte, mais à deviner comme ça, pour éviter de toujours modifier les docs pour les flaguer, si c'est vraiment le dernier dans le sens chronolique du terme, je pencherai plutôt pour une vue et un script LS pour aller chercher le dernier doc de la vue (ou le premier si tri inverse).
Sinon, plutôt de flaguer les docs des utilisateurs, avoir un doc de parametrage (profil ou pas) pour stocker un pointeur vers le dernier doc créé. Et à chaque création d'un nouveau doc, tu viens mettre à jour ce doc param. Attention aux création simultanée. Même principe pour pour inclure un compteur lors de la création d'un doc ....
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Michael DELIQUE » 22 Juin 2011 à 09:38

re,

@roubech : il faut faire attention avec les documents profils, comme ils ne sont mis a jours qu'une seule fois par session, l'information ne sera disponible qu'a la fermeture de la base. Il est préférable d'éviter les doc profil pour les données qui sont beaucoup modifié et ne les utiliser que pour les données qui bougent peut
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

Messagepar roubech » 22 Juin 2011 à 09:57

@Michael : c'est pour ça que j'ai précise le "ou pas", mais j'ai oublié de le mettre en gras (j'utilise essentiellemnt la réponse rapide ...) et que j'ai dit attention sur la fréquence des creations, mais tu fais bien de le souligner
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar cyril08 » 22 Juin 2011 à 13:37

merci pour votre aide je m'en suis sorti.

également sur un sujet un peu similaire, j'ai une autre question :
Au premier lancement de ma base je renseigne un doc "X" que j'appelle via un bouton @command([compose];"X). suite au premier enregistrement ce bouton doit disparaitre définitivement de la base car le contenu du doc sera tjs modifié via le premiere création.

Comment peut t-on appeler le premier doc créer et faire disparaitre ce @command([compose];"X)?
cyril08
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 349
Inscrit(e) le : 22 Nov 2010 à 17:11

Messagepar roubech » 22 Juin 2011 à 14:20

Si par exemple, tu as un masque Config pour stocker quelques paramètres de ta base. Tu as besoin d'avoir un seul document basé sur ce masque. Tu fait donc une vue cachée ($Config)
Dans un bouton d'action de cette vue ou dans un agent tu peux mettre une formule de ce genre

[syntax="Formula"]tLkp := @DbLookup( ""; ""; "($Config)"; "Config"; RETURNDOCUMENTUNIQUEID );
@If( @IsError(tLkp);
@Command([Compose]; "Config");
@Command([OpenDocument]; ""; tLkp)
)[/syntax]
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar cyril08 » 22 Juin 2011 à 14:31

roubech a écrit:Si par exemple, tu as un masque Config pour stocker quelques paramètres de ta base. Tu as besoin d'avoir un seul document basé sur ce masque. Tu fait donc une vue cachée ($Config)
Dans un bouton d'action de cette vue ou dans un agent tu peux mettre une formule de ce genre

[syntax="Formula"]tLkp := @DbLookup( ""; ""; "($Config)"; "Config"; RETURNDOCUMENTUNIQUEID );
@If( @IsError(tLkp);
@Command([Compose]; "Config");
@Command([OpenDocument]; ""; tLkp)
)[/syntax]


ok. mais ce bouton d'action est dans une vue cachée.

qu'est qui va me permettre d'ouvrir tjs le meme doc dans ma vue qui est visible?

moi ce que je souhaitais c'est :
ma vue visible ne contient rien car le masque n'a encore jamais été appelée. je l'appelle via un bouton "crée". un fois mon premier enregistrement effectué, mon doc s'enregistre dans ma vue cachée et dans ma vue visible et désormais mon bouton "crée" disparait.
Dès lors le doc qui sera toujours utilisé sera celui dont l'ID est issu de la premiére création. je ne saisie pas bien en quoi ta proposition va me permettre cela
cyril08
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 349
Inscrit(e) le : 22 Nov 2010 à 17:11

Suivant

Retour vers Développement

cron