Définition des NotesDocumentCollection

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

Définition des NotesDocumentCollection

Messagepar clementbp » 25 Nov 2010 à 10:20

Bonjour,

J'ai une question qui peut paraitre un peu stupide mais bon, je pense que cela m'aiderait vraiment

Pourriez vous me dire comment je dois définir ma NotesDocumentCollection pour qu'elle ne prenne en compte que les documents selectionnés de ma vue :

Dim Session As NotesSession
Dim DB As NotesDatabase
Dim dc As NotesDocumentCollection
Dim Doc As NotesDocument

Set Session = New NotesSession
Set DB = Session.currentdatabase
Set dc = DB. -----------------------------------------
Set doc = dc.GetFirstDocument

Merci de votre aide
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 25 Nov 2010 à 10:35

re,

ya pas de question stupide ici !

Set dc = DB.UnprocessedDocuments

mais normalement dans le tuto d'initiation au Ls c'est expliqué
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 clementbp » 25 Nov 2010 à 10:41

Bonjour

D'accord c est bien ce que j 'avais compris.

Alors peut tu jeter un coup d'oeil sur mon code et me dire s'il y a quelque chose qui ne va pas ?

Parce que quand je l'utilise j'ai l'impression qu'il reste sur le même document sans passer au suivant. Par exemple quand je selectionne
deux document il me fait bien apparaitre 2 fois le dialogbox, et après il me mets mon message d'erreur.

Sub Initialize()

Dim ws As New NotesUIWorkspace

Dim Session As NotesSession
Dim DB As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

On Error GoTo Erreur

Set Session = New NotesSession
Set DB = Session.currentdatabase
Set dc = DB.UnprocessedDocuments


Set doc = dc.GetFirstDocument
While Not doc Is Nothing
Call ws.DialogBox("CBP-BoiteSaisieTraitementRFI",True,True)
Set doc = dc.GetNextDocument( doc )
Wend



Erreur :
MsgBox "Erreur " & Err & " ligne " & Erl & " : " & Error

End Sub
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 25 Nov 2010 à 11:04

re

ton code est bon
mais si tu ne mest pas un exit sub avant le Erreur: il va t'afficher la msgbox

Code : Tout sélectionner
exit sub
Erreur :
MsgBox "Erreur " & Err & " ligne " & Erl & " : " & Error
exit sub
end sub


et puis apres avoir instancié ta collection je te conseil de faire 2 vérif

Code : Tout sélectionner
if dc is Nothing then
exitsub
elseif dc.count= 0 then
exit sub
end if
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 clementbp » 25 Nov 2010 à 11:14

Merci pour le Exit Sub

Par contre j'ai toujours un problème.
Quand j'exécute mon agent après avoir selectionné deux documents (petite coche à gauche) il m'affiche bien mes deux dialogbox mais par contre il ne change pas de document.

Il reste a chaque fois sur la ligne qui est selectionnée.

Je ne sais pas si tu vois se que je veux dire



Sub Initialize()

Dim ws As New NotesUIWorkspace

Dim Session As NotesSession
Dim DB As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

On Error GoTo Erreur

Set Session = New NotesSession
Set DB = Session.currentdatabase
Set dc = DB.UnprocessedDocuments

If dc Is Nothing Then
Exit sub
ElseIf dc.count= 0 Then
Exit Sub
End If

Set doc = dc.GetFirstDocument
While Not doc Is Nothing

Call ws.DialogBox("CBP-BoiteSaisieTraitementRFI",True,True)


Set doc = dc.GetNextDocument( doc )
Wend

Exit Sub

Erreur :
MsgBox "Erreur " & Err & " ligne " & Erl & " : " & Error
Exit Sub


End Sub
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 25 Nov 2010 à 11:17

re,

tu confonds traitement back et front.

le code va traiter tous les documents, mais en aucun cas il ne fera déplacer la "selection" à l'écran.

est-ce vraimment necessaire ?
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 clementbp » 25 Nov 2010 à 11:22

Ben oui mais je vais essayer autre chose

Je reviendrai vers toi si besoin

Merci de ton aide
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 25 Nov 2010 à 11:25

mais pour selection une ligne d'une vue en Ls regarde à

Call notesUIView.SelectDocument( notesdocument )

dans l'aide en ligne
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 JfCt » 25 Nov 2010 à 12:08

Bonjour

Pour faire cela depuis l'interface utilisateur, depuis la vue :

Dim Ws As New notesuiworkspace
Dim VueUi As NotesUIView
Dim Collection As notesdocumentcollection

Set VueUi=Ws.CurrentView
Set Collection=VueUi.Documents

Apres, tu peux lire les documents de la collection dans une boucle While

Set Doc=Collection.GetFirstDocument()
Do While Not Doc Is Nothing


Set Doc=Collection.GetnextDocument(Doc)
Loop
JfCt
Maître-posteur
Maître-posteur
 
Message(s) : 400
Inscrit(e) le : 01 Mars 2005 à 18:00
Localisation : Paris sud

Messagepar JfCt » 25 Nov 2010 à 12:13

Re-Bonjour

J'ai oublie ...

Pour finir, apres la fin de la boucle, tu fais :

Call UiView.DeselectAll

Pour decocher touts les documents que tu as selectionne dans la vue.
JfCt
Maître-posteur
Maître-posteur
 
Message(s) : 400
Inscrit(e) le : 01 Mars 2005 à 18:00
Localisation : Paris sud

Messagepar clementbp » 25 Nov 2010 à 16:50

Bon alors j'ai un peu modifier mon agent

Le problème et que quand je selectionne deux documents et que celui qui est activé (encadré en noir) est le premier, pas de problème tout fonctionne correctement.

Par contre quand le document encadré en noir est le deuxième, cela ne mets pas les valeurs dans les champs des documents.

Auriez vous une explication?



Voici mon code


Sub Initialize()

Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument

On Error GoTo Erreur

Dim ws As New NotesUIWorkspace
Call ws.DialogBox("CBP-BoiteSaisieTraitementRFI",True,True)

Dim ValeurChampsDateEnvoie As Variant
Dim ValeurChampsFiltresEnvoyesChez As Variant
ValeurChampsDateEnvoie = doc.GetItemValue( "DateEnvoie" )
ValeurChampsFiltresEnvoyesChez = doc.GetItemValue( "FiltresEnvoyesChez" )


If dc Is Nothing Then
Exit Sub
ElseIf dc.count= 0 Then
Exit Sub
End If


While Not doc Is Nothing

Dim item As NotesItem
Set item = doc.ReplaceItemValue( "FiltresEnvoyesChez", ValeurChampsFiltresEnvoyesChez )
Set item = doc.ReplaceItemValue( "DateEnvoie", ValeurChampsDateEnvoie )
Set item = doc.ReplaceItemValue( "FiltreDansNosLocaux", "NON")
Call doc.Save( True, True )

Set doc = dc.GetNextDocument( doc )
Wend


Exit Sub

Erreur :
MsgBox "Erreur " & Err & " ligne " & Erl & " : " & Error
Exit Sub


End Sub
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 25 Nov 2010 à 17:03

salut

dejà une version "corrigé"

Code : Tout sélectionner
Sub Click(Source As Button)
   
   Dim ws As NotesUIWorkspace
   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim ValeurChampsDateEnvoie As Variant
   Dim ValeurChampsFiltresEnvoyesChez As Variant
   
   On Error Goto Erreur
   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   
   If dc Is Nothing Then
      Exit Sub
   Elseif dc.count= 0 Then
      Exit Sub
   End If   
   
   Set  ws = New NotesUIWorkspace
   Call ws.DialogBox("CBP-BoiteSaisieTraitementRFI",True,True)
   
   Set doc = dc.GetFirstDocument
   
   ValeurChampsDateEnvoie = doc.GetItemValue( "DateEnvoie" )
   ValeurChampsFiltresEnvoyesChez = doc.GetItemValue( "FiltresEnvoyesChez" )   
   
   While Not doc Is Nothing
      
      Call doc.ReplaceItemValue( "FiltresEnvoyesChez", ValeurChampsFiltresEnvoyesChez )
      Call doc.ReplaceItemValue( "DateEnvoie", ValeurChampsDateEnvoie )
      Call doc.ReplaceItemValue( "FiltreDansNosLocaux", "NON")
      Call doc.Save( True, True )
      
      Set doc = dc.GetNextDocument( doc )
   Wend
   
   Set dc = Nothing
   
   Exit Sub   
Erreur :
   Msgbox "Erreur " & Err & " ligne " & Erl & " : " & Error
   Exit Sub
End Sub


ensuite si j'ai bien compris ton code tu affecte 2 champ du premier document de la collection a tous les documents de la collection... bizarre !
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 clementbp » 25 Nov 2010 à 17:17

En fait le but du jeu est de saisir dans chacun des documents les memes valeurs aux deux champs.

Pour cela je voulais que dans le premier je saisisse la valeur que je souhaite par l'intermédiaire d'une boite de dialogue, et que ensuite je récupère ces valeurs et que je les appliques aux autres documents.

Ca te parait étonnant ?
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar clementbp » 25 Nov 2010 à 17:22

J'ai récupéré ton code mais il ne résoud pas mon problème
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 25 Nov 2010 à 17:22

salut

non, mais dans ce cas doit falloir passer un objet notesdocument à ta dialoguebox.

et puis je suppose que tes valeurs sont de type texte non multi-valué ?

pour le code je sais qu'il ne résoud rien, mais il est déjà plus propre et il t'évitera quelque supprise
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

Suivant

Retour vers Développement