У меня есть две почти идентичные базы данных (вторая была копией первой, а затем изменена с использованием другой информации о компании/продукте). Существует стареющий отчет, который никогда не работал правильно, что я должен был исправить. Я работаю над одной базой данных (A), а второй (B) запускает ошибку «Недопустимый».«Недопустимое использование Null» в запросе доступа
Запрос отчета создается из другого запроса, который в основном захватывает информацию о заказе и информацию о клиенте. Оттуда соответствующий запрос разбивает заказы на куски в зависимости от того, как долго они были отправлены, и возвращает баланс. Сообщение об ошибке всплывает со следующим сегментом кода:
Round(Sum(IIf((Date()-[ShipDate] Is Null),[LineTotal]+(CLng([LineTotal]*[SalesTaxRate]*100)/100)+[FreightCharge]-nz([Total Payments]),0)),2) AS Current_Unshipped
Если Is Null меняется на что-либо другое, то запрос выполняется нормально. Если я попытаюсь ввести любой код «если переменная является нулевым», он вызывает ошибку. Я попробовал следующее, но безрезультатно.
Round(Sum(IIf((nz[ShipDate]),[LineTotal]+(CLng([LineTotal]*[SalesTaxRate]*100)/100)+[FreightCharge]-nz([Total Payments]),0)),2) AS Current_Unshipped
У меня есть еще один столбец, который откидывает «NULL», если ShipDate является недействительным, который работает на удивление. Первый сегмент кода работает безупречно в другой базе данных, поэтому я смущен. Мне нужно создать столбец для несанкционированных заказов, следовательно, отсутствует [ShipDate]. Я не понимаю, почему код не работает.
Весь
(CLng([LineTotal]*[SalesTaxRate]*100)/100)+[FreightCharge]-nz([Total Payments]),0))
сегмент кода, как формируется баланс, и она работает. Он также реализован примерно в миллионах мест в базе данных. Дизайнер думал, что автоматически генерирует общий баланс при каждом запуске запроса, вместо того, чтобы его где-то хранить.
Весь код запроса также размещен ниже. Если кто-то может указать мне в правильном направлении, это будет очень полезно.
SELECT DISTINCTROW
Round(Sum(IIf((Date()-[ShipDate]<31),[LineTotal]+(CLng([LineTotal]*[SalesTaxRate]*100)/100)+[FreightCharge]-nz([Total Payments]),0)),2) AS [Current],
Round(Sum(IIf((Date()-[ShipDate] Is Null),[LineTotal]+(CLng([LineTotal]*[SalesTaxRate]*100)/100)+[FreightCharge]-nz([Total Payments]),0)),2) AS Current_Unshipped,
Round(Sum(IIf((Date()-[ShipDate])<61 And (Date()-[ShipDate]>30),[LineTotal]+(CLng([LineTotal]*[SalesTaxRate]*100)/100)+[FreightCharge]-nz([Total Payments]),0)),2) AS [31-60 Days],
Round(Sum(IIf((Date()-[ShipDate])<91 And (Date()-[ShipDate]>60),[LineTotal]+(CLng([LineTotal]*[SalesTaxRate]*100)/100)+[FreightCharge]-nz([Total Payments]),0)),2) AS [61-90 Days],
Round(Sum(IIf((Date()-[ShipDate])>90,[LineTotal]+(CLng([LineTotal]*[SalesTaxRate]*100)/100)+[FreightCharge]-nz([Total Payments]),0)),2) AS [91+ Days],
Round(Sum(nz([LineTotal])+(CLng(nz([LineTotal])*nz([SalesTaxRate])*100)/100)+nz([FreightCharge])-nz([Total Payments])),2) AS Balance,
[Receivables Aging Report Query].CompanyName,
[Receivables Aging Report Query].OrderDate,
[Receivables Aging Report Query].ShipDate,
[Receivables Aging Report Query].OrderID,
nz((Round(Date()-[ShipDate])),"NULL") AS Span,
FROM [Receivables Aging Report Query]
GROUP BY
[Receivables Aging Report Query].CompanyName,
[Receivables Aging Report Query].OrderDate,
[Receivables Aging Report Query].ShipDate,
[Receivables Aging Report Query].OrderID
HAVING(((Round(Sum(nz([LineTotal])+(CLng(nz([LineTotal])*nz([SalesTaxRate])*100)/100)+nz([FreightCharge])-nz([Total Payments])),2))>0 Or (Round(Sum(nz([LineTotal])+(CLng(nz([LineTotal])*nz([SalesTaxRate])*100)/100)+nz([FreightCharge])-nz([Total Payments])),2))<0) AND (([Receivables Aging Report Query].ShipDate) Is Not Null)) OR (((Round(Sum(nz([LineTotal])+(CLng(nz([LineTotal])*nz([SalesTaxRate])*100)/100)+nz([FreightCharge])-nz([Total Payments])),2))>0 Or (Round(Sum(nz([LineTotal])+(CLng(nz([LineTotal])*nz([SalesTaxRate])*100)/100)+nz([FreightCharge])-nz([Total Payments])),2))<0) AND (([Receivables Aging Report Query].ShipDate) Is Null))
ORDER BY
[Receivables Aging Report Query].OrderID;
Ха. Я забыл, что я отправил это с просьбой о помощи. Проблема закончилась тем, что в базе данных были нули, поэтому из-за этого она не удалась. Я закончил создание запроса, который выбрал наиболее распространенные поля в базах данных, и возвратил -1, если был Null. –