** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Abrir formulario filtrado en un cuadro de lista
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Abrir formulario filtrado en un cuadro de lista

 Responder Responder
Autor
Mensaje
José Luis Kara Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 09/Junio/2025
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita José Luis Kara Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Abrir formulario filtrado en un cuadro de lista
    Enviado: 09/Junio/2025 a las 12:10
Buenas tardes. Tengo un cuadro de lista en un formulario con unos datos, y quisiera que al hacer doble clic sobre uno de los registros del cuadro de lista se abra otro formulario filtrado por ese registro. Lo he intentado de varias maneras pero no lo consigo. ¿Podríais ayudarme? Muchas gracias.
Kara
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Junio/2025 a las 12:14
Hola bienvenido,

¿qué tal vas de VBA?
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
José Luis Kara Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 09/Junio/2025
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita José Luis Kara Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Junio/2025 a las 18:34
Pues lo tengo bastante oxidado. He estado mirando ejemplos de módulos pero no encuentro nada que se adapte a mí...
Kara
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Junio/2025 a las 19:33
Pues vamos a ver lo oxidado que lo tienes LOL:
- en el evento doble clic del cuadro de lista
- abres el formulario pasándole en el parámetro WhereCondition el valor que quieras (y el código por dónde vas a filtrar)


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
José Luis Kara Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 09/Junio/2025
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita José Luis Kara Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Junio/2025 a las 20:20
Sí, eso ya lo tengo. En el cuadro de lista tengo el siguiente evento:

 El problema es que ahora no sé cómo decirle que me abra el nuevo formulario cogiendo el valor que he seleccionado en el cuadro de lista. Esa es la parte que no consigo...
Kara
Arriba
José Luis Kara Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 09/Junio/2025
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita José Luis Kara Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Junio/2025 a las 20:21
Perdona que no sé si se ve la imagen. Es esto:

Private Sub ListaIncidencias_DblClick(Cancel As Integer)


    DoCmd.OpenForm "F_EDICION", , , , , , Me.ListaIncidencias
    
    
End Sub

Kara
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Junio/2025 a las 22:54
Hola,

Parece que estás utilizando el argumento OpenArgs para pasar el valor de un control llamado ListaIncidencias.

Se asume que:
- el formulario F_EDICION tiene origen del registro la tabla o una SQL sobre la tabla
- el formulario F_EDICION se abre mostrando registros (no es DataEntry)
- El campo identificador del registro es IdIncidencias 
- El campo IdIncidencias es un numérico

Opción 1. El WhereCondition (lo que dice Jesús)
Es el cuarto argumento del OpenForm y lo debes pasar mas o menos así:

DoCmd.OpenForm "F_EDICION",,,"IdIncidencias = " & Me!ListaIncidencias

Opción 2. Utilizando el OpenArgs (lo que tienes tú)
En el Load del F_EDICION deberás evaluar que estás recibiendo un valor y posicionarte en el registro adecuado. Yo tiraría de RecordsetClone y Bookmark

Dim rst As DAO.Recordset
If Nz(Me.OpenArgs, "") <> "" Then
  Set rst = Me.RecordsetClone
  rst.FindFirst "IdIncidencias = " & CLng(Me.OpenArgs)
  If rst.NoMatch Then
    MsgBox "No se encuentra el registro", vbExclamation
  Else
    Me.Bookmark = rst.BookMark
  End If
  rst.Close
  Set rst = Nothing
End If

(todo el código escrito al vuelo)

Como podrás observar la Opción 1 es bastante más sencilla.

Un saludo


Editado por xavi - 09/Junio/2025 a las 22:55
Xavi, un minyó de Terrassa

Mi web
Arriba
José Luis Kara Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 09/Junio/2025
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita José Luis Kara Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 10/Junio/2025 a las 10:43
Muchas gracias por la respuesta. He probado ambas opciones y no me funciona. Seguiré probando a ver, pero muchas gracias de todas formas...
Kara
Arriba
José Luis Kara Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 09/Junio/2025
Localización: Madrid
Estado: Sin conexión
Puntos: 11
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita José Luis Kara Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 10/Junio/2025 a las 11:19
Hola de nuevo. Finalmente he hecho un poco de mezcla de las 2 opciones y me ha funcionado. Muchísimas gracias por los consejos.
Un saludo,
Kara
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 10/Junio/2025 a las 15:14
Es una buena costumbre (aunque cueste teclear más) el llamar a los argumentos por nombre, evitan errores y ayudan mucho en el seguimiento y la depuración de procesos.

DoCmd.OpenForm "MiForm", OpenArgs:=Me.Lista

DoCmd.OpenForm "MiForm", WhereCondition:="CampoCodigo = " & Me.Lista





Editado por Mihura - 10/Junio/2025 a las 15:16
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable