Abrir formulario al hacer doble clic

Quisiera realizarte una nueva consulta para mejorar mi base de datos...

Tengo un formulario llamado Detalles de salidas que tiene 2 páginas: En la 2ª página hay un subformulario llamado Subformulario Montañas coronadas. El campo Nombre de este subformulario es un cuadro de lista en el cual puedo escoger el nombre de una montaña de la tabla Montañas o editarlo abriendo su formulario correspondiente...

Bien; yo quiero que al hacer dobleclic en ese campo Nombre, me abra el formulario Detalles de montañas ya filtrado con ese mismo nombre.

(En la BD tengo las tablas Salidas y Montañas coronadas (Relación uno a varios) y Montañas (Sola, sin ninguna relación)).

1 respuesta

Respuesta
1

En el evento al hacer doble click de tu cuadro de lista, le escribes este código:

Private Sub Nombre_DblClick(Cancel As Integer)

Dim miMontaña as string

miMontaña=Me.Nombre.Value

'Si quieres que se te cierre el formulario actual, pones esta linea:

DoCmd.Close acForm, Me.Name

DoCmd.OpenForm "Detalles de montañas", , , , , , miMontaña
End Sub

Y en el Evento Al Abrir de tu formulario Detalles de montañas, le pones este otro:

Private Sub Form_Open(Cancel As Integer)
Dim busqMontaña As String
busqMontaña = Nz(Me.OpenArgs, "")
If busqMontaña <>"" Then
DoCmd.GoToControl "NombreCampoMontaña"
DoCmd.FindRecord busqMontaña acEntire, , acSearchAll, , acCurrent
End If
End Sub

Consideraciones a tener en cuenta:

He supuesto que el cuadro de lista almacena un valor de texto (el nombre de la montaña). Si en tu caso almacena un número, que actúa como identificador único de la montaña, tendrías que cambiar un par de lineas en el código, te pongo aquí las nuevas:

Dim miMontaña as integer , en el primero, y

busqMontaña = Nz(Me.OpenArgs, 0)
If busqMontaña <>0 Then, en el segundo.

Donde pongo "NombreCampoMontaña", se refiere al campo en el que vas hacer la búsqueda, bien sea el nombre de la montaña, o el identificador único que uses.

Hola.

Me pone Error de compilación y Error de sintaxis...

Me abre el editor de código y resalta en azul:

DoCmd.FindRecord busqMontaña acEntire, , acSearchAll, , acCurrent


Un saludo

Te falta una come en esa linea, después de busqMontaña:

DoCmd. FindRecord busqMontaña, acEntire,, acSearchAll,, acCurrent

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas