Access-Consultas-Sumas Acumuladas. Sumar peso de tornillos de unas cajas unas dentro de otras

Llevo un tiempo peleándome con las consultas para poder hacer una suma acumulada sin tener que entrar a código VBA... Pero lo tengo como último recurso.

Supongamos que tengo la Consulta1 que me da el peso total de los tornillos que contiene cada una de las 10 cajas y la Tabla1 que me relaciona por cada caja (tagCaja) en qué otra caja más grande se va a meter (TagCajaDestino).

Cada caja tiene un nombre o tag único.

De esta manera, con la Tabla1 puedo ir configurando la ubicación de cajas más pequeñas dentro de las cajas más grandes de una manera flexible.

Logro realizar una Consulta2 en la que hago una suma de los pesos que contiene una caja más los que contiene la caja inmediatamente más pequeña... Pero no soy capaz de hacer un acumulado del resto de las cajas que están dentro de la inmediatamente más pequeña.

Es decir, en otras palabras; quiero saber por cada caja el peso total de todos los tornillos que están dentro.

Espero haberme explicado bien; como una imagen vale más que mil palabras os paso un ejemplillo.

Cualquier indicación será de mucha ayuda

1 Respuesta

Respuesta
1

Finalmente, dado que no deja de ser un proceso iterativo he creado una función en VBA y la llamo desde la consulta. Me va un poco lento pero hace su función.

Function BALANCE_LINKSACUMULADOS(tagCaja As String) As Double
    Dim TotalAcc As Double, tagCajaDestino As String
    TotalAcc = Nz(DLookup("[SumaDeTornillos]", "Consulta1", "CampoCajaDestino = '" & tagCaja & "'"), 0)
    tagCajaDestino = Nz(DLookup("[tagCajaDestino]", "Tabla1", "CampoCajas = '" & tagCaja & "'"), "")
    While tagCajaDestino <> ""
        TotalAcc = TotalAcc + Nz(DLookup("[SumaDeTornillos]", "Consulta1", "CampoCajaDestino = '" & tagCajaDestino & "'"), 0)
        tagCajaDestino = Nz(DLookup("[tagCajaDestino]", "Tabla1", "CampoCajas = '" & tagCajaDestino & "'"), "")
    Wend
    BALANCE_LINKSACUMULADOS = TotalAcc
End Function

Luego, en el campo de consulta: SumAcc = BALANCE_LINKSACUMULADOS ([tagCaja])

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas