Je cherche à faire un chtit prog pour comparer 2 bases... [Lotuscript] - Programmation
Marsh Posté le 22-10-2001 à 15:03:09
c vrai que y'a pas bcp de question Lotusscript ici
Pour ton truc j'vois pas comment tu veux faire autrement.
J'avais fait déjà un truc dans le genre.
ce qui est pas mal c la méthode search de la classe notesdatabase.
Ensuite tu parcours la collection renvoyée dans la première base et tu regardes si ton doc existe dans l'autre base en t'appuyant sur la vue cette fois pour faire une recherche par clé (méthode GetDocumentByKey de la classe notesview).
Marsh Posté le 22-10-2001 à 17:14:21
Thx Manou pour ton reply
Je viens juste de terminer ma chtite fonction de recherche
Bon je sais po si elle fonctionne mais je verrai bien.
Sinon j'ai regardé ce que faisait la fonction Search et en fait elle fait exactement ce que je veux et en plus c plus propre et moins bourrin que mon truc
Je te dis juste pour voir ce que tu en penses.
Alors allons-y:
-> Tout d'abord, je me pose une question à savoir si on peut sélectionner 2 BD pour une même session ??
ex:
-----
Set db_prod = session.GetDatabase("server","base" )
Set db_load = session.GetDataBase("server","base" )
Si c po possible, je suis po ds la merde moi déjà
->Ensuite...bon je te colle le code parceque c trop long à expliquer
Voilà, est-ce que je peux faire tourner ça ??
Sub Research ()
On Error Goto errhandle
Dim session As New NotesSession
Dim db_prod As NotesDatabase
Dim db_load As NotesDatabase
Dim view_prod As NotesView
Dim view_load As NotesView
Dim doccollection1 As NotesDocument
Dim doccollection2 As NotesDocument
Dim collection1 As NotesDocumentCollection
Dim collection2 As NotesDocumentCollection
Dim doc1 As NotesDocument
Dim doc2 As NotesDocument
Dim keys (0 To 1)
Set db_prod = session.GetDatabase("server","base" )
Set db_load = session.GetDataBase("server","base" )
'Log file creation
Set agentLog = New NotesLog ("LoadFast/Productional compare" )
Call agentLog.OpenNotesLog ("","logresearch.nsf" )
Call agentLog.LogAction("Beginning of comparison at " & Format(Now(),"Long Time" ))
Set view_prod = db_prod.GetView("$extractes210" )
Set view_load = db_load.GetView("$extractes210" )
Set doc1 = view_prod.GetFirstDocument
found :
While Not(doc1 Is Nothing)
keys(0) = doc1.salesmannum
keys(1) = doc1.custnum
Set collection2 = view_load.GetAllDocumentsByKey (keys,True)
Set doccollection2 = collection2.GetFirstDocument
If Not(doccollection2 Is Nothing) Then
While Not (doccollection2 Is Nothing) ' while we have a document in the collection
If Not(doc1.PCN(0) = doccollection2.PCN(0)) Then
Set doccollection2 = doccollection.GetNextDocumennt(doccollection2)
Else
'Document is still existing
Set doc1 = view_prod.GetNextDocument(doc1)
Goto found
End If
Wend
If (doccollection Is Nothing) Then
'Document not found
Call agentLog.LogAction("Product - " & doc1.proddesc & " - not found under Salesman - " & doc1.salesmanname & "at " & Format(Now(),"Long Time" ))
Set doc1 = view_prod.GetNextDocument(doc1)
Goto found
End If
Else
'Salesman or Custnum not found
Call agentLog.LogAction("Salesman - " & doc1.salesmanname & " - with custnum - " & doc1.custnum & " - not found at " & Format(Now(),"Long Time" ))
Set doc1 = view_prod.GetNextDocument(doc1)
End If
Wend
errhandle:
Print doc.custname(0) & " " & doc.countrycode(0) & " " & doc.mktcode(0) & " " & doc.salesmanname(0) & " " & doc.proddesc(0)
Print "Error" & Str(Err) & ": " & Error$
End Sub
Marsh Posté le 22-10-2001 à 17:20:33
ben d'abord pour ta première question no blem tu selectionnes autant de bases que tu veux
Marsh Posté le 22-10-2001 à 17:32:38
ben çà à l'air correct syntaxiquement
ton goto found n'est pas très propre nan +
mais rien de mieux pour tester que de lancer l'agent avec le debugger lotusscript
Marsh Posté le 22-10-2001 à 17:36:27
Vi c vrai je te l'avais dit que c'était un peu bourrin
mais bon si tu penses que syntaxiquement c correct et ben je vais le tester en debug mode...mais euh la je le testerai demain car j'en ai un peu ma dose pour aujourd'hui et en plus j'ai un pc à monté pour une amie alors bon...
Enfin c cool de me répondre car il n'y a pas l'air d'avoir bcp de developpeur LotusScript sur le forum
Bon allez @+ et encore merci pour ton aide précieuse.
Marsh Posté le 22-10-2001 à 21:35:56
ben nan c clair pô bcp de gens qui développe en Domino/Notes D sur le forum. Ou il ne se montre pas
Moi, je suis en plein dedans en ce moment chez un client (refonte d'une petite appli pour la rendre compatible WEB )
[edtdd]--Message édité par m@nou--[/edtdd]
Marsh Posté le 23-10-2001 à 10:32:38
Ca a l'air sympa Moi je développe pour une grosse boite et on est que 2 pour tout faire sur Lotus, admin et dev !! En plus ma tutrice (oui je suis en apprentissage à bac+4) elle y connaissait que dale, elle a remplacé mon ancien tuteur en février et lui il fait du sql maintenant...
Enfin bref, tout ça pour dire que c assez hard ici pour tout gérer
Voilate voilate Sinon je suis en train de regarder comment je pourrais rendre ce petit prog mon bourrin et un epu plus clean
Allez @+
Marsh Posté le 23-10-2001 à 10:47:10
ouaip si tu suis la piste que je t donné çà sera un peu plus performant que 2 boucles imbriquées, enfin je pense.
Allez bon courage
Moi j'ai plus qu'un bug et j'ai fini D
Marsh Posté le 22-10-2001 à 10:27:52
Yep je sais que c po souvent que l'on demande de l'aide sur Lotuscript mais là j'ai besoin de votre aide.
voilà mon pb: Il faut que je compare 2 bases. (une productionnelle et une "test avant chargement" )
Le but de la manoeuvre étant de savoir quels enregistrements ont disparus et quels sont ceux qui sont apparus.
pour se faire j'avais penser sélectionner les bases puis les 2 mêmes vues et enfin comparer certains champs de ces 2 vues dans le but de renseigner un fichier Log qui contiendrait le nom des enregistrement qui ont disparus et cuex qui sont news.
Voius voyez un peu le truc ?? So si qlq1 à une idée je suis preneur
Thx
---------------
Q.G Tutoriaux ici