Set New ReplicaID

Set New ReplicaID

Messagepar Michael DELIQUE » 10 Jan 2008 à 09:28

Codé grace à une fonction de Julien (Merci Julien) => http://www.domlike.net/domlike/dl2.nsf/ ... OME-6LWB93


Code : Tout sélectionner
Function SetNewReplicaID_API (wdb As NotesDatabase, wNewRepliqueID As String) As String
   
%REM
'variableAPI pour la fonction SetNewReplicaID_API
Type TIMEDATE
   Innards(1) As Long
End Type
Type DBREPLICAINFO
   ID As TIMEDATE  'ID that is same for all replica files
   Flags As Integer     'Replication flags
   CutoffInterval As Integer   'Automatic Replication Cutoff
   Cutoff As TIMEDATE       'Replication cutoff date
End Type
Declare Function NSFDbClose Lib "nnotes.dll" (Byval hDb As Long) As Integer
Declare Function NSFDbOpen Lib "nnotes.dll" (Byval dbName As String, rethDb As Long) As Integer
Declare Function NSFDbReplicaInfoGet Lib "nnotes.dll" Alias "NSFDbReplicaInfoGet" (Byval hdb As Long, hdbr As DBREPLICAINFO) As Integer
Declare Function NSFDbReplicaInfoSet Lib "nnotes.dll" Alias "NSFDbReplicaInfoSet" (Byval hdb As Long, hdbr As DBREPLICAINFO) As Integer
%END REM
   
   'Déclaration Variable
        Dim Session as NotesSession
   Dim nbHDB As Long
   Dim nbReturnValue As Long
   Dim RepInfo As DBREPLICAINFO     
   Dim i As Integer
   
   On Error Goto ErreurHandle
   SetNewReplicaID_API = ""
   
   'teste si la base cible est accéssible
   If wDB Is Nothing Then
      Exit Function
   Elseif dbexists_ls(wdb) = False Then
      Exit Function
   End If
      
   Set Session = New NotesSession
   
   If session.Platform <> "Windows/32" Then
      Error 9999,"Work Only on  Windows/32 Platform"
      Exit Function
   End If
   
   If Trim(wNewRepliqueID) = "" Then
      'génére une nouvelle id de réplique
      Randomize
      For i = 1 To 8
         SetNewReplicaID_API = SetNewReplicaID_API + Ucase(Chr(Int(Rnd*6) + 65))
      Next
      SetNewReplicaID_API = SetNewReplicaID_API+":"
      For i = 1 To 8
         SetNewReplicaID_API = SetNewReplicaID_API + Ucase(Chr(Int(Rnd*6) + 65))
      Next
   Else
      SetNewReplicaID_API = Trim(wNewRepliqueID)
   End If
   
   If Trim(wdb.Server) = "" Then
      nbReturnValue = NSFDbOpen(wdb.FilePath, nbHDB)
   Else
      nbReturnValue = NSFDbOpen(wdb.Server + "!!" + wdb.FilePath, nbHDB)
   End If   
   
   If nbReturnValue <> 0 Then
      Error 9999,"Couldn't open db : "+wdb.FilePath
      Exit Function
   End If
   nbReturnValue = NSFDbReplicaInfoGet(nbHDB, RepInfo)
   
   If nbReturnValue <> 0 Then
      Error 9999,"Couldn't get Replica Info"
      Exit Function
   End If
   
   RepInfo.ID.Innards(1) = Val( "&H"+Left$( SetNewReplicaID_API, 8 ) )
   RepInfo.ID.Innards(0) = Val( "&H"+Right$( SetNewReplicaID_API, 8 ) )
   
   nbReturnValue = NSFDbReplicaInfoSet(nbHDB, RepInfo)    ' take a deep breath...   
   
   nbReturnValue = NSFDbReplicaInfoGet(nbHDB, RepInfo)
   If nbReturnValue <> 0 Then
      Error 9999,"Couldn't get Replica Info"
      Exit Function
   End If
   
   nbReturnValue = NSFDbClose(nbHDB)
   
   Exit  Function
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   SetNewReplicaID_API = ""
   Exit Function
End Function
Dernière édition par Michael DELIQUE le 22 Jan 2008 à 21:12, édité 1 fois.
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 oguruma » 13 Jan 2008 à 10:20

hello,
pour ceux qui ne maîtrisent pas trop (moi...) je pense qu'il serait bon de mettre un exemple d'utilisation si tu en as un sous le coude
merci
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Messagepar Michael DELIQUE » 13 Jan 2008 à 15:17

salut

bein c'est simple, tu passe l'objet notesdabase (instancié) à la fonction (l'id de réplique est optionnel) et ça te change l'id de réplique. ça s'utilise comme n'importe quelle fonction LS

sinon j'ai mis en référence l'article de Julien qui ma servi de support. à la seule grosse différence la fonction est autnome, la génération de l'id de réplique est intégré à la fonction

si tu veux un exemple
Code : Tout sélectionner
dim session as new notesSession
dim db as NotesDatabase
Dim NewRepliqueID as String

set DB = Session.currentDatabase
NewRepliqueID = SetNewReplicaID_API(DB,"")
if trim(NewRepliqueID) = "" then
    msgbox 'L'id de réplique n'a pas été changé"
else
    msgbox "L'id de réplique a été changé :"+chr(10)+NewRepliqueID
end if
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


Retour vers API