Como crear un Formulario de Consulta

Saludos.

Antecedentes:

Estoy desarrollando una aplicación de control de inventarios para una maquiladora, donde se lleva un control de entradas y salidas de insumos y productos en diversos almacenes.

Describo algunas de las Tablas de la App, sus campos y relaciones
Insumos.
[ID de Insumo], [Descripción de Insumo], [Proveedor], [Costo], …, etc)
Listado de Insumos

Productos.
[ID Productos], [Descripción de Producto], [Precio de Venta], …, etc)

Notas de Almacén
[ Folio], [Fecha], [almacen], [Tipo Movimiento] (Entrada, Salida, Consumo, Produccion, Merma), …, etc),
En esta tabla se registran los datos generales del movimiento, el folio, la fecha, el tipo de movimiento, el origen o destino de los articulos (insumos o productos), quien recibe y/o entrega los articulos, sin contemplar los articulos (insumo o producto) ni las cantidades,

Registros de Almacén
[Folio] = (ID Nota De Almacén + Consecutivo) , [ID Nota de Almacén], [Tipo Articulo] = (Insumo o Producto), [Insumo], [Producto], [Cantidad] … etc)
En esta tabla se registra los movimientos de los artículos (Entrada, Salida, Consumo, Producción, Merma) y las cantidades movidas, Se relaciona con la tabla Notas de Almacén con el Campo [Notas de Almacén]

Armado de Productos
[ID] = ([Producto] + Consecutivo), [Producto], [Insumo], [Requerido]
En esta tabla se registran los insumos que necesita un producto, ejemplo:
PRD0001-001 / PRDA001 - INSA0001 - 5
PRD0001-002 / PRDA001 - INSA0011 - 2
PRD0001-003 / PRDA001 - INSA0025 - 4

Necesidad:

Hacer un formulario de Consulta/Registro donde al escribir el [Almacén] y el [Producto], me indique los insumos relacionados a ese articulo y la cantidad necesaria (Datos registrados en “Armado de Productos”), la existencia de dicho insumo (Dato registrado en “Registros de Almacén” ) y la cantidad de productos potenciales que puedo elaborar.

Solución Planeada

1.- Crear una tabla con los siguientes campos
Columnas: [ID] = Uniqueid, [Almacen], [Producto], [Potencial]
Columnas Virtuales: [Insumo1], [Existencias1], [Requerido1], [Insumo2], [Existencias2], [Requerido2], … , [Insumo20], [Existencias20], [Requerido20]

2.- Calcular cada una de las columnas virtuales

[Insumo] = LOOKUP ( [_THISROW].[PRODUCTO] & “-01” , “Armado” , “ID” , “Insumo” )

[Existencias] = IF ( isblank ( [Insumo1] ) , “”, SUM ( SELECT ( Movimientos[Cantidad] , and ( [Nota de Almacén].[Almacén] = [_THISROW].[Almacén] , [Insumo] = [_THISROW].[Insumo1] ) ) ) )

[Requerido] = IF ( isblank ( [Insumo_1]) , 1 , LOOKUP ( [_THISROW].[Producto] & “-01” , “Armado” , “ID” , “Requerido” ) )

3.- Calcular
[Potencial] = Min ( List ( [Existencias1] / [Requerido1] , [Existencias2] / [Requerido2], … , [Existencias20] / [Requerido20] ) )

Problema

Cada producto tiene un máximo de 20 insumos relacionados pero la cantidad de insumos por producto es variable, por lo que si un producto tiene 5 insumos, el resultado de las columnas [Existencias6]… [Existendias20] es igual a “”, quedando la formula de [Potencial] de la siguiente manera:

[Potencial] = Min ( List ( 30/10 , 15/6 , 18/3 , 25/2, 4/7, “” , “”, “”, … , “”, “”, “”, “”, “”, “”, “” ) )

Lo que obviamente genera un error en la formula, lo ideal es que la formula quedara de la siguiente manera

[Potencial] = Min ( List ( 30/10 , 15/6 , 18/3 , 25/2, 4/7, , , , … , , , , , , , ) )

Para obtener el mínimo de los los 5 primeros argumentos de la formula …

¿Alguna sugerencia?

Agradezco de antemano su tiempo y sus aportaciones.

Encontré una posible solución, la aplique y esta funcionando:

[Potencial] = Min (
if ( isblank ( [Insumo1] ), Number(""), [Lista ([Existencias1] / [Requerido1]) ,
if ( isblank ( [Insumo2] ), Number(""), [Lista ([Existencias2] / [Requerido2]) ,
… ,
if ( isblank ( [Insumo1] ), Number(""), [Lista ([Existencias20] / [Requerido20]) )

Probaré y comentaré los resultados…