У меня есть запрос, который на основе двух входных данных вычисляет некоторые суммы, а затем принимает разницу этих сумм. Сумма PayAmountParts может быть нулевой, если никакие части не были предоставлены. Это портит мой остаток задолженности и, следовательно, запрос ничего не возвращает. Я видел код VBA или SQL, который делал это, но ничего не делал в Design View GUI. Где в запросе на конструкцию Access Query можно установить, чтобы он возвращал 0 при нулевом значении?
Редактировать: я изменил дизайн запроса, добавив два подзапроса, которые выполняют индивидуальное суммирование, а затем запрос, который использует их для вычисления разницы. Проблема по-прежнему остается в том, что когда любое из вычислений равно нулю ie нет возврата, так как запросы возвращают пустые ячейки по всей доске. Я хочу, чтобы в тексте отображались текстовые данные, а в вычисленной ячейке - 0. Вот код SQL для запросов.
Вот код для суммирования количества отправленных отправлений:
SELECT CustomerT.CustomerProgram, PartsT.PartID, PartsT.PartName, Sum(NZ(DiversionT.RcvdQTY,0)) AS SumOfRcvdQTY
FROM PartsT
INNER JOIN (CustomerT
INNER JOIN DiversionT ON
CustomerT.CustomerID = DiversionT.CustomerID) ON
PartsT.PartID = DiversionT.PartID
GROUP BY CustomerT.CustomerProgram, PartsT.PartID, PartsT.PartName
HAVING (((CustomerT.CustomerProgram)=[Forms]![PartsSearchF]![CustomerSearch])
AND ((PartsT.PartID)=[Forms]![PartsSearchF]![PartSearch]));
Этот запрос вычисляет возвращаемое количество:
SELECT CustomerT.CustomerProgram, PartsT.PartID, PartsT.PartName, Sum(NZ(PaybackT.PayAmountParts,0)) AS SumOfPayAmountParts
FROM PartsT
INNER JOIN (CustomerT INNER JOIN PaybackT ON CustomerT.CustomerID = PaybackT.CustomerID)
ON PartsT.PartID = PaybackT.PartID
GROUP BY CustomerT.CustomerProgram, PartsT.PartID, PartsT.PartName
HAVING (((CustomerT.CustomerProgram)=[Forms]![PartsSearchF]![CustomerSearch])
AND ((PartsT.PartID)=[Forms]![PartsSearchF]![PartSearch]));
Предполагается, что этот запрос рассчитать разницу.
SELECT SinglePartPaybackSumQ.CustomerProgram, PartsT.IndiaUID, PartsT.NSN, PartsT.PartName, SinglePartSumQ.SumOfRcvdQTY, SinglePartPaybackSumQ.SumOfPayAmountParts, [SumOfRcvdQTY]-[SumOfPayAmountParts] AS BalanceOwed
FROM (PartsT
INNER JOIN SinglePartPaybackSumQ ON PartsT.PartID = SinglePartPaybackSumQ.PartID)
INNER JOIN SinglePartSumQ ON PartsT.PartID = SinglePartSumQ.PartID;