Trabajar con tabla de datos externa de Access
Necesito de vuestra ayuda para acabar con un proyecto, le he dado mil vueltas y lo tengo casi, pero no consigo terminar que funcione del todo.
Lo que necesito es lo siguiente:
Tengo 2 archivos access, uno con la base de datos (llamado Base1) situado en un servidor (T:\) y otro con los formularios llamado Remoto. En este último tengo en el formulario Principal, entre otros, un cuadro de texto con la ubicación de Base1 (T:\base1.mdb) para que cuando la Base1 cambie de ubicación, yo lo cambie en este cuadro de texto y no en todo el código VBA. Por ejemplo, en el cuadro de texto ID tengo lo siguiente y funciona perfectamente:
Private Sub TXTIDNOMBRE_Exit(Cancel As Integer)
Dim RUTA As String 'es la ruta donde esta guardado el archivo Base1
RUTA = TXTRUTA.Value 'por ejemplo T:\....
Dim rs As Recordset
Dim DB As Database
Set DB = OpenDatabase(RUTA)
Set rs = DB.OpenRecordset("SELECT * FROM TABLA1 Where IdNOMBRE=" & Form!TXTIDNOMBRE.Value)
If rs.EOF Then
TXTIDNOMBRE = Empty
TXTNOMBRE = Empty
TXTNUMERO = Empty
MsgBox "No existe el registro", vbInformation, "NO EXISTE ..."
TXTIDNOMBRE.SetFocus
Else
TXTNOMBRE = rs.Fields(1) 'me muestra el nombre según el ID introducido
TXTNUMERO = rs.Fields(2)
End If
End Sub
Ahora bien, el problema lo tengo, que la parte de RUTA=TXTRUTA.Value, no se expresarlo en el origen de la fila de un cuadro de lista el cual me debe mostrar información de la Base1.
He probado con algo como:
SELECT * FROM TABLA1 IN 'RUTA'
pero no funciona, sin embargo, si funciona si le expecifico la ruta
SELECT * FROM TABLA1 IN 'T:\BASE1.MDB'
Pero esto es lo que no quiero, porque si no, cada vez que cambie la ubicación, tendré que cambiar todo el código de todos los listbox que tenga.
Alguna sugerencia de como hacer esto, aunque tenga que cambiar los formatos de los formularios o añadir alguna tabla, o rellenar los cuadros de lista por VBA en vez de por sus propiedades ... Solo quiero que esto funcione.
Tengo una pequeña base de prueba hecha, por si queréis que la envíe por email.
Lo que necesito es lo siguiente:
Tengo 2 archivos access, uno con la base de datos (llamado Base1) situado en un servidor (T:\) y otro con los formularios llamado Remoto. En este último tengo en el formulario Principal, entre otros, un cuadro de texto con la ubicación de Base1 (T:\base1.mdb) para que cuando la Base1 cambie de ubicación, yo lo cambie en este cuadro de texto y no en todo el código VBA. Por ejemplo, en el cuadro de texto ID tengo lo siguiente y funciona perfectamente:
Private Sub TXTIDNOMBRE_Exit(Cancel As Integer)
Dim RUTA As String 'es la ruta donde esta guardado el archivo Base1
RUTA = TXTRUTA.Value 'por ejemplo T:\....
Dim rs As Recordset
Dim DB As Database
Set DB = OpenDatabase(RUTA)
Set rs = DB.OpenRecordset("SELECT * FROM TABLA1 Where IdNOMBRE=" & Form!TXTIDNOMBRE.Value)
If rs.EOF Then
TXTIDNOMBRE = Empty
TXTNOMBRE = Empty
TXTNUMERO = Empty
MsgBox "No existe el registro", vbInformation, "NO EXISTE ..."
TXTIDNOMBRE.SetFocus
Else
TXTNOMBRE = rs.Fields(1) 'me muestra el nombre según el ID introducido
TXTNUMERO = rs.Fields(2)
End If
End Sub
Ahora bien, el problema lo tengo, que la parte de RUTA=TXTRUTA.Value, no se expresarlo en el origen de la fila de un cuadro de lista el cual me debe mostrar información de la Base1.
He probado con algo como:
SELECT * FROM TABLA1 IN 'RUTA'
pero no funciona, sin embargo, si funciona si le expecifico la ruta
SELECT * FROM TABLA1 IN 'T:\BASE1.MDB'
Pero esto es lo que no quiero, porque si no, cada vez que cambie la ubicación, tendré que cambiar todo el código de todos los listbox que tenga.
Alguna sugerencia de como hacer esto, aunque tenga que cambiar los formatos de los formularios o añadir alguna tabla, o rellenar los cuadros de lista por VBA en vez de por sus propiedades ... Solo quiero que esto funcione.
Tengo una pequeña base de prueba hecha, por si queréis que la envíe por email.
1 respuesta
Respuesta de Angel Navales
1