** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Resta de campos entre formulario y subformulario
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Resta de campos entre formulario y subformulario

 Responder Responder
Autor
Mensaje
Yavuka Ver desplegable
Nuevo
Nuevo


Unido: 17/Octubre/2019
Localización: España
Estado: Sin conexión
Puntos: 13
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Yavuka Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Resta de campos entre formulario y subformulario
    Enviado: 16/Abril/2020 a las 22:47

Buenos días a todos,

 

Tengo un formulario, con un subformulario y subsubformulario asociados.

 

  1. La primera tabla asociada al formulario se llama PEDIDOS (formulario homónimo) que contiene información sobre el número de pedido y el cliente. Esta tabla tiene un campo clave que se llama IDpedidos.
  2. Existe una segunda tabla PEDIDOSPRODUCTOS relacionada con un campo (PEDIDO) al campo clave de la tabla PEDIDOS (IDpedidos)a través de un campo uno a varios. En esta tabla se incluyen una serie de productos (que saco de una tabla denominada PRODUCTOS) con cantidades (campo PALETS) con un campo clave que se llama idPEDIDOSPRODUCTOS. De esta tabla hago otro formulario homónimo (subformulario).
  3. Por último, esta tabla la relaciono con otra tabla LOTES con una relación uno a varios al campo PRODUCTOPEDIDO de esta última tabla. (IDPEDIDOSPRODUCTOS = PRODUCTOPEDIDO). Creo otro formulario con el mismo nombre (subsubformulario).

En el formulario PEDIDOSPRODUCTOS registro productos y cantidades que hay que poner en el pedido, y en el subformulario LOTES voy añadiendo palets de cada producto con un lote y hora asociados.

 

OBJETIVO:

Como cada registro de la tabla lotes representa un palet de un producto para un pedido concreto (cada registro tiene un identificador único que viene dado por valor del campo idPEDIDOSPRODUCTOS), lo que intento es, a medida que añado registros al formulario LOTES tendría que sumar los palets por cada referencia para un pedido concreto y restarlo del campo PALETS del formulario PEDIDOSPRODUCTOS a medida que añado registros en el formulario LOTES.

 

Para ello, lo que he probado hasta ahora ha sido hacer 2 consultas:

 

Una primera en la que genero una cuenta del campo idPEDIDOSPRODUCTOS de la tabla LOTE para que me dé el total de registros para ese valor del campo que me daría los palets empaquetados de un producto para un pedido concreto y que es como sigue:

 

SELECT Count([PEDIDOS PRODUCTOS].IdPEDIDOSPRODUCTOS) AS CountOfIdPEDIDOSPRODUCTOS, [PEDIDOS PRODUCTOS].PRODUCTOS, PEDIDOS.IdPedidos, PEDIDOS.CLIENTE
FROM PEDIDOS INNER JOIN ([PEDIDOS PRODUCTOS] INNER JOIN [LOTES PRODUCTOS] ON [PEDIDOS PRODUCTOS].IdPEDIDOSPRODUCTOS = [LOTES PRODUCTOS].PRODUCTOPEDIDO) ON PEDIDOS.IdPedidos = [PEDIDOS PRODUCTOS].PEDIDOS
GROUP BY [PEDIDOS PRODUCTOS].PRODUCTOS, PEDIDOS.IdPedidos, PEDIDOS.CLIENTE;

 

Esta consulta me crea una tabla.

 

Después, una segunda consulta en la que genero el campo QUEDAN que sería una resta entre el campo countidPEDIDOSPRODUCTOS resultado de la tabla creada a través de la consulta anterior y el campo Nº PALETS de la tabla PRODUCTOSPEDIDOS, como lo hago por el campo común entre ambas tablas que señalaba arriba (IdPEDIDOSPRODUCTOS), me lo hace correctamente.

 

SELECT [PEDIDOS PRODUCTOS].IdPEDIDOSPRODUCTOS, [PEDIDOS PRODUCTOS].[Nº PALETS], [SUMA PALETS].CountOfIdPEDIDOSPRODUCTOS, [PEDIDOS PRODUCTOS].PRODUCTOS, [PEDIDOS PRODUCTOS]![Nº PALETS]-[SUMA PALETS]![CountOfIdPEDIDOSPRODUCTOS] AS QUEDAN
FROM [PEDIDOS PRODUCTOS] INNER JOIN [SUMA PALETS] ON [PEDIDOS PRODUCTOS].IdPEDIDOSPRODUCTOS = [SUMA PALETS].PRODUCTOPEDIDO;

 

El tercer paso y que no consigo hacer sería trasladar esta información a un campo (denominado QUEDAN) de la tabla PRODUCTOSPEDIDOS a través de un campo que se incluya también en el formulario homónimo con la intención de que a medida que voy añadiendo palets en formulario LOTE, me los vaya restando del campo Nº PALETS para cada producto del pedido (actualizando campos a medida que añado palets).

 

Por otra parte, como son 3 pasos (1ª y 2ª consulta + el traslado de datos al formulario), no sé si es demasiado farragoso y se actualizará la información al instante a medida que añado registros (=palets) al subsubformulario LOTES que es mi objetivo, intuyo que no.

 

Disculpad por el tocho.

 

Gracias de antemano


EDITO: como solución provisional alternativa, estoy intentando aplicar esta fórmula para traer el valor de un formulario a otro:

=DLookup("[CountofIdPEDIDOSPRODUCTOS]"; "[SUMA PALETS]"; "[PRODUCTOPEDIDO] = " & Forms![PEDIDOS PRODUCTOS]!IDPEDIDOSPRODUCTOS)

También podría servir si me saliera, aunque preferiría hacer una sola consulta, pero me devuelve error "#Name?"

Arriba
hipromark Ver desplegable
Habitual
Habitual
Avatar

Unido: 18/Julio/2016
Localización: Caracas
Estado: Sin conexión
Puntos: 71
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita hipromark Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 27/Diciembre/2020 a las 07:39
Hola, no sé si ya resolviste, pero pienso que tal vez sea una mejor opción sumar los campos en el formulario en lugar de tratar de hacer todo en las consultas, creo que se puede hacer de un manera mucho más sencilla
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable