Access - Enlazar dos formularios de dos bases distintas.

 
Vista:
Imágen de perfil de Toni

Enlazar dos formularios de dos bases distintas.

Publicado por Toni (129 intervenciones) el 21/03/2013 01:40:16
Hola a todos,

Pues como dice el título mi pregunta es si se puede enlazar dos formularios que estan en dos bases distintas (dos proyectos distintos),

He conectado mi formulario a la tabla de la otra base y puedo mostrar en mi formulario actual los datos de esa tabla, pero me gustaría poder situar mi registro actual de mi formulario con el mismo registro de la tabla a la que he conectado mediante un campo en común que podría buscar de alguna manera.(ambas tablas tienen el "código de cliente" en común)

Actualmente uso esas dos bases, las tengo abiertas a la misma vez, en eso no hay problema y cuando quiero acutalizar datos en los dos formulario la operativa que tengo ahora es la siguiente:

1. En la primera base busco el registro que me interesa en la tabla mediante un formulario que ya esta hecho, tomo nota de algunos datos que me interesan de esa tabla.

2.Paso a la segunda base, busco el mismo registro y actualizo en esta segunda base con otro formulario los datos que me interesan segun proceda.

Lo que pretendo ahorrarme es tener que buscar en la segunda base el registro que está en ese momento activo en la primera base, no se si hay alguna manera de hacerlo.

Por desgracia está montado así y no puedo modificar nada de la primera base, o al menos no una modificación grande, si se necesitara hacer alguna pequeña modificación en la pirmera base supongo que si podría hacerlo.

Así he hecho la conexión a la tabla de la base externa, aunque no veo que se pueda hacer lo que pido.

Dim Conectar As String
Conectar = CurrentProject.Path + "\Controles.accdb"
Me.RecordSource = "SELECT * FROM Clientes IN'" & Conectar & "'"


Agradezco vuestra ayuda.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Enlazar dos formularios de dos bases distintas.

Publicado por Norberto (753 intervenciones) el 21/03/2013 12:12:31
Hola.

¿Y no te sería más sencillo vincular la tabla de la bdd 2 en la bdd 1 y manipularla?

Si la respuesta es no, nos esgrimiremos* las neuronas un poco.

Un saludo.





* "A ver si os podéis esgrimir las neuronas y hacer una pregunta inteligente" (Ana [García] Obregón, bióloga y maestra de esgrima para neuronas a un periodista)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Toni

Enlazar dos formularios de dos bases distintas.

Publicado por Toni (129 intervenciones) el 21/03/2013 12:52:04
Lo de vincular las tablas ya lo he pensado, de hecho en parte de la aplicación lo estoy aplicando, pero es que hay algunos formularios en la BDD1 que me gustaría aprovechar por el trabajo que tienen, la información que muestran y cómo la muestran, y claro al no poder modificar esos formularios había pensado en esta otra opción, con un nuevo formulario paliar las carencias del primero aprovechando que en esta BDD2 además hago y controlo otras cosas.

He trasteado mucho pero como no llevo mucho tiempo con access no se si es que no se puede hacer o que no lo he encontrado.

Gracias Norberto, yo sigo "esgrimiendome" mis neuronas...jejeje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Enlazar dos formularios de dos bases distintas.

Publicado por Norberto (753 intervenciones) el 21/03/2013 15:32:53
Hola.

No hace falta que te esgrimas más las neuronas. Salseando un poco por aquí, un poco por allí...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Compare Database
Option Explicit
Dim AppAcc As Access.Application, frm As Form, rst As DAO.Recordset
 
Private Sub Form_Load()
    Set AppAcc = CreateObject("Access.Application")     'Abrimos otra instancia de Access
    AppAcc.OpenCurrentDatabase "...\BaseDeDatos2.mdb"   'Y en ella la 2ª base de datos"
    AppAcc.DoCmd.OpenForm "Formulario de la bdd2"       'Abrimos el formulario
    Set frm = AppAcc.Forms("Formulario de la bdd2")     'Y lo asigamos a frm
    Set rst = frm.RecordsetClone                        'Asignamos su clon a rst
 
End Sub
 
Private Sub Form_Current()
    rst.FindFirst "IdCliente = " & Me.IdCliente 'Buscamos en el clon el IdCliente
    If Not rst.NoMatch Then                     'Si lo encuentra
        frm.Bookmark = rst.Bookmark             'Activamos el registro en el formulario
    End If
 
End Sub
 
Private Sub Form_Close()
    Set rst = Nothing                               'Limpiamos rst
    AppAcc.DoCmd.Close acForm, frm.Name, acSaveNo   'Cerramos el formulario de la otra bdd
    AppAcc.CloseCurrentDatabase                     'Cerramos la base de datos 2
    AppAcc.Quit                                     'Y salimos de la 2ª instancia de Access (con esto sería suficiente)
    Set frm = Nothing                               'Limpiamos las variables
    Set AppAcc = Nothing
 
End Sub
 
Espero que puedas adaptarlo y sea lo que buscabas.
 
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Enlazar dos formularios de dos bases distintas.

Publicado por Norberto (753 intervenciones) el 21/03/2013 16:13:24
Hola.

Es posible (case seguro) que tengas que poner AppAcc.Visible = True en el Form_Load().

Si quieres que al sincronizar los dos formularios (automáticamente o a través de algún botón) se te active la otra bdd (seguro que con alguna APP de Windows se puede hacer pero...) usa

AppAcc.Visible = False
AppAcc.Visible = True

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Toni

Enlazar dos formularios de dos bases distintas.

Publicado por Toni (129 intervenciones) el 21/03/2013 20:28:44
Bueno Norberto, eres un hacha y no sabes coooomo te lo agradezco.

He probado a meterle todo el codigo en la BASE2, ya que es la mía y la que puedo modificar a mi antojo, (aunque lo suyo sería poderselo poner a la BASE1)

Y funciona perfectamente, al pasar de registro ahora en mi BASE2 automáticamente se posiciona en el mismo registro de la BASE1, eso si, con el "FindFirst" me hacía un lío y tal como me lo has indicado no me funcionaba bien, me daba errores, al final para hacer la prueba he creado un TextBox en el formulario de la BASE2 y lo he enlazado al campo "IdCliente" de esa tabla, de modo que queda así, y funciona.

rst.FindFirst "[idCLIENTE] ='" & Me.Texto27.Value & "'"

(Lo de la concatenación de cadenas con comillas simples, dobles y "&" no lo domino, he estado buscando en internet por si hubiese algún ejemplo que lo explicase bien pero no encuentro nada, si sabes de alguno me podrías pasar el enlace si no te importa.)

Saludos, y no se cuantas veces darte las gracias.

Toni
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Enlazar dos formularios de dos bases distintas.

Publicado por Norberto (753 intervenciones) el 22/03/2013 09:10:05
Hola.

Me alegro de que te funcione. En cuanto a lo de concatenar en un filtro, búsqueda, expresión SQL, etc. el nombre del campo con el contenido de una variable, has de tener en cuenta los tipos de datos:

Numérico: "[Nombre de campo] = " & numVariable 'Resultado: [Nombre de campo] = 1
Texto: "[Nombre de campo] = '" & strVariable & "'" 'Resultado: [Nombre de campo] = 'Pepito'
Fecha: "[Nombre de campo] = #" & Format(datVariable, "mm/dd/yyyy") & "#" ' Resultado:
[Nombre de campo] = #03/22/2013#

Yo en las expresiones de texto usaba comillas dobles porque creía recordar que las simples me habían dado algún problema allá por el siglo pasado, hasta que vi en este foro que todo que todo el mundo usaba simples y es menos lioso.

En cuanto a todo lo demás, date una vuelta por el sitio de Neckkito y encontrarás abundante material sobre Access, VBA y SQL.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar