|
Soy a suponer que, ademas de ser en cualquiera de los registros, es en cualquiera de los controles que muestran los campos de ese registro. Obviemente eso solo se puede realizar en controles que admitan el doble-clic (TextBox o ComboBox) ya que , por ejemplo los CheckBox no lo admiten.
Lo que yo hago habitualmente es, cuando un código se va a utilizar en multiples eventos (en tu caso tantos eventos doble-clic como controles lo admitan), crear una función en el propio módulo del formulario. Esa función, en tu caso, debe disparar la apertura de un formulario filtrado al registro en cuestion.
Vamos por la función.
Private Function AbrirFormularioFiltrado()
DoCmd.OpenForm "Inciden", , , "[Identificador]=" & Me!controlidentificador
' se supone que el identificador es un numérico. SI no lo fuera, ponle apostrofes asi
' DoCmd.OpenForm "Inciden", , , "[Identificador]='" & Me!controlidentificador & "'"
End Function
Ahora solo debes pasar por cada uno de los controles que deban ejecutar esa función y, en la hoja de propiedades, en el evento Al hacer doble-clic, poner:
=AbrirFormularioFiltrado()
Ya que estamos, aqui va un truco para evitar hacer todo eso a mano. En el evento Open del formulario puedes asignar el evento doble-clic por código. Yo utilizo un array con todos los nombres de los controles. Lo recorro y asigno la funcion:
Dim misControles() As Variant
misControles = Array("uncontrol", "otrocontrol", "otromas")
Dim i As Integer
For i = 0 To UBound(misControles)
Me(misControles(i)).OnDblClick = "=AbrirFormularioFiltrado()"
Next
De esa forma, si mañana añades un control, solo tienes que añadirlo al Array.
Otra forma que se me ocurre, ya que trabajas con hojas de datos, es recorrer los controles de la sección detalle y hacer lo mismo:
Dim ctl As Control
For each ctl In Me.Section(acDetail).Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
ctl.OnDblClick = "=AbrirFormularioFiltrado()"
End If
Next
Todos los códigos escritos del tiron. Revisalos y adaptalos a tus nombres de controles
Xavi
|