Отчет о кристаллах условных формульных бомб

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

может кто-нибудь объяснить возможное обходное решение. может быть, условная ссылка на таблицу, если это возможно? Спасибо ND

if Len("" + {invhdr.ACCT}) > 0 then if {invhdr.ACCT} = 'CASH' then {CashCust.CUSTOM1}
else if {invhdr.ACCT} <> 'CASH' then {Lookup.VATREGNO} else "";

скажем, если invhdr.ACCT = 'test', похоже, все еще нужна ссылка на {CashCust.CUSTOM1}, все мои таблицы связаны как внутреннее соединение, а не принудительно


person user552769    schedule 28.10.2011    source источник


Ответы (1)


Я предлагаю изменить внутренние соединения на левые внешние соединения (из таблицы invhdr в таблицы CashCust и Lookup, чтобы invhdr находился внутри соединений). Это не связано с формулой - если вы внутренне объединили все три таблицы, то соответствующие записи должны существовать во всех трех таблицах для возвращаемых строк; это определение внутреннего соединения.

Затем вы можете столкнуться с проблемами с формулой, если invhdr.ACCT имеет значение null - причуда более старых версий Crystal заключалась в том, что если какая-либо часть формулы оценивалась как null, то вся формула оценивалась как null. Это поведение могло быть изменено в более поздних версиях Crystal, но в противном случае "" + {invhdr.ACCT} может быть оценено как null - попробуйте вместо этого проверить значение с помощью функции IsNull.

person Community    schedule 28.10.2011
comment
хорошая одна отметка, я дам ему удар и посмотрю, что у меня получится, спасибо за предложение .. - person user552769; 28.10.2011
comment
хорошо, новости ... последовал твоему предложению, левое внешнее соединение все еще провалило отчет, но изменение обеих ссылок на полное внешнее соединение взломало его .. большое спасибо, что указали мне правильный путь Марк .. - person user552769; 28.10.2011