Crystal — выберите конкретное значение поля на основе другого значения в той же таблице

Я пытаюсь добавить в свой отчет формулу, которая просматривает таблицу с несколькими значениями и возвращает значение, соответствующее моему оператору if.

Вот пример данных таблицы (выборки)

Клиент -- ItemID -- Поле1

12 _________ 05 ______ Red

12_________ 06 ______ Синий

12_________ 07 ______ Green

12 _________ 08 ______ Черный

Номер клиента уже передается в отчет. Когда я добавляю это значение в отчет, в нем правильно отображается 12

Теперь я хочу добавить формулу, которая говорит, что если ({Selections.ItemID}=05), то selections.Field1 else '0'

В SQl это работает.. он знает, что клиент равен 12, а ItemID равен 5, поэтому, когда я использую (выберите Field1 из вариантов, где клиент = 12 и itemID = 5), в результатах запроса возвращается только одно значение (красное).

Однако всякий раз, когда я добавляю эту формулу в свой отчет, она отображает только 0. Если я просто добавлю поле 1 в отчет, будет возвращено только верхнее значение.

Что нужно сделать, чтобы этот «логический поиск» заработал. Я хочу иметь возможность добавить несколько строк в if/then, которые проверяют каждое значение ItemID, а затем отображают соответствующие данные Field1 для этого значения.


person Brian Cantor    schedule 27.04.2016    source источник
comment
чтобы опубликовать свой код, если он у вас есть, потому что это будет полезно для решения вашего вопроса   -  person Willie Cheng    schedule 28.04.2016
comment
вот точная формула, которую я использую, если ({CustomerGROUPINFO.ITEMID}='25-Siding'), то {CUSTOMERGROUPINFO.FIELD1} else 'test'   -  person Brian Cantor    schedule 28.04.2016


Ответы (1)


Я бы прокомментировал, если бы мог, но у меня была проблема с кристальными отчетами if, когда я пытался вернуть строку, если она истинна, и число, если ложно. Оператор if может возвращать только один тип данных, поэтому, если true возвращает число (id), а false возвращает строку «тест», вам нужно преобразовать идентификатор в строку.

Посмотрите, работает ли это.

if ({CustomerGROUPINFO.ITEMID}='25-Siding') then ToText({CUSTOMERGROUPINFO.FIELD1}) else 'test'
person Aspen    schedule 29.04.2016