2014-10-17 2 views
1

У меня есть две почти идентичные базы данных (вторая была копией первой, а затем изменена с использованием другой информации о компании/продукте). Существует стареющий отчет, который никогда не работал правильно, что я должен был исправить. Я работаю над одной базой данных (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; 

ответ

0

Используйте это:

Round(Sum(IIf(DateDiff("d",Date(),[ShipDate])=0,[LineTotal]+CLng([LineTotal]*[SalesTaxRate]*100)/100+[FreightCharge]-Nz([Total Payments],0),0)),2) AS Current_Unshipped 
+0

Ха. Я забыл, что я отправил это с просьбой о помощи. Проблема закончилась тем, что в базе данных были нули, поэтому из-за этого она не удалась. Я закончил создание запроса, который выбрал наиболее распространенные поля в базах данных, и возвратил -1, если был Null. –

Смежные вопросы