Imprimir página | Cerrar ventana

Mover registro de Formulario desde Subformulario

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84761
Fecha de impresión: 24/Abril/2024 a las 00:00


Tema: Mover registro de Formulario desde Subformulario
Publicado por: ibcaja
Asunto: Mover registro de Formulario desde Subformulario
Fecha de publicación: 16/Octubre/2019 a las 17:45
Hola, me gustaría encontrar la mejor solución a este problema utilizando subformularios.

Tengo un Formulario principal sobre una tabla de Facturas en la que tengo entre otros campos Fecha y NumeroFactura. Un Subformulario en modo vista hoja de datos con un listado de facturas con la fecha seleccionada en el campo Fecha del formulario principal, por lo que formulario y subformulario están vinculados por el campo Fecha.
Al seleccionar en el subformulario una determinada factura pretendo que el formulario principal mueva el registro a esa determinada factura.
He pensado en utilizar el evento OnCurrent del subformulario, pero no sé si hay una alternativa mejor ya que al mover el registro principal, el subformulario vuelve al primer registro, entre otros problemas y no me acaba de convencer.

Saludos.



Respuestas:
Publicado por: VIMIPAS
Fecha de publicación: 16/Octubre/2019 a las 22:15
Hola Ibcaja.

Normalmente los "sub" están contenidos en el "Formulario" y dependen de este "Formulario", todo lo que el "Formulario haga" así será entendido por el "sub".

Si pretendes lo contrario te va a dar muchos problemas. Access está pensado para las relaciones. Las relaciones van de la Fecha del formulario, según tu dices, a la fecha del subformulario.....

Analiza esto con detenimiento:

yo creo que deberían estar relacionadas por el número de factura, que es único en toda contabilidad y no por la fecha, ya que no es única y puede haber varias fechas iguales, teniendo misma fechas varias facturas.... ¿parece un sin sentido lo que pretendes?

¿Cómo lo ves tú, ya que Access lo suele ver como te he explicado?.

Saludos.


-------------
Gracias


Publicado por: xavi
Fecha de publicación: 16/Octubre/2019 a las 22:33
Si te he entendido (y no estoy muy seguro de haberlo hecho al 100%) lo que estas haciendo con el sunformulario yo lo haria con un cuadro de lista.

En el evento Current del formulario principal crearia una SQL para obtener todos los registros de la fecha y, al hacer clic sobre un registro del cuadro de lista, posicionaria el formulario en el registro adecuado. Dado que (parece) la fecha es la misma y (tambien parece) quieres que el valor seleccionado en el cuadro de lista no se mueva, almacena previamente la posición ya que el evento Current al reposicionar el formulario recalcularia el cuadro de lista.

No se si me explicado....



-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: ibcaja
Fecha de publicación: 17/Octubre/2019 a las 17:13
Gracias por vuestra respuestas. Quizás no me expliqué del todo bien. El subformulario con todas las facturas de un dia es la parte mas importante de todo, aparecen varios campos relativos a cada una de las facturas, algunos calculados, como impuestos, y todo en modo vista hoja de calculo. Su fin no es solo el de seleccionar una determinada factura, eso es secundario.
Junto a ese formulario hay otros dos, uno con datos de totalizaciones de todas esas facturas: totales, cantidad de facturas y rango de numeración, impuestos totales.
El otro subformulario ofrece el detalle de cada una de las lineas de la factura seleccionada, y ese subformulario si está vinculado al principal mediante el número de factura. Ahí viene lo que busco, que con solo pinchar en la linea de determinada factura el formulario principal, basado en tabla cabecera de factura, cambie al registro de esa factura y arrastre al subformulario de detalle de la factura.
De esta manera, el usuario al inicio selecciona la fecha del dia que le interesa, ve las facturas de ese dia y tiene disponible un conjunto de datos tanto en conjunto como por cada una de las facturas. Si le interesa ver el detalle de alguna factura concreta, pinchando sobre la linea esa factura apareceria en el otro sub las lineas de detalle de la factura.

Ayer estuve por varias horas leyendo y experimentando con el evento OnCurrent (del subformulario) y creo que ha funcionado. La dificultad está en que no solo es ir al registro con un FindRecord. El evento Oncurrent se activa con el evento OnEnter y se desactiva con OnExit. Una vez dentro de OnCurrent primero hay que desactivar ambos eventos porque si no se volverian a ejecutar sin haber acabado el evento actual. Guardar posicion del registro de subformulario porque al volver te posiciona en el primer registro. Habilitar y enfocar el campo Numero de factura del formulario principal y hacer el FindRecord, luego hay que deshacer los pasos anteriores, volver a activar eventos, deshabilitar campo y recuperar registro de subform.

A esto le veo dos problemas menores. Uno lo que ya preguntaba ayer, no sé si hay una manera más fácil de hacer esto.
El otro es algo curioso; cuando selecciono fecha y aparecen la hoja con todas las facturas, está seleccionada la primera, incluso enfocado el Numero de factura, debido a un SetFocus; pero cuando pinchas con el raton en otra factura no ocurre nada, solo en un segundo click se selecciona, a partir de ahí si funciona cada click de manera normal. Es como si fuera necesario un primer click solo para activar el subformulario.
Esto no parece importante pero puede a inducir a errores al usuario, ya que cree estar trabajando con una determinada factura cuando en realidad está haciendolo sobre la primera.

Ha quedado un poco largo, pero espero haberme explicado.


Publicado por: prga
Fecha de publicación: 17/Octubre/2019 a las 19:47
Hola.
Una posible solución, sí he entendido bien,  pasaría por:
1º.- Crear un formulario contenedor sin origen de datos y dentro de él un cuadro combinado con las fechas que tienen factura. Sería una manera de elegir la fecha y que tenga facturas
2º.-Un subformulario con el formulario con todos los resúmenes de las facturas, evidentemente enlazados por el valor primario del cuadro combinado anterior y el campo fecha de las facturas.
3º.-Un subformulario con los resúmenes del día. También enlazado como el anterior.
4º.-Subformulario con los detalles de la factura pinchada en el punto 2º. Aquí hay que hacer:
A) Crear en el formulario contenedor (encabezado de ese formulario) un cuadro de texto cuyo origen de datos es el cuadro de texto numerofactura del subformulario del punto 3º ( lo puede hacer el asistente de expresiones)
B)Enlazar  el subformulario del punto 4º a ese cuadro de texto del punto A)

Con lo anterior se puede solucionar el problema sin código, sólo sería necesario para efectos estéticos iniciales, ya que el cuadro combinado de fechas no selecciona ningún elemento por defecto

Espero que no líe más el asunto.
Ya comentas.
Un saludo a todos


Publicado por: ibcaja
Fecha de publicación: 17/Octubre/2019 a las 20:48
Es una buena solución, te lo agradezco, pero la veo más para empezar desde cero. O, como dices, si no quieres/puedes usar código. Pero no es mi caso.
De mi manera ahorro un cuadro de texto y queda más intuitivo pinchar directamente sobre el numero de factura.

Ahora lo que ando es googleando sobre el tema del click en el subformulario y no veo nada con distinto tipo de búsquedas.

Saludos.


Publicado por: prga
Fecha de publicación: 17/Octubre/2019 a las 21:05
Es que hay que pinchar en el registro  y el cuadro de texto, para ir bien,  hay que dejarlo como visible=false



Imprimir página | Cerrar ventana