Page 1 sur 2
Définition des NotesDocumentCollection

Publié:
25 Nov 2010 à 10:20
par clementbp
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

Publié:
25 Nov 2010 à 10:35
par Michael DELIQUE
re,
ya pas de question stupide ici !
Set dc = DB.UnprocessedDocuments
mais normalement dans le tuto d'initiation au Ls c'est expliqué

Publié:
25 Nov 2010 à 10:41
par clementbp
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

Publié:
25 Nov 2010 à 11:04
par Michael DELIQUE
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

Publié:
25 Nov 2010 à 11:14
par clementbp
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

Publié:
25 Nov 2010 à 11:17
par Michael DELIQUE
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 ?

Publié:
25 Nov 2010 à 11:22
par clementbp
Ben oui mais je vais essayer autre chose
Je reviendrai vers toi si besoin
Merci de ton aide

Publié:
25 Nov 2010 à 11:25
par Michael DELIQUE
mais pour selection une ligne d'une vue en Ls regarde à
Call notesUIView.SelectDocument( notesdocument )
dans l'aide en ligne

Publié:
25 Nov 2010 à 12:08
par JfCt
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

Publié:
25 Nov 2010 à 12:13
par JfCt
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.

Publié:
25 Nov 2010 à 16:50
par clementbp
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

Publié:
25 Nov 2010 à 17:03
par Michael DELIQUE
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 !

Publié:
25 Nov 2010 à 17:17
par clementbp
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 ?

Publié:
25 Nov 2010 à 17:22
par clementbp
J'ai récupéré ton code mais il ne résoud pas mon problème

Publié:
25 Nov 2010 à 17:22
par Michael DELIQUE
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