2016-04-21 3 views
0

Я использую командный запрос в отчетах о кристаллах для получения необходимой мне информации. Результаты запроса выглядеть так:Фильтрация записей отчета Crystal Report 3 разных способа записи CR10

Amt  Date  Acc  Unit  Setup  Owner?  Owner 
5.00 2016-03-01 1  A  A   Y   B 
5.00 2016-03-01 2  A  B   N   null 
5.00 2016-03-01 3  A  null  null  null 

Мой поток логики: если владелец? = "Y", затем получить владельца, иначе, если владелец? = "N" или isnull, затем получите настройку, иначе, если установка будет нулевой, а затем получите блок.

В выборе записей я попробовал если-то еще, если заявление, чтобы помочь фильтр каждую запись, глядя, как это просто получить «B» единиц .:

If({Command.Owner? = "Y") Then {Command.Owner = "B") 
Else if ({Command.owner? = "N" or isnull({Command.owner}) Then 
    {Command.setup = "B") 
Else if ({Command.owner? = "N" or isnull({Command.owner}) AND {command.setup} <> "B" Then 
{Command.unit} = "B" 

В принципе, что это делает, проверка владельца? это Y, а затем получение записей, где Владелец является B, если это N или null, тогда получите записи, где установка B, если оба они неверны, тогда получите единицы, которые являются B.

Но это не так. Не получайте каждую запись. Я хочу получить все записи, которые с этим. Как

Amt  Date  Acc  Unit  Setup  Owner?  Owner 
5.00 2016-03-01 1  A  A   Y   B 
5.00 2016-03-01 2  A  B   N   null 
5.00 2016-03-01 3  B  null  null  null 

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

Я пробовал те же if-else-if с операторами AND вместо Else, но ничего не возвращает. Я также сделал то же самое с OR, который ничего не возвращает.

Есть ли способ поиска по каждой записи, и если он соответствует одному из этих критериев, то потяните его и покажите?

ответ

1

Попробуйте это (отредактировано для нулевой последовательности)?

If (isnull({Command.owner}) or {Command.owner?} = "N") and not isnull({Command.setup} and {Command.Owner?} <> "Y") then {Command.setup} = "B" 
Else if {Command.Owner?} = "Y" Then {Command.owner} = "B" 
Else {Command.unit} = "B" 
+0

См Я попробовал, он только ищет первый если, то игнорирует остальные, я не знаю, почему он не продолжает проверку – NWcis

+1

Try заново секвенирования логику для обработки любых и всех аннулирует первый? [Выбор записи и ошибка нулевой ценности в Crystal Reports] (http://www.isinc.com/2008/10/10/record-selection-and-the-null-value-bug-in-crystal-reports/) –

+0

О, ничего себе, потрясающе. Я не думал о том, что это isNull, я не вижу, как это еще не исправлено, тем не менее это работает, спасибо за указатель. – NWcis