Llamar función desde consulta selección Access
Recurro a ustedes porque ya no se ni donde buscar. Tengo un Access en donde registro análisis de calidad de cereales. Pero necesito emitir un informe diario de los mismos. Para ello procedí a realizar una consulta de selección y sobre esta consulta realizar el informe. Pero necesito agregar una columna adicional y que la misma realice un calculo sobre los valores de las columnas anteriores. Como es un calculo complejo (muchas sentencias if) procedí a realizar un modulo en VBA. Pero no logro llamar a este modulo desde la consulta de ACCESS.
Este es el código:
Public Function calcularFactorSoja(tierra As Double, materiaExtraña As Double, gPartido As Double, gDañado As Double, gAveria As Double, verdes As Double, olor As Double, revolcadoTierra As Double, amohosado As Double, otros As Double) As Double
Dim TIERRA2 As Double
Dim MATERIAEXTRAÑA1 As Double
Dim MATERIAEXTRAÑA2 As Double
Dim QUEBRADO2 As Double
Dim DAÑADOYAVERIA As Double
Dim VERDES2 As Double
Dim FACTORR As Double
If (tierra > 0.5) Then
TIERRA2 = (tierra - 0.5) * 1.5
Else
TIERRA2 = 0
End If
If (tierra <= 0.5) Then
MATERIAEXTRAÑA1 = (materiaExtraña + tierra)
Else
MATERIAEXTRAÑA1 = (materiaExtraña + 0.5)
End If
If (MATERIAEXTRAÑA1 <= 1) Then
MATERIAEXTRAÑA2 = 0
ElseIf (MATERIAEXTRAÑA1 > 1 And MATERIAEXTRAÑA1 <= 3) Then
MATERIAEXTRAÑA2 = (MATERIAEXTRAÑA1 - 1)
ElseIf (MATERIAEXTRAÑA1 > 3) Then
MATERIAEXTRAÑA2 = (((MATERIAEXTRAÑA1 - 3) * 1.5) + 2)
End If
If (gPartido <= 20) Then
QUEBRADO2 = 0
ElseIf (gPartido > 20 And gPartido <= 25) Then
QUEBRADO2 = ((gPartido - 20) * 0.25)
ElseIf (gPartido > 25 And gPartido <= 30) Then
QUEBRADO2 = (((gPartido - 25) * 0.5) + 1.25)
ElseIf (gPartido > 30) Then
QUEBRADO2 = (((gPartido - 30) * 0.5) + 3.75)
End If
If (gDañado <= 5 And gAveria <= 1) Then
DAÑADOYAVERIA = 0
ElseIf (gDañado > 5 And gAveria <= 1) Then
DAÑADOYAVERIA = ((gDañado + gAveria - 5) * 0.5)
ElseIf (gDañado > 5 And gAveria > 1) Then
DAÑADOSYAVERIA = ((gDañado + gAveria - 5) * 0.5)
ElseIf (gDañado <= 5 And gAveria > 1 And (gDañado + gAveria) > 5) Then
DAÑADOSYAVERIA = ((gDañado + gAveria - 5) * 0.5)
Else
DAÑADOSYAVERIA = (gAveria - 1)
End If
If (verdes > 20) Then
VERDES2 = ((verdes - 20) * 0.5)
Else
VERDES2 = 0
End If
FACTORR = 100 - (MATERIAEXTRAÑAS2 + TIERRA2 + QUEBRADO2 + DAÑADOSYAVERIA + VERDES2 + olor + revolcadoTierra + amohosado + otros)
calcularFactorSoja = FACTORR
End Function
No es un código complejo, pero no se como llamarlo en la consulta ACCESS