Abrir formulario de consulta al hacer doble clic en un registro

Me estoy iniciando en el mundo de Access y para ello me he propuesto desarrollar una base de datos para hacerme más llevadero el trabajo.
El caso es que la aplicación que he diseñado funciona perfectamente, al menos responde al objetivo para la que la diseñé. Seguramente con un planteamiento inicial equivocado dado que empecé la base de datos de cabeza y poco a poco he ido añadiendo cosas sin seguir un guion previamente planificado. Si la tuviera que empezar ahora, el planteamiento sería diferente aunque con el mismo objetivo y muy probablemente ocuparía bastante menos espacio en mi disco.
Todo y así quiero acabarla, son demasiadas horas para abandonarla. Y una vez hecho inicial el mismo proyecto pero esta vez con un planteamiento diferente, aunque la consulta que os haré a continuación también me servirá.
A medida que he ido leyendo cosas y experimentando he ido aprendiendo pero aun soy un completo novato en código Vba, que creo es lo que necesito para resolver el problema que os planteo.
Como he comentado tengo una base de datos cuyo nombre es Accidentes, compuesta por varias tablas relacionadas uno a uno entre sí por un campo llamado Expediente que es el Id común en todas las tablas, consultas, formularios, informes, etc.
Tengo un formulario llamado frmConsultaporFechas cuyo origen de datos es una consulta que devuelve 5 registros . Uno de ellos es el campo Expediente y es un dato de texto con la máscara P-000/00.
Quisiera clicar dos veces en ese registro Expediente y que se abriera otro formulario diferente donde ver la misma información pero extendida ( depende de otra consulta CnsTotalExp ) y que esta pueda ser editada.
Para ello creo dos eventos, uno “al hacer doble clic” en el campo del registro Expediente del formulario y otro “al abrir” el formulario frmConExpAB que es donde quiero editar el resto de datos.
El formulario frmConExpAB tiene como origen la consulta “CnsTotalEXp” filtrado por el registro Expediente.
Quisiera también, que una vez hecho el “doble clic” se cierre el formulario frmConsultaporFechas.

He adaptado un código que he encontrado, pero algo hago mal porque no funciona. Es el siguiente:

Evento doble clic en from frmConsultaporFechas

Private Sub Expedient_DblClick(Cancel As Integer)
Dim miExpedient As String
miExpedient = Me.Expedient.Value
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "frmExpConAB", , , , , , miExpedient
End Sub

Evento “al abrir” en form frmConExpAB

Private Sub Form_Open(Cancel As Integer)
Dim busqExpedient As String
busqExpedient = Nz(Me.OpenArgs, "")
If busqExpedient <> "" Then
DoCmd.GoToControl "Expedient"
DoCmd.FindRecord busqExpedient, , acSearchAll, , acCurrent
End If
End Sub

No me abre el Form frmConExpAB directamente sin preguntarme que expediente abre sino que sale el mensaje de introducir un valor.

No se si me he explicado bien.
Evidentemente algo hago mal, pero no se que puede ser, como he dicho soy novato en esto.
¿Alguien puede ayudarme?

Respuesta
1

El código para abrir el formulario con el doble click podría ser este:

Private Sub Expedient_DblClick(Cancel As Integer)
Dim miExpedient As String

Dim miFiltro as String
miExpedient = Me.Expedient.Value

miFiltro="[Expedient]='" & miExpedient & "'"
DoCmd. OpenForm "frmExpConAB",,, miFiltro

DoCmd. Close acForm, Me. Name
End Sub

Con esto, ya se te abrirá filtrado el segundo formulario y se cerrará el primero.

Lo que comentas de que no se te abre filtrado y te sale el mensaje de introducir valor, puede deberse a esto: tu consulta "CnsTotalExp" está diseñada para que pida un parámetro (en este caso el expedient) cada vez que se ejecuta. Si se lo quitas, ya te debería funcionar perfectamente.

Saludos

Muchas gracias por la rápida respuesta....efectivamente era eso, solo he modificado la consulta para que no me pida datos y ha funcionado.

Muchas gracias y un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas