Comparer le contenu de 2 vues dans une même base

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

Comparer le contenu de 2 vues dans une même base

Messagepar Sylvie35 » 10 Avr 2012 à 15:57

Bonjour à Tous,

N'ayant pas trouvé mon bonheur... je me permets de m'adresser à vous tous.
Dans la même base, je souhaiterai créer un agent pemettant de comparer les documents de 2 vues 1 et 2 et contenant les documents suivants :
Vue1 :
Colonne1(Champ : FicheCode)
A
B
C
D

Vue2 :
Colonne1(Champ : QuaiCorrespondant)
A
A
C
C
C
La première colonne de chaque Vue 1 et 2 doit servir de clé de comparaison (A, B, C, D, ...)
L'agent doit balayer la Vue 1 comparée à la Vue 2 et identifier les valeurs dans la Vue 1 qui n'existent pas dans la Vue 2.
Dans ce cas, il doit m'envoyer un message écran (par mail par la suite) pour chaque document manquant, par exemple ici pour B et D.

En LotusScript, voici le code que je n'arrive pas à faire fonctionner :
Option Public
Sub Initialize
'Agent permettant de contrôler les documents
Dim s As New notessession
Dim db As NotesDatabase
Set db = s.CurrentDatabase

Dim vue1 As notesView
Set vue1 = db.GetView("((VUE1))")
Dim doc1 As NotesDocument
Set doc1 = vue1.GetFirstDocument

Dim vue2 As NotesView
Set vue2 = db.GetView("((VUE2))")
Dim doc2 As NotesDocument

'Tant qu'il y a des documents dans la vue
While Not doc1 Is Nothing

Set doc2 = Vue1.getNextDocument(doc1)

If doc1.FicheCode(0) = doc2.QuaiCorrespondant(0) Then
doc1.remove(True)
End if
MessageBox ("Pas de document aujourd'hui ! " & doc1.FicheCode(0))
Set doc1 = doc2

Wend
End Sub

Quelqu'un a t'il une idée ?
Merci pour vos réponses.
Sylvie35
Sylvie35
 

Re: Comparer le contenu de 2 vues dans une même base

Messagepar Michael DELIQUE » 10 Avr 2012 à 16:13

salut

déjà tu ne boucle pas sur chaque element de ta vue1

ensuite quand tu supprime un document alors que tu parcours une vue il faut le passer dans un notesdocument temporaire faire avancer la boucle d'un tour et ensuite l'effacer sinon ça bug
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: Comparer le contenu de 2 vues dans une même base

Messagepar roubech » 10 Avr 2012 à 20:38

Tu as beaucoup de documents dans ces vues ?
si non, tu peux récupérer la liste des valeurs de la colonne 1 avec un @DbColumn et idem pour la vue 2
Code : Tout sélectionner
tLkp1 := @Unique(@Dbcolumn( ""; "vue1"; 1 ));
tLkp2 := @Unique(@Dbcolumn( ""; "vue2"; 1 ));
tLst := @Replace( tLkp1; tLkp2; "" );
@Trim( tLst )

Mais attention à la limite des 16 K

Sinon en LS, tu peux aussi passer par des NotesViewNavigator pour ne parcourir la colonne des vues (sans consommer de ressources à ouvrir les docs)
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille


Retour vers Développement

cron