si tu ne sais pas comment instancier la base 2, tu peux regarder dans l'aide
http://publib.boulder.ibm.com/infocente ... CLASS.html
la 1ere chose à définir, c'est où et quand ton code va s'éxécuter ?
par exemple, un agent planifié dans la base 1 qui est lancé par le serveur tous les soirs et qui va donc parcourir tous les docs facture de la base 1 pour aller chercher dans la base 2 tous les docs detail
ou
un script lancé sur le poste de l'utilisateur lorsqu'il va enregistrer un doc detail dans la base 2 et qui ira alors chercher le doc facture correspondant dans la base 1 pour remonter la valeur
à voir ton code, ce serait plutot la 1ère hypothèse
sans tester dans designer, ça donnerait quelquechose comme ça :
[syntax="LotusScript"]
Sub CalculTotal
On Error goto ErrorHandler
Dim s as New NotesSession
Dim db1 as NotesDatabase, db2 as NotsDatabase
Dim view1 as NotesView, view2 s NotesView
Dim dc2 as NotesDocumentCollection
Dim doc1 as NotesDocument, doc2 as NotesDocument
Dim cle as string
Dim total as double
' instancier la vue des docs facture de la base courante
set db1 = s.CurrentDatabase
set view1 = db1.GetView( "AllTickets" )
if view1 is nothing then
msgbox "Erreur ..."
exit sub
end if
' instancier la vue des docs detail dans la base 2 (sur le même serveur)
set db2 = New NotesDatabase( "", "chemin\base2.nsf" )
if not db2.IsOpen is nothing then
msgbox "Erreur ..."
exit sub
end if
set view2 = db2.GetView( "Intervention Par Ticket" )
if view2 is nothing then
msgbox "Erreur ..."
exit sub
end if
' Parcourir les docs facture
set doc1 = view1.GetFirstDocument()
while not doc1 is nothing
' remettre le compteur à 0 quand on change de doc facture
total = 0
' Rechercher les docs detail associés
cle = doc1.GetItemValue("IENTicket")(0)
set dc2 = view2.GetAllDocumentsByKey( cle, true )
' Parcourir les docs detail pour calculer le total
set doc2 = dc2.GetFirstDocument()
while not doc2 is nothing then
' incrémenter le compteur
total = total + doc2.GetItemValue("IENDuration")(0)
' passer au doc detail suivant
set doc2 = dc2.GetNextDocument(doc2)
end if
' mettre à jour le doc facture
doc1.ReplaceItemValue( "IENDurationTotal", total )
' passer au doc facture suivant
set doc1 = view1.GetNextDocument(doc1)
wend
exit sub
ErrorHandler :
msgbox "Erreur n° " & err & " dans 'CalculTotal' à la ligne " & erl & " : " & error
exit sub
End sub
[/syntax]