| Issue: Need script to change the replica ID of a Lotus Notes database/application.
 
 Solution:
 (From notes.net post several years ago - don't know the author)
 
 Option Public
 %INCLUDE "LSERR.LSS"
 Declare Function W32_NSFDbOpen Lib "nnotes.dll" Alias "NSFDbOpen" _
 (Byval dbname As String, dbHandle As Long ) As Integer
 Declare Function W32_NSFDbClose Lib "nnotes.dll" Alias "NSFDbClose" _
 (Byval dbHandle As Long ) As Integer
 Declare Function W32_NSFDBCREATE Lib "NNOTES.DLL" Alias "NSFDbCreate" _
 (Byval dbname As String, Byval dbClass As Variant, Byval forceIt As Single) As Integer
 Declare Function W32_NSFDBREPLICAINFOSET Lib "NNOTES.DLL" Alias "NSFDbReplicaInfoSet" _
 (Byval dbHandle As Long, replInfoStruct As Long) As Integer
 Declare Function W32_NSFDBREPLICAINFOGET Lib "NNOTES.DLL" Alias "NSFDbReplicaInfoGet" _
 (Byval dbHandle As Long, replInfoStruct As Long) As Integer
 
 Sub Initialize
 Dim SourceServer As String
 Dim SourceDatabase As String
 Dim DestinationServer As String
 Dim DestinationDatabase As String
 Dim db As NotesDatabase
 
 SourceServer = Inputbox$ ("Enter the server name that the database with the good replica ID resides on." _
 ,"Switch Replica ID Agent -- Source Server Name" ,"Your server here")
 SourceDatabase = Inputbox$ ("Enter the path\name of the database with the good replica ID." _
 ,"Switch Replica ID Agent -- Source Database" ,"source\testsample.nsf")
 DestinationServer = Inputbox$ ("Enter the server name of the database with the replica ID " _
 & "that you would like to change." ,"Switch Replica ID Agent -- Destination Server Name" _
 ,"Your server here")
 DestinationDatabase = Inputbox$ ("Enter the path\name of the database with the replica ID that you would " _
 & "like to change." ,"Switch Replica ID Agent -- Destination Database" ,"destination\testsample.nsf")
 
 If DestinationServer = "Local" Then
 DestinationServer = ""
 End If
 If SourceServer = "Local" Then
 SourceServer = ""
 End If
 Set db = New NotesDatabase("","")
 Call db.Open(DestinationServer,DestinationDatabase)
 If Not (db.Isopen) Then
 Msgbox "Switch Replica ID Agent could not open " & DestinationServer & "!!" & DestinationDatabase , 16,"Error:"
 Exit Sub
 Else
 Call db.close
 End If
 
 Set db = New NotesDatabase ("","")
 Call db.Open(SourceServer,SourceDatabase)
 If Not (db.Isopen) Then
 Msgbox "Switch Replica ID Agent could not open " & sourceserver & "!!" & sourcedatabase , 16,"Error:"
 Exit Sub
 End If
 Call db.close
 
 Call SwitchReplID(SourceServer,SourceDatabase,DestinationServer,DestinationDatabase)
 
 End Sub
 Function SwitchReplID(S_Server As String, S_Db As String, D_Server As String, D_Db As String) As Long
 
 Dim S_DbString As String
 Dim D_DbString As String
 Dim dbhandle As Long
 Dim retNoteID As Long
 Dim noteClass As Long
 Dim replInfo(5) As Long
 Dim replID1 As Long
 Dim replID2 As Long
 Select Case Ucase$(S_Server)
 Case "LOCAL"
 S_DbString = S_Db
 Case "LOKAL"
 S_DbString = S_Db
 Case ""
 S_DbString = S_Db
 Case Else
 S_DbString = S_Server + "!!" + S_Db
 End Select
 
 Select Case Ucase$(D_Server)
 Case "LOCAL"
 D_DbString = D_Db
 Case "LOKAL"
 D_DbString = D_Db
 Case ""
 D_DbString = D_Db
 Case Else
 D_DbString = D_Server + "!!" + D_Db
 End Select
 
 '===Get the replica info from Source DB===
 
 REM "W32"
 rc = W32_NSFDBOPEN(S_DbString, dbhandle&)
 rc = W32_NSFDBREPLICAINFOGET(dbhandle&, replInfo(0))
 replID1 = replInfo(0)
 replID2 = replInfo(1)
 rc = W32_NSFDBCLOSE(dbhandle&)
 
 '====Replace Replica ID on Database===
 rc = W32_NSFDBOPEN(D_DbString, dbhandle&)
 rc = W32_NSFDBREPLICAINFOGET(dbhandle&, replInfo(0))
 replInfo(0) = replID1
 replInfo(1) = replID2
 rc = W32_NSFDBREPLICAINFOSET(dbhandle&, replInfo(0))
 rc = W32_NSFDBCLOSE(dbhandle&)
 '_____________________________________
 End Function
 
 
 previous page
 
 
 |