Given this layout:
Code:
tblBridge
BridgeID PK
BridgeName Text
BridgeType Number (FK BridgeType)
tblComponent
ComponentID PK
BridgeID Number (FK tblBridge)
ComponentType Number (FK tblComponentType)
LastInspected Date
Condition
NextInspection Date
FreqRecommended Number (recommended inspection frequency in months)
tblComponentType
ComponentType PK
CompTypeName Text
tblInspectionLagByCondition
BridgeTypeCD Number (FK tblBridgeType)
ComponentType Number (FK tblComponentType)
Condition
MinMonths Number (lowest number)
CondFreqOffset Number (change to manufacturer's recommendations))
Maxmonths Number (highest number)
This query would calculate the next inspection date:
Code:
SELECT
TC.BridgeID,
TB.BridgeType,
TC.ComponentID,
TC.ComponentType,
TC.LastInspected,
TC.Condition,
TC.FreqRecommended,
TL.CondFreqOffset,
TL.MinMonths,
TL.MaxMonths,
(TC.FreqRecommended + TL.CondFreqOffset) AS CalcFreq1,
IIF(calcFreq1 > MaxMonths, MaxMonths, IIF(calcFreq1 < MinMonths, MinMonths, calcFreq1) As CalcFreq2
DateAdd("m",calcFreq2,TC.LastInspected) As NextInspDate
FROM
( (tblComponent AS TC
INNER JOIN tblBridge AS TB
ON TC.BridgeID = TC.BridgeID)
INNER JOIN tblInspectionLagByCondition As TL
ON TB.BridgeType = TL.BridgeType
AND TC.ComponentType = TL.ComponentType
AND TC.Condition = TL.Condition
);