Utilisation de "Collection"

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

Utilisation de "Collection"

Messagepar Ludo » 13 Jan 2004 à 10:14

Bonjour a tous,dans un agent qui met a jours des documents (quelquesoit la base) utilisant un champ précis, j'utilise la notion de collection.Pour cela, je me suis créé dans toutes les bases, une vue (ex: vwAllKey) qui est définie de cette manière : SELECT @IsAvailable(FieldKey)Pour une seule base, la vue m'affiche 9 documents (afin de testé la vue, j'ai biensur ajouter la restriction sur la valeur du champ que je voulais récupérer) et le résultat de la collect n'en trouve que 3.Code: Dim vw As NotesView Dim Col As NotesDocumentCollection Dim doc As NotesDocument Set vw = DL01_Currentdb.GetView("vwAllKey") Set Col = vw.GetAllDocumentsByKey("TOTO", True) Set doc = Col.GetFirstDocument While Not (doc Is Nothing) Set doc = Col.GetNextDocument(doc) Wendquelqu'un a une idée ?
Ludo
 

Re: Utilisation de "Collection"

Messagepar polbusse » 13 Jan 2004 à 11:00

Apparemment c parce qu'il n'y a que 3 documents appartenant à la catégorie "TOTO".Pour voir ce qui se passe exactement, je te conseille de débogguer : - fichier/outil/débogguer lotusscript et lancer le script.
polbusse
 

Re: Utilisation de "Collection"

Messagepar Ludo » 13 Jan 2004 à 11:06

c ce que j'ai fait, et effectivement il compte 3 documentsseulement dans ma vue, j'en ai 9, et dans l'application (interface utilisateur) il affiche 9 docucments qui posséde ce champ.Comprend pas ?
Ludo
 

Re: Utilisation de "Collection"

Messagepar polbusse » 13 Jan 2004 à 11:17

il n'afficherait pas 3 lignes par documents par hazard ?? regardez ds la case à cocher "afficher les valeurs multiples comme entrée distinct" ds les propriétés de la colonne.
polbusse
 

Re: Utilisation de "Collection"

Messagepar Ludo » 13 Jan 2004 à 11:24

Non, et en plus les documents affichés proviennent de 7 forms différents.mais ce dont je ne comprend pas, c'est la différence entre le résultat de la vue et de la collection alors que celui-ci utilise le vue !!!Remarque: cette procedure fonctionne correctement pour les 8 autres database.
Ludo
 

Re: Utilisation de "Collection"

Messagepar Oguruma59 » 13 Jan 2004 à 11:41

juste question "bête" c'est toto ou TOTO... attention au paramètre "true"...essai déja comme test de lire la vue document par document sans passer par getalldocumentsbykeyfaire ungetfirst...une boucledans la boucle un getnextmais je crois que tu connaisdans la boucle tu comptes les documentsdéjà tu peux vérifier que tu cibles tous les docautre piste ... tu peux faire un search sur la vue ou sur la base et dans la formule tu passe celle que tu as mis dans la formule de vuetu as le count du db.search qui donne le nb de doc
Oguruma59
 

Re: Utilisation de "Collection"

Messagepar polbusse » 13 Jan 2004 à 11:43

Il n'y aurait pas une deuxième colonne catégorisée ds la vue qui perturbe le code ??
polbusse
 

Re: Utilisation de "Collection"

Messagepar Ludo » 13 Jan 2004 à 11:52

L'idée d'une boucle normal est bonne mais le résultat est troublantj'ai fait un agent de test avec le code suivant Dim vw As NotesView Dim Col As NotesDocumentCollection Dim doc As NotesDocument Set vw = DL01_Currentdb.GetView("vwLUAllREONew") Dim x,y As Integer x=0 Set doc = vw.GetFirstDocument While Not (doc Is Nothing) If doc.REONew(0)="4171" Then x=x+1 Set doc = vw.GetNextDocument(doc) Wend y=0 Set Col = vw.GetAllDocumentsByKey("4171", True) Set doc = Col.GetFirstDocument While Not (doc Is Nothing) If doc.REONew(0)="4171" Then y=y+1 Set doc = Col.GetNextDocument(doc) Wend Messagebox "View : " & x & chr$(10) & "Col : " & y Pour la vue j'obtiens 9 documents (ce qui est juste), et 3 pour la collectionEncore plus étrange !!
Ludo
 

Re: Utilisation de "Collection"

Messagepar Oguruma59 » 13 Jan 2004 à 12:04

essai le search sur la base ou sur la vue./..pour voir ce que tu reçoit..a distance comme cela pas évident de débogger car ton code est juste c'est le contexte qu'il faut vérifier
Oguruma59
 

Re: Utilisation de "Collection"

Messagepar Ludo » 13 Jan 2004 à 13:18

Je pense que j'ai trouvé les raisons: et c'est effectivement lié au contexteEn faisant quelque test, j'ai pu me rendre compte que lorsque je supprimais le document principal, tous les autres documents se supprimaient également (ce sont des documents "reponse")Pour la clé recherchée, il y avait deux autres documents indépendant, 2+1=3 le compte est bon.Maintenant je ne sais pas comment résoudre ce problème (si ce n'est pour cette db de ne pas utiliser la collection) et surtout je ne sais pas si on peut résoudre ce problème ???
Ludo
 

Re: Utilisation de "Collection"

Messagepar Oguruma59 » 13 Jan 2004 à 13:28

ok tu te retrouves avec des documents orphelins...tu as moyen de les retrouver et les supprimer si tu veux...dans ton appli il faut "blinder" la suppression et vérifier que le document maitre ne possède pas de doc enfants...j'ai cela... si tu veux... ? si tu tapes sur google orphan document lotus notes tu devrait trouver des choses à ce propos, j'ai aussi qq trucs...tu peux passer par une collection (search) mais dans ce cas il faut préciser le mask enfant et demander les doc enfants @docchild....dans une vue notes le fait automatiquement si l'option est retenue mais pas dans un search, il faut lui préciser dans la formule
Oguruma59
 

Re: Utilisation de "Collection"

Messagepar Ludo » 13 Jan 2004 à 13:34

donc si je comprend bien, mes doc ne sont pas supprimés mais orphelin (ce n'est grave je suis en test), et apparement on ne peut pas les lire avec la collection.merciet a+
Ludo
 

Re: Utilisation de "Collection"

Messagepar Oguruma59 » 13 Jan 2004 à 13:56

je reviens vers toi dès que possible... je dois filerje reviens avec du code ls comme promis
Oguruma59
 

Re: Utilisation de "Collection"

Messagepar Raisin » 13 Jan 2004 à 23:17

Tu as la propriété "responses" qui te retourne une collection des document réponse du document parent passé en paramètre.Set NotesDocumentCollection = NotesDocument.ResponsesMsgBox NotesDocumentCollection.count 'Nb de reponsesCa peut ptete t'aider ;-)
Raisin
 

Merci

Messagepar Ludo » 14 Jan 2004 à 11:25

juste merci à Oguruma59 et raisin pour votre aidea+ludo
Ludo
 


Retour vers Développement

cron