2013-04-25 4 views
1

У меня есть сводный отчет в хрустальном отчете, но есть 0 возвращенных записей, но в подрепорте настаивают на том, чтобы вытащить каждое примечание к заказу, но все еще отображая 0 замечаний.Параметры Subreport не используются, когда 0 записей

Это очень странно, он говорит «чтение записей 0 из 150000» и продолжает расти.

Подтверждающий критерий выбора - это балансовая единица, код клиента и номер заказа. все они передаются с вещью «{PM -...»).

Я открыл предварительный просмотр пустой подписи, и SQL даже не упомянул критерии выбора. запрос, выполненный сам по себе, действительно продемонстрирует каждое замечание.

Любые мысли о том, как это может произойти?

подотчет формула:

({E_ORD_H.COMP_CODE} = {?Pm-E_ORD_H.COMP_CODE}) 
and 
({E_ORD_H.CUST_CODE} = {?Pm-E_ORD_H.CUST_CODE}) 
and 
({E_ORD_H.ORD_NUM} = {?Pm-E_ORD_H.ORD_NUM}) 
+0

это не может быть лучшим способом, но я установил его Создание поля формулы, имея его вызвать параметр в IsNull if и выводит 0, никогда не будет номер заказа, называемый 0, поэтому он будет возвращать 0, если строка основного отчета равна нулю –

ответ

0

Когда отчет кристалл ведет себя как то это означает, что есть какая-то логика, которая не может быть сделана на сервере БД, так что это должно быть сделано на местном уровне. Обычно это вызвано использованием функции CR в формуле выбора записи, которая не переводится на язык БД.

В этом случае, я считаю, что, когда параметры равны нулю, что является причиной его (например, утверждение {E_ORD_H.COMP_CODE}=<null>не означает, что CR будет в состоянии предвидеть эту ситуацию и заменить {E_ORD_H.COMP_CODE} is null на своем месте в . запрос SubReport в Вместо этого вы должны явно проверить эти параметры нулевыми значениями:

not(isnull({?Pm-E_ORD_H.COMP_CODE})) 
and {E_ORD_H.COMP_CODE} = {?Pm-E_ORD_H.COMP_CODE} 
and not(isnull({?Pm-E_ORD_H.CUST_CODE})) 
and {E_ORD_H.CUST_CODE} = {?Pm-E_ORD_H.CUST_CODE} 
and not(isnull({?Pm-E_ORD_H.ORD_NUM})) 
and {E_ORD_H.ORD_NUM} = {?Pm-E_ORD_H.ORD_NUM} 
+0

спасибо, что работает –