En este grupo En todos

Foro de Access



revincular tablas de dos back_end en access 2007

gabriel
Nicaragua, Nicaragua
Escrito por Gabriel Cajina
el 10/12/2009

Hola experto como esta
tengo una aplicacion en la cual estoy tratando de vincular tablas de dos bases de datos distintas... Haciendo uso de un combo, que tiene como boundcolum la ruta completa de la base de datos que tengo en un servidor M:\nombre_db...... En la tabla a la que hace referencia el combo estan las bases de datos a las que yo quiero hacerle link segun la seleccion del combo...
el codigo es el siguiente
ReVinculaTablas Me.cbo_dbs.Column(0)

'alli llamo a la funcion revinculatablas y le paso el parametro (es decir la ruta de la DB) para 'que me vicule las tablas de esa db
=================================================================
'la funcion es la siguiente
Public Function ReVinculaTablas(strBDRemota As String)
Dim i As Long, _
dbs As DAO. Database

On Error GoTo ReVinculaTablas_TratamientoErrores

Set dbs = OpenDatabase(strBDRemota, False, False, ";pwd=xxxxxxxxx")
For i = 0 To dbs.TableDefs.Count - 1
' si dbs. TableDefs(i). Connect no está vacio, es por que se trata de una tabla vinculada
If (dbs. TableDefs(i). Connect <> "") Then
' así pues asigno la "nueva" ruta a la tabla vinculada

dbs. TableDefs(i). Connect = ";DATABASE=" & strBDRemota & ";"
dbs. TableDefs(i). RefreshLink
End If
Next i

ReVinculaTablas_Salir:
Set dbs = Nothing
On Error GoTo 0
Exit Function

ReVinculaTablas_TratamientoErrores:
If Err. Number = 3024 Or Err. Number = 3078 Or Err. Number = 3011 Then
MsgBox "La base de datos " & strBDRemota & vbCrLf & CurrentProject. Path, vbCritical + vbOKOnly, "ATENCION"
Else
MsgBox "Error " & Err. Number & " en proc. ReVinculaTablas de Módulo mdlGeneral (" & Err. Description & ")", vbOKOnly + vbCritical
End If
GoTo ReVinculaTablas_Salir

End Function ' ReVinculaTablas

al actualizar el combo, lo pasa nada... Es decir no cambia el vinculo de las tablas... Y deberia ponerme la informacion de la db que hace referencia el combo...

que estoy haciendo mal que no refresca el link de las tablas?

se lo agradeceria si me ayudan con esto

Juan Cots
Valencia, España
Escrito por Juan Cots
el 10/12/2009

Hola.
A simple vista lo veo todo bien.

Estás seguro de esto: Me.cbo_dbs.Column(0)
¿No lo tendrás en la segunda columna?... Prueba poniendo
Me.cbo_dbs.Column(1)

Un saludo

Gabriel Cajina
Nicaragua, Nicaragua
Escrito por Gabriel Cajina
el 10/12/2009

Pues si, como puede ver la funcion toma como parametro el valor de la columna 0 que tiene las rutas de las Dbs a las que quiero hacerle link.... La columna 1 es la descripcion que aparece en el combo, por ejemplo la ruta M:\manto_be. Accdb lo que el user ver es planta 1 en el combo... Si la pongo en 1 no encuentra las dbs debido a que a que el valor que pasa no es la ruta de la db sino la descripcion..

Juan Cots
Valencia, España
Escrito por Juan Cots
el 11/12/2009

Pues... No veo donde puede estar mal.

pruebas que puedes hacer:

Comprobar que tienes acceso a la ruta de las tablas y privilegios suficientes

Llamar a la función con la ruta manual es decir:

ReVinculaTablas "M:\loquesea"

Verificar las cuatro líneas del código que realmente hacen algo (el resto son comprobaciones o control de errores)

Set dbs = OpenDatabase(strBDRemota, False, False, ";pwd=xxxxxxxxx")
For i = 0 To dbs.TableDefs.Count - 1
dbs. TableDefs(i). Connect = ";DATABASE=" & strBDRemota & ";"
dbs. TableDefs(i). RefreshLink

En la primera línea solo hay dos posibilidades de error o la variable strBdremota que es la que obtienes del combo y que ahora vas a probar escribiendo directamente o el password. La tercera línea solo tiene el posible problema de la misma variable anterior. La segunda y la cuarta no deberían ocasionar problemas.

Resumiendo:
O no tienes alcance a las tablas, o el password es incorrecto

Un saludo

Juan Cots
Valencia, España
Escrito por Juan Cots
el 11/12/2009

Bueno... Y por supuesto el procedimiento debe estar en un sitio accesible y en el evento "Despues de Actualizar del combo" debes poner la instrucción que llama al procedimiento.

Gabriel Cajina
Nicaragua, Nicaragua
Escrito por Gabriel Cajina
el 11/12/2009

El password es correcto, antes no le habia puesto el password entonces me mandaba un error de incorrect password, entonces en la intruccion de conexion alli le agregue el password y todo bien... No arroja ni un solo error.... Supuestamente.... Y me dice el mensaje que las tablas han sido vinculadas como si todo hubiera sucedido correctamente.... Pero cuando reviso los datos que estan son los de la primera DB, y no los de la nueva que quiero vincular.
en relacion al modulo donde esta el codigo... Esta bien sino me daria error al buscar la funcion si no tuviera en alcance adecuado...

pero gracias por su pronta respuesta don Juan... Como siempre le quedo agradecido por su tiempo... Seguire revisando a ver por donde esta el problema

saludes