Hacer un formulario con datos de tres tablas

Tengo una tabla de productos con una llave única que es el código del producto, tengo una tabla de cabecera de compras y el detalle de compras, y tengo la cabecera de ventas y el detalle de ventas. Necesito hacer un programa que me permita agrupar en un un solo sitio por cada producto, el detalle de las compras, el detalle de las ventas y el saldo, y si se puede desde un formulario pedir los datos de un determinado producto, y un rango de fecha del ingreso, gracias por su colaboración, con vb o macros, da igual

2 respuestas

Respuesta
1

Para hacer esto en VB o macros, necesitarás usar SQL y combinar datos de las tres tablas. Aquí hay un ejemplo de cómo podrías hacerlo:

  1. Crea un formulario en el que el usuario pueda ingresar el código del producto y el rango de fechas que desea ver.
  2. Cuando el usuario hace clic en "Buscar", recupera los datos de las compras, ventas y saldos utilizando una consulta SQL que combina los datos de las tres tablas.
  3. La consulta SQL puede ser algo así: SELECT productos. Codigo,
    Sum(compras. Cantidad) AS TotalCompras,
    Sum(ventas. Cantidad) AS TotalVentas,
    Sum(ventas.cantidad) - Sum(compras.cantidad) AS Saldo
    FROM productos
    LEFT JOIN compras
    ON productos.codigo = compras.codigo_producto
    AND compras.fecha >= #FechaInicio#
    AND compras.fecha <= #FechaFin#
    LEFT JOIN ventas
    ON productos.codigo = ventas.codigo_producto
    AND ventas.fecha >= #FechaInicio#
    AND ventas.fecha <= #FechaFin#
    WHERE productos.codigo = #CodigoProducto#
    GROUP BY productos.codigo;
    1. En esta consulta, se unen las tres tablas (productos, compras y ventas) utilizando el código del producto como clave. Luego, se suman las cantidades de compras y ventas en el rango de fechas especificado y se calcula el saldo restando las compras de las ventas.
    2. Una vez que se ejecuta la consulta, puedes mostrar los resultados en el formulario para que el usuario los vea.

    Es importante tener en cuenta que necesitarás modificar esta consulta para que se ajuste a la estructura de tus tablas y campos. Además, si no tienes experiencia en SQL o programación, puede ser útil buscar tutoriales o recursos en línea para ayudarte a aprender los conceptos básicos.

Respuesta
1

Una alternativa que partirá de un supuesto:

A.- La tabla [productos] esta relacionada con las tablas [detalle de ventas] y [detalle de compras] por el código de producto.

B.- La tabla [productos] contiene todos los códigos de todas las compras y ventas:
.. No existe un producto que no provenga de una compra sea directamente o indirectamente
.. No existe una venta que no este relacionada con alguna compra.

Creamos un formulario basado en la tabla productos (el principal)
Añadimos dos subformularios, uno basado en la tabla compras, otro en la tabla ventas y a ambos se les supone relacionados por el código de producto con la tabla [productos].

Seleccionado un producto en el formulario (el principal), en los subformularios subordinadas aparecerán las compras y ventas del producto.
Es posible que si no hubo ventas de un producto, el formulario asociado aparezca en blanco (refleja esa realidad), pero el de compras en una gestión fiel, nunca debería estar vacío.

Si se necesitan datos que no están presentes en los detalles de [compras] o [ventas] (por ejemplo la fecha de esa operación), en lugar de las tabla de detalles:

Una consulta que utilizara la tabla detalles + la de [ventas]/[compras] asociada y de la que se tomaran los datos que nos falten (sea fecha, cliente, o ..). 

Para cualquier calculo a efectuar sobre los movimientos de los productos, utilizar los datos de los subformularios (sea el RecordsetClone o las consultas/SQLs que dan lugar a su origen de datos) tendrá la ventaja de que ya están filtrados (y se les puede aplicar mas filtros genéricos)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas