Subformulario y evento click en access

Mi duda es respecto a cómo poder capturar el evento click dentro de un subformulario que se muestra como grilla.

En la imagen se ve que tengo de combos arribas con los cuales filtro los subformularios de abajo.

La relación entre las tablas es la siguiente. Una Gerencia = Muchas subgerencias= Muchas metas= muchos Hitos

Ahora, los subformularios son dos consultas incrustadas en el formulario padre. Son consultas independientes que se actualizan mediante sus .RecordSource. No quiero crear dependencias en los subform porque me complican las consultas.

La idea que tengo en mentes es que cuando pinche en el form de las metas, se filtren los hitos de esa meta en el form de abajo. Para ello, he logrado que se filtren los hitos para la primera vez que pincho el subformulario de las metas mediante el evento Enter, pero si pincho en otro registro del subformulario ya no logro filtrarlo.

¿Es posible detectar el cambio del registro seleccionado en el formulario de metas? ¿Cómo se podría realizar?

Llevo mucho buscando la forma pero no encuentro una solución.

1 respuesta

Respuesta

Rodrigo: Si en Formulario(SubFormulario), Metas no tienes un Identificador "único", que se corresponda con el otro Objeto no lo tienes bien por no decir lo tienes mal.

Si es que lo tienes, en el Evento Click (o Doble Click), capturas el Id de Metas y por él filtras Hitos.

Co mo tu conoces los Nombres de Controles y Campos.

Gracias Jacinto....

Cada tabla tiene su identificador único y están creadas sus dependencias. El problema es que el subformulario no tiene un evento click, por lo que no puedo capturar el evento.

Rodrigo: No es en el evento del Formulario. Es en el Evento de uno de los Controles del mismo.

Ponlo en la vista de diseño y en el Control que tu creas pones el código.

En ésta imagen ves que sale IdCliente.

Mis Saludos >> Jacinto

Cómo?? no entiendo... sorry Jacinto...

Por qué sería en otro control si el llamado se hace desde el subformulario?? se supone que cuando pincho en un registro se reacomoda el subformulario de hitos, y si pincho en otro registro se vuelven a modificar los hitos... Cómo se activaría si lo hago en otro control??

Rodrigo: Te redactaré unas líneas de código, pero por favor excusame hasta mañana, porque ando un poco liado. Mis saludos >> Jacinto

Muchísimas gracias... no tenías que molestarte... esperaré

Rodrigo

Rodrigo: Voy a suponer para el Código que el Formulario Principal, se llama FrmSeguimiento, el Primer SubFormulario FrmMetasSubForm y el de Hitos FrmHitosSubForm

Sigo suponiendo que hay un Control que se llama “Meta” y que tanto en ese SubFormulario como en el FrmHitosSubForm tienes un Identificador que se llame por ejemplo IdMeta y que es Númerico.

Todo esto para que tú puedas buscar las equivalencias en los Nombres de Tu Base de Datos.

Además por lo que veo los dos SubFormularios están dentro del Principal

Entonces: Con el SubFormulario de Metas en vista de diseño.

Señalas el Control que hemos llamado Meta >> Propiedades >> Evento >> Al hacer Click

Te saldrán tres Opciones >> Eliges Generador Código que es la última >> Te llevará al editor de VBA y Te habrá escrito algo así.

Private Sub Meta_Click()

End Sub

‘Entre esas dos líneas escribes
Dim Frm As Form
Dim ElFiltro As String
Set Frm = Forms!FrmSeguimiento!FrmHitosSubForm.Form
ElFiltro = “IdMeta = “ & IdMeta
Frm.Filter = ElFiltro
Frm.FilterOn = True
‘Si el IdMeta fuera tipo Texto debes sustituir la línea de arriba >> ElFiltro, por
ElFiltro = “IdMeta = ‘” & IdMeta & “’”

Espero haberte ayudado. Mis saludos >> Jacinto

De verdad lo siento Jacinto pero sido sin dar pie con bola... definitivamente no entiendo.

He realizado lo que me comentaste. Lo hice en otro formulario que me pareció más fácil porque tiene un solo combo de filtrado (el anterior tenía 2) y el código que me enviaste lo coloqué en el evento click de ese combo.

El tema es que en tiempo de ejecución, el idMeta no tiene nada en ese momento. Por eso yo decía que ese código debiese ir en el evento click del subformulario que tiene las metas que se llama ConsultaCumplimiento.

Así me quedó el código. En la foto aparece detenido en tiempo de ejecución para mostrar el dato en ese momento.

No sé cómo hacerlo :(

Rodrigo: Según observo lo que tienes señalado es el "Contenedor" del SubFormulario.

Es lógico que solo te permita solo esos dos Eventos.

En definitiva, creo que lo que buscas es un "Filtro Acumulado" y de código no es complejo.

Lo que si es dificil es acertar en la solución dependiendo de la estructura que tu tengas, aun viendo las imágenes no acabo de entenderla.

A mi modo de ver, el lugar en el que has puesto el Fitro no es adecuado. Insisto en que su sitio sería en el Evento Click de un Control del Subformulario Metas, pero puedo estar errado.

Si es que quieres poner tu BD aquí (con datos inventados), con un enlace o como alternativa me la quieres enviar a [email protected] será la manera de adelantar, porque iríamos apuntando soluciones con mucho riesgo de que no sean válidas. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas