Ayudita
Publicado por Lucia (1 intervención) el 02/06/2006 07:51:55
Hola wenas me e creado un pequeño programa para replicar y sincronizar bases de datos en access. Aqui dejo el codigo para que lo veais y me exeis una mano.
En el módulo .bas estas son las funciones:
Public Function CreatePartialReplica(ByVal origen As String, ByVal destino As String)
Dim dbsFull As Database
Set dbsFull = OpenDatabase(origen)
dbsFull.MakeReplica destino, dbRepMakePartial
dbsFull.Close
End Function
Public Function sincronize(ByVal origen As String, ByVal destino As String)
'variable para almacenar las operaciones en la base de datos'
Dim base As Database
'Abre la base de datos en este caso la replicacion'
Set base = OpenDatabase(destino)
'sincroniza la base de datos anterior con la original'
base.Synchronize (origen)
'cerramos la base de datos para que se visualizen los cambios'
base.Close
End Function
En un form que se llama configurar el código siguiente:
es muy largo pero en realidad no debería ser tanto lo que pasa que controlo que se hagan invisibles ciertos botones.
Public origen As String
Public destino As String
Public interval As Integer
Private Sub cmdcambiar_Click()
txtorigen.Enabled = True
End Sub
Private Sub cmdreplicar_Click()
origen = txtorigen
destino = txtdestino
If ((txtorigen.Text = "") Or (txtdestino.Text = "")) Then
MsgBox "No puedes dejar los campos en blanco"
Else
Call Module1.CreatePartialReplica(origen, destino)
MsgBox "SE HA CREADO LA REPLICA DE LA BASE DE DATOS"
Label1.Visible = False
Label2.Visible = False
txtorigen.Visible = False
txtdestino.Visible = False
cmdreplicar.Visible = False
cmdcambiar.Visible = False
End If
End Sub
Private Sub cmdsincronizar_Click()
origen = txtorigen
destino = txtdestino
If ((txtorigen.Text = "") Or (txtdestino.Text = "")) Then
MsgBox "Los campos de origen o de destino están en blanco"
Label1.Visible = True
Label2.Visible = True
txtorigen.Visible = True
txtdestino.Visible = True
cmdreplicar.Visible = True
cmdcambiar.Visible = True
Label4.Visible = False
txtinterval.Visible = False
cmdsincronizar.Visible = False
Else
If txtinterval.Text = "" Then
MsgBox "No puedes dejar campo en blanco"
Else
interval = Val(txtinterval.Text) * 1000
Timer1.interval = interval
MsgBox "Base de datos sincronizada"
Label4.Visible = False
txtinterval.Visible = False
cmdsincronizar.Visible = False
End If
End If
End Sub
Private Sub cmdvolver_Click()
configurar.Hide
End Sub
Private Sub Form_Resize()
configurar.Cls
configurar.AutoRedraw = True
configurar.DrawStyle = 6
configurar.DrawMode = 13
configurar.DrawWidth = 2
configurar.ScaleMode = 3
'configurar.ScaleHeight = (255 * 2)
For i = 0 To 255
configurar.Line (0, Y)-(configurar.Width, Y + 2), RGB(0, 0, i), BF
Y = Y + 2
Next i
End Sub
Private Sub mnuReplicar_Click()
Label1.Visible = True
Label2.Visible = True
txtorigen.Visible = True
txtdestino.Visible = True
cmdreplicar.Visible = True
Label4.Visible = False
txtinterval.Visible = False
cmdsincronizar.Visible = False
cmdcambiar.Visible = True
End Sub
Private Sub mnuSincronizar_Click()
Label4.Visible = True
txtinterval.Visible = True
cmdsincronizar.Visible = True
Label1.Visible = False
Label2.Visible = False
txtorigen.Visible = False
txtdestino.Visible = False
cmdreplicar.Visible = False
cmdcambiar.Visible = False
End Sub
Private Sub mnuVolver_Click()
configurar.Hide
End Sub
Private Sub Timer1_Timer()
Call Module1.sincronize(origen, destino)
End Sub
Mi duda es que al replicar dos bases de datos con igual nombre me salta un error y se me para el programa.
como consigo hacer para decir al usuario que la base de datos ya existe con ese nombre y que ponga otro.
En el módulo .bas estas son las funciones:
Public Function CreatePartialReplica(ByVal origen As String, ByVal destino As String)
Dim dbsFull As Database
Set dbsFull = OpenDatabase(origen)
dbsFull.MakeReplica destino, dbRepMakePartial
dbsFull.Close
End Function
Public Function sincronize(ByVal origen As String, ByVal destino As String)
'variable para almacenar las operaciones en la base de datos'
Dim base As Database
'Abre la base de datos en este caso la replicacion'
Set base = OpenDatabase(destino)
'sincroniza la base de datos anterior con la original'
base.Synchronize (origen)
'cerramos la base de datos para que se visualizen los cambios'
base.Close
End Function
En un form que se llama configurar el código siguiente:
es muy largo pero en realidad no debería ser tanto lo que pasa que controlo que se hagan invisibles ciertos botones.
Public origen As String
Public destino As String
Public interval As Integer
Private Sub cmdcambiar_Click()
txtorigen.Enabled = True
End Sub
Private Sub cmdreplicar_Click()
origen = txtorigen
destino = txtdestino
If ((txtorigen.Text = "") Or (txtdestino.Text = "")) Then
MsgBox "No puedes dejar los campos en blanco"
Else
Call Module1.CreatePartialReplica(origen, destino)
MsgBox "SE HA CREADO LA REPLICA DE LA BASE DE DATOS"
Label1.Visible = False
Label2.Visible = False
txtorigen.Visible = False
txtdestino.Visible = False
cmdreplicar.Visible = False
cmdcambiar.Visible = False
End If
End Sub
Private Sub cmdsincronizar_Click()
origen = txtorigen
destino = txtdestino
If ((txtorigen.Text = "") Or (txtdestino.Text = "")) Then
MsgBox "Los campos de origen o de destino están en blanco"
Label1.Visible = True
Label2.Visible = True
txtorigen.Visible = True
txtdestino.Visible = True
cmdreplicar.Visible = True
cmdcambiar.Visible = True
Label4.Visible = False
txtinterval.Visible = False
cmdsincronizar.Visible = False
Else
If txtinterval.Text = "" Then
MsgBox "No puedes dejar campo en blanco"
Else
interval = Val(txtinterval.Text) * 1000
Timer1.interval = interval
MsgBox "Base de datos sincronizada"
Label4.Visible = False
txtinterval.Visible = False
cmdsincronizar.Visible = False
End If
End If
End Sub
Private Sub cmdvolver_Click()
configurar.Hide
End Sub
Private Sub Form_Resize()
configurar.Cls
configurar.AutoRedraw = True
configurar.DrawStyle = 6
configurar.DrawMode = 13
configurar.DrawWidth = 2
configurar.ScaleMode = 3
'configurar.ScaleHeight = (255 * 2)
For i = 0 To 255
configurar.Line (0, Y)-(configurar.Width, Y + 2), RGB(0, 0, i), BF
Y = Y + 2
Next i
End Sub
Private Sub mnuReplicar_Click()
Label1.Visible = True
Label2.Visible = True
txtorigen.Visible = True
txtdestino.Visible = True
cmdreplicar.Visible = True
Label4.Visible = False
txtinterval.Visible = False
cmdsincronizar.Visible = False
cmdcambiar.Visible = True
End Sub
Private Sub mnuSincronizar_Click()
Label4.Visible = True
txtinterval.Visible = True
cmdsincronizar.Visible = True
Label1.Visible = False
Label2.Visible = False
txtorigen.Visible = False
txtdestino.Visible = False
cmdreplicar.Visible = False
cmdcambiar.Visible = False
End Sub
Private Sub mnuVolver_Click()
configurar.Hide
End Sub
Private Sub Timer1_Timer()
Call Module1.sincronize(origen, destino)
End Sub
Mi duda es que al replicar dos bases de datos con igual nombre me salta un error y se me para el programa.
como consigo hacer para decir al usuario que la base de datos ya existe con ese nombre y que ponga otro.
Valora esta pregunta
0