Création d'une Replique + Ajout au Réplicateur

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

Création d'une Replique + Ajout au Réplicateur

Messagepar rko » 16 Juin 2010 à 16:16

Bonjour à tous,

Voilà j'ai mis en place un Annuaire Mobile à partir de la tâche Dircat de Domino. Mon Annuaire "mobile.nsf"
Je souhaite que mes utilisateurs récupérent cette annuaire et qu'il soit disponible quand ils veulent envoyer un mail.

Pour cela, j'utilise un bouton pour qu'il click dessus, la base est répliquée depuis le serveur, le notes.ini est modifié pour ajouter mobile.nsf en tant que 2ème Annuaire à consulter en + du names local.

Tout fonctionne bien ou presque, car la base n'apparaît pas dans le réplicateur, et le but est que les modifications soient récupérées

Est-ce que vous auriez une idée, erreur dans le code ? serveur v7.03 et Client v7.0.2

Merci d'avance

Code : Tout sélectionner
Sub Click(Source As Button)
   On Error Goto printerror
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim DayList(6) As String   
   
   
   'Modification de ces declarations
   Server = "Server/Org"
   Path = "mobile.nsf"
   
   'Declaration du chemin du carnet d'adresse en commun
   Set dbNames = session.GetDatabase("", "names.nsf")
   Dim db As New NotesDatabase( Server, Path )
   Dim replica As New NotesDatabase("","")
   
   'Current location name retrieve (via notes.ini file)
   strLoc = session.getEnvironmentString("Location", True)
   Print "strLoc" & strLoc
   If strLoc="" Then
      Print "Problem : Don't find the Location Document"
      Exit Sub   
   End If
   
   If Instr(strLoc, ",") Then
      strLoc = Left(strLoc, Instr(strLoc, ",")-1)
   End If
   
   strSearch(1) = "*"
   strSearch(2) = strLoc
   Set vwSites = dbNames.GetView("($Locations)")
   Set docSite = vwSites.GetDocumentByKey(strSearch)
   
   ' Setting for Current Location Name
   If docSite Is Nothing Then
      Print "Problem : Don't find the Location Document"
      Exit Sub   
   Else
      ' Réplication activée
      Set item = docSite.ReplaceItemValue( "Enabled", "1" )
      
      ' tous les jours
      For j = 0 To 6
         DayList(j)= Cstr( j + 1)
      Next      
      docSite.Weekdays=DayList
      
      'toutes les 60 minutes      
      docSite.Interval=60
      
      Call docSite.Save( True, True )
   End If
   
   If replica.Open("", Path) Then
      Messagebox( "One replica of  "+Path+" database is in Local" )
      Exit Sub
   Else
      Set replica = db.CreateReplica( "", Path )
   'Ouverture de la réplique Local   
      Call workspace.OpenDatabase ( "", Path, "", "", False, False )
   End If
   
   'Modification des préférences utilisateurs, Mise à jour du parametre Notes.ini
   CA_ini = session.GetEnvironmentString( "NAMES" , True)
   If (CA_ini Like "*"+Path+"*") Then
   Else
      CA_ini = CA_ini + ","+Path
      Call session.SetEnvironmentVar( "NAMES", CA_ini ,True)
   End If
   
   Messagebox( "Succesfull, Thanks to close your Lotus Notes Client so that your new parameter is updated." )
   Exit Sub
printerror:
   Print "Erreur : " & Error & " ligne  " & Erl
   Exit Sub
End Sub
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar stloje » 17 Juin 2010 à 10:39

Petite question : lorsque tu ouvres le carnet d'adresses perso, tu fais la vérif que c'est bien un carnet privé?

Je te suggère de regarder dans l'aide en ligne concernant les propriétés des carnets d'adresses (AddressBooks) de la classe NotesSession. C'est peut être là que ça plante.
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar rko » 17 Juin 2010 à 11:41

Oula moi rien connaître en dev, c'est un script qui fonctionné et ne fonctionne plus, je ne sais pas ce qui cloche !
Merci de ta réponse en tout cas !
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar stloje » 17 Juin 2010 à 13:50

Bon, j'ai fait l'ajout et un p'tit correctif. Je n'ai pas testé le code, mais ça devrait aller mieux

Code : Tout sélectionner
   On Error Goto printerror
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim DayList(6) As String   
   
   
   'Modification de ces declarations
   Server = "Server/Org"
   Path = "mobile.nsf"
   
   'Declaration du chemin du carnet d'adresse en commun
   Dim books As Variant
   books = session.AddressBooks
   Forall b In books
      ' check every Domino Directory,
      If b.IsPrivateAddressBook Then
         'il faut vérifier si c'est bien le carnet d'adresses principal
         If b.FileName = "names.nsf" Then
            Set dbNames = b
            Exit Forall
         End If
      End If
   End Forall
   
   'on vérifie si le carnet est bien ouvert
   If dbNames Is Nothing Then
      Msgbox "Le carnet d'adresses n'a pu être ouvert. Interruption de la réplique.", , "Interruption réplique"
      Exit Sub
   End If
   
   Dim db As New NotesDatabase( Server, Path )
   Dim replica As New NotesDatabase("","")
   
   'Current location name retrieve (via notes.ini file)
   strLoc = session.getEnvironmentString("Location", True)
   Print "strLoc" & strLoc
   If strLoc="" Then
      Print "Problem : Don't find the Location Document"
      Exit Sub   
   End If
   
   If Instr(strLoc, ",") Then
      strLoc = Left(strLoc, Instr(strLoc, ",")-1)
   End If
   
   Dim strSearch (1) As String
   strSearch(0) = "*"
   strSearch(1) = strLoc
   Set vwSites = dbNames.GetView("($Locations)")
   Set docSite = vwSites.GetDocumentByKey(strSearch)
   
   ' Setting for Current Location Name
   If docSite Is Nothing Then
      Print "Problem : Don't find the Location Document"
      Exit Sub   
   Else
      ' Réplication activée
      Set item = docSite.ReplaceItemValue( "Enabled", "1" )
      
      ' tous les jours
      For j = 0 To 6
         DayList(j)= Cstr( j + 1)
      Next       
      docSite.Weekdays=DayList
      
      'toutes les 60 minutes       
      docSite.Interval=60
      
      Call docSite.Save( True, True )
   End If
   
   If replica.Open("", Path) Then
      Messagebox( "One replica of  "+Path+" database is in Local" )
      Exit Sub
   Else
      Set replica = db.CreateReplica( "", Path )
   'Ouverture de la réplique Local   
      Call workspace.OpenDatabase ( "", Path, "", "", False, False )
   End If
   
   'Modification des préférences utilisateurs, Mise à jour du parametre Notes.ini
   CA_ini = session.GetEnvironmentString( "NAMES" , True)
   If (CA_ini Like "*"+Path+"*") Then
   Else
      CA_ini = CA_ini + ","+Path
      Call session.SetEnvironmentVar( "NAMES", CA_ini ,True)
   End If
   
   Messagebox( "Succesfull, Thanks to close your Lotus Notes Client so that your new parameter is updated." )
   Exit Sub
printerror:
   Print "Erreur : " & Error & " ligne  " & Erl
   Exit Sub
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar rko » 17 Juin 2010 à 14:18

Merci pour ton aide,
quand je copie colle le code dans mon bouton, j'ai des erreurs
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar Michael DELIQUE » 17 Juin 2010 à 14:38

salut

toutes les variables ne sont pas déclarés
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 stloje » 17 Juin 2010 à 15:32

Reste aussi à savoir à quel endroit tu l'as collé. Il est bien entre les balises Sub Click(Source As Button) - End Sub?

Pour ma part, je l'ai compilé sur Notes et il n'y avait pas d'erreur.

Maintenant, si tu as l'option (voir événement «Options») Option Declare ou Option Explicit, il va falloir déclarer les variables.[/list]
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar Michael DELIQUE » 17 Juin 2010 à 15:37

Stloje, il faut TOUJOURS déclarer ses variables TOUJOURS !!!
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 stloje » 21 Juin 2010 à 09:37

Michael DELIQUE a écrit:Stloje, il faut TOUJOURS déclarer ses variables TOUJOURS !!!


Ben, oui! C'est ce que j'ai fait : j'ai déclaré MES variables! :lol:

Bon, j'avais regardé rapidement le code, j'ai ajouté quelques modifications et apporté un léger correctif, mais j'avais laissé le code tel qu'il était. Je ne pense pas qu'il faudrait que je me mette à nettoyer et optimiser tout le code, surtout que je le fais sur mes heures de travail. Il faut en laisser un peu pour les autres? Non? 8)

:wink: De toute façon, pour toutes les fois que j'ai mis du code sur le forum, j'ai jamais eu la remarque. Je pense pas être un mauvais élève? Non?
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar Michael DELIQUE » 21 Juin 2010 à 09:46

j'ai pas dis que tu étais un mauvais élève, on va pas râler parce qu'on corrige vite fais en plus de son travail du code posté sur le forum !

mais ça m'a permis de faire passer le message une fois de plus
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 stloje » 21 Juin 2010 à 09:54

T'en fait pas, je le prend avec un GRAND SOURIRE!

Venant de toi, c'est comme une tape amicale dans le dos! :wink:
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans


Retour vers Développement

cron