Access - Hacer que al clickear un objeto de una lista vaya a al objeto origen

 
Vista:
sin imagen de perfil

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por Facundo (20 intervenciones) el 11/07/2016 17:46:34
Buenas,

Yo tengo un cuadro de lista que tiene como origen un campo de otro formulario. Este cuadro de lista va cambiando su contenido, cada vez que agrego un registro en el otro formulario se agrega en el cuadro de lista.

El objetivo que tengo con este cuadro de lista es que al hacer click sobre algún objeto (nose si está bien llamado objeto, pero me refiero a una fila dentro del cuadro de lista) me lleve al formulario de origen y al registro correspondiente segun a qué objeto le hice click.

Por ejemplo:

Yo en el formulario origen tengo el campo Nombre con varios registros (Carlos, Juan, Arturo).
Y en otro formulario tengo un cuadro de lista con esos nombres.
Lo que busco es que al hacer click en Carlos me lleve al formulario origen y al registro donde se encuentra Carlos, y lo mismo con Juan y Arturo.

Espero que se entienda.

Saludos y Gracias!
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
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por Jesús Manuel (375 intervenciones) el 12/07/2016 08:54:59
Tu formOrigen seguramente tiene como origen de datos un tabla, tblOrigen. En esta tabla seguramente tienes un campo ID

En cuanto a la lista de datos, listaNombres, en el origen de fila (Propiedades/Datos/Origen de la fila) tendrías que tener los dos campos, ID y Nombres.

Tendrías un elemento lista con 2 columnas y para no ver la columna ID le pondrías tamaño 0 (Propiedades/Formato/Ancho de columnas)

Ahora, en el evento doble click (puedes elegir otro evento) de listaNombres, tendrías que poner:

1
2
3
If Not IsNull(Me.listaNombres) Then
DoCmd.OpenForm "formOrigen", , , "[ID]=" & Me.listaNombres
End If


Tienes que adaptar los nombres de los campos, tablas y formularios a tu caso.




Si no tienes un campo ID o no quieres usarlo, tendrías que cambiar la línea de código para abrir el formulario:

1
DoCmd.OpenForm "formOrigen", , , "[NombreCampoNombresEnFormOrigen]= '" & Me.listaNombres & "'"


En el primer caso el campo ID es tipo numérico y en el segundo el campo Nombres es tipo texto.


En el segundo caso corres es riesgo de tener algún nombre repetido y que no se abra el registro deseado.
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
sin imagen de perfil

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por Facundo (20 intervenciones) el 12/07/2016 19:20:58
Gracias Jesús!!

Usé el "primer caso" con el campo ID y funcionó perfecto!!

Ahora necesitaría lo mismo pero, en vez de un cuadro de lista ahora es un subformulario (osea al hacer click en una de las filas me lleve al formulario origen y al registro correpondiente).
Tengo que usar el mismo proceso?

1
2
3
If Not IsNull(Me.listaNombres) Then
DoCmd.OpenForm "formOrigen", , , "[ID]=" & Me.listaNombres
End If

O hay otra forma?

Gracias por la ayuda!!

Saludos, Facundo.
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
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por Jesús Manuel (375 intervenciones) el 13/07/2016 09:04:47
Puedes usar la misma función DoCmd.OpenForm, asegúrate de tener el campo id en el subformulario. Tendrías que cambiar Me.listaNombres por el nombre del campo ID en el subformulario.


No sé si tiene mucho sentido en el evento al hacer clic, porque si luego tienes que modificar algún dato desde el subformulario, siempre estarías abriendo el formOrigen.


Puedes utilizar el evento doble clic en el subformulario, tendrías que hacer el doble clic en la "casilla" que hay a la izquierda del registro, en el selector de registros, o tu mismo, vete haciendo pruebas.
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
sin imagen de perfil

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por nekem (11 intervenciones) el 30/03/2023 18:13:08
Gracias, me ha funcionado, te pongo en antecedentes, tengo un formulario de clientes (nombre, direccion,...), en este formulario tengo un cuadro de lista que me busca por coincidencia el cliente, ya sea por nombre, apellidos, la busqueda la realiza bien, me abre el formulario con los datos correctos, pero una vez dentro del formulario no puedo usar los botones de anterior y siguiente registro, porque puede ser? muchas gracias
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

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por Anonimo (3316 intervenciones) el 30/03/2023 22:09:29
Al abrir el formulario filtrado, solo tiene el registro (o registros) que el filtro permita.

Si el filtro se aplica sobre el ID (dato que por definición no es repetible) solo tendrá un único registro..

Se tendrá que aplicar otro método, en lugar de aplicar un filtro: desplazarse al registro que cumpla las condiciones.
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
sin imagen de perfil

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por nekem (11 intervenciones) el 31/03/2023 11:44:04
Gracias por la respuesta, pero estoy un poco pez en esto, podrias decirme como hacerlo??? muchas gracias
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

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por Anonimo (3316 intervenciones) el 31/03/2023 18:36:07
No conozco lo que has creado, pero asumo que el formulario destino se conoce y que la condición (normalmente una igualdad) también existe y se conoce.

En el ejemplo se abre un formulario imponiéndole una condición, en este se abre el mismo formulario, se localiza el registro y de encontrarlo se le presenta.

Se utiliza para ello la copia oculta del formulario (su RecordsetClone) para localizarlo y si lo encuentra se sincronizan ambos (el visible y su copia oculta).

En el evento del formulario ([Formulario1]) que se este utilizando actualmente y tras la selección del dato ( "Clave =" & Me.texto_0 )

1
2
3
4
5
6
.....
With Forms.Formulario1
.RecordsetClone.FindFirst "Clave =" & Me.texto_0
If Not .RecordsetClone.NoMatch Then .Bookmark = .RecordsetClone.Bookmark
End With
.....


Si deseamos que se posicione en un campo del registro seleccionado, hay que modificar una línea:

1
2
3
4
5
'Antes:
If Not .RecordsetClone.NoMatch Then .Bookmark = .RecordsetClone.Bookmark
 
'Después:
If Not .RecordsetClone.NoMatch Then .Bookmark = .RecordsetClone.Bookmark: .[campo xx].SetFocus
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
sin imagen de perfil

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por nekem (11 intervenciones) el 04/04/2023 11:09:15
Buenos dias, te explico y espero no ser pesado, tengo un formulario para una base de datos de clientes, con registros como nombre, codigo, direccion, etc., en ese formulario tengo un boton de busqueda que me abre un subformulario donde esta el cuadro de lista de busqueda donde busco un cliente(por nobre, apellidos)la busqueda me la hace bien en el cuadro de lista, y en el formulario principal me muestra los datos dwel cliente buscado en el cuadro de lista, pero una vez dentro del formulario principal y ya con los datos del cliente mostrado, no puedo ejecutar los botones de siguiente, anterior registro, es como si quedase fijado, para hacerlo tengo que entran otra vez en la lista y buscar otro cliente. Perona el toston y muchas gracias por la ayuda!!!!
te pongo el codigo del cuadro de lista

Option Compare Database
Private Sub btnBuscar_Click()
End Sub

Private Sub lstPersonas_Click()
If Not IsNull(Me.lstPersonas) Then
DoCmd.OpenForm "socios", , , "[codigo]=" & Me.lstPersonas
End If
End Sub

Private Sub txtBusqueda_Change()
Call BUSCAR(txtBusqueda, lstPersonas, "socios", "APELLIDOS", "NOMBRE", "DIRECCION")
End Sub

Private Sub btnLimpiar_Click()
Me.lstPersonas.RowSource = "SELECT CODIGO, Nombre, APELLIDOS, DIRECCION, DNI FROM socios"
End Sub
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

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por Anonimo (3316 intervenciones) el 05/04/2023 23:22:09
Hay detalles que no me quedan claros.

No e puede abrir un subformulario, solo se pueden abrir los formularios (sin formulario [el padre] no puede existir un subformulario [el hijo]).

Pero eso no es el problema, tienes (en donde quiera que este) un cuadro de lista que permite seleccionar un elemento determinado (me sirve).

Con ese dato se abre un formulario (Socios) con todos sus datos pero .... solo ese registro (NOTA: Se abre filtrado por ese dato)

Se desea que se pueda cambiar de registro (y para cambiar de registro han de existir mas registros lo que NO se puede hacer con ese método).

Se propone que en lugar de abrir el formulario FILTRANDOLO se abra sin filtro, estarán todos (o parte de los registros) y para que se muestre el que fue seleccionado antes en el cuadro de lista ... nos desplacemos a él, esto es:
Se abre el formulario SIN CONDICIONES (sin filtrar) y se presenta el que nos interese y cuando se desee: se cambia al anterior, siguiente, primero, ultimo ..... (están todos, desplázate al que te guste).

Lo que has publicado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Compare Database
Private Sub btnBuscar_Click()
End Sub
 
Private Sub lstPersonas_Click()
If Not IsNull(Me.lstPersonas) Then
DoCmd.OpenForm "socios", , , "[codigo]=" & Me.lstPersonas
End If
End Sub
 
Private Sub txtBusqueda_Change()
Call BUSCAR(txtBusqueda, lstPersonas, "socios", "APELLIDOS", "NOMBRE", "DIRECCION")
End Sub
 
Private Sub btnLimpiar_Click()
Me.lstPersonas.RowSource = "SELECT CODIGO, Nombre, APELLIDOS, DIRECCION, DNI FROM socios"
End Sub

Las lineas 1 y dos pueden borrarse (no hacen nada), solo declaran un evento que no tiene código (nada = nada)

Las líneas cinco a nueve tendrían que ser así (cambian los números pero es normal: las numera el foro):

1
2
3
4
5
6
7
8
9
10
11
Private Sub lstPersonas_Click()
If Not IsNull(Me.lstPersonas) Then
DoCmd.OpenForm "socios"
 
With Forms.Socios
.RecordsetClone.FindFirst "[codigo]=" & Me.lstPersonas
If Not .RecordsetClone.NoMatch Then .Bookmark = .RecordsetClone.Bookmark
End With
 
End If
End Sub

Nada que decir de las dos subrutinas que se utilizan para generar el contenido del cuadro de lista (y queda sin comentarios la función 'BUSCAR' que por algún sitio andará).
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
sin imagen de perfil

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por ALBERTO (11 intervenciones) el 18/04/2023 12:30:05
MUCHISIMAS GRACIAS!!!!!! Me ha funcionado perfecto, grandiosa ayuda
Perdona la tardanza pero hemos estado de males
PD: si necesitara mas ayuda te la podria pedir?
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

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por Anonimo (3316 intervenciones) el 18/04/2023 17:13:48
Puedes publicar tus dudas con entera libertad.

Que sea yo el que las aclare no tiene garantía de futuro pero seguro que cualquier otro que tenga una solución la publicara (en un futuro mas o menos próximo es probable que también tú puedas resolver alguna).
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
sin imagen de perfil

Hacer que al clickear un objeto de una lista vaya a al objeto origen

Publicado por ALBERTO (11 intervenciones) el 25/05/2023 11:18:08
Buenos dias, expongo un problema que me ha surgido.
tengo un formulario (socios) en el cual tengo una tabla (familiares). En el formulario tengo campos para introducir los datos de los socios, y en la tabla sus correspondientes familiares. El caso es que tengo un boton imprimir carnet (macro) para que imprima los datos del socio junto a los familiares, y lo hace bien, PERO si el socio no tiene familar no recoge ningun dato, es decir no imprime los datos del socio, lo deja en blanco. Expongo los datos de los objetos:
Tabla Familiares:
Datos: Vincular campo principal y secundario: Codigo

Relación (socios-familiares): de codigo a codigo
Boton Imprimir (macro)
Condición Where: [CODIGO]=[Formularios]![socios]![CODIGO]

Adjunto fotos del formulario y del carnet con datos

Si veis el archivo, refleja los datos bien porque tiene familar, pero en el carnet lo deja vacio si no tiene

No se si me he expesado bien , espero ayuda gracias
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