Page 1 sur 2

Définition des NotesDocumentCollection

MessagePublié: 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

MessagePublié: 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é

MessagePublié: 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

MessagePublié: 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

MessagePublié: 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

MessagePublié: 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 ?

MessagePublié: 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

MessagePublié: 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

MessagePublié: 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

MessagePublié: 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.

MessagePublié: 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

MessagePublié: 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 !

MessagePublié: 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 ?

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

MessagePublié: 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