Функция фильтрации в поле формулы - PullRequest
0 голосов
/ 15 октября 2019

Я новичок в Crystal Reports (2016) и сейчас работаю над оценкой для нашего отдела. Из CR я получаю доступ к данным в таблице SAP Info set. Пока все работает нормально.

Мои данные имеют следующий формат и читаются построчно:

Исходные данные

Как вы можете видеть, что иногда существует Q-номер с позициями 100 и 105, иногда просто с позицией 100. Поэтому иногда встречаются дубликаты Q-номеров. Что мне нужно, так это в случае существующей позиции 105 просто использовать эту строку. Если позиции 105 нет, используйте строку с позицией 100. Это должно исключить дубликаты и оставить только ту информацию, которая мне нужна.

После добавления нового поля формулы в мой отчет должны отображаться такие данные(столбец справа):

Необходимые данные

Я пробовал это уже с функцией "onlastrecord", но без необходимого результата. Это работает, чтобы просто использовать линию с позицией 105 в случае обеих позиций. Но Q-номера только с позицией 100 не отображаются.

Пока это мой код:

Если onlastrecord = true и (tonumber ({Z_QM_INFOSET_CR.VIQMFE-POSNR})= 0100)

затем {Z_QM_INFOSET_CR.QMEL-QMNUM} else

if (tonumber ({Z_QM_INFOSET_CR.VIQMFE-POSNR}) = 0105)

, затем {Z_QM_INF-QMNUM}

Надеюсь, мой случай понятен ..

Заранее большое спасибо!

1 Ответ

0 голосов
/ 15 октября 2019

Я понимаю, что вам нужна формула, которая печатает значение в следующих ситуациях:

  1. показывает число q, когда позиция равна 105
  2. показывает число q, когда положение равно 100и нет 105 для того же q-числа

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

Попробуйте эту формулу:

if {Z_QM_INFOSET_CR.VIQMFE-POSNR} = "0105" 
then {Z_QM_INFOSET_CR.QMEL-QMNUM}
else if onlastrecord and {Z_QM_INFOSET_CR.VIQMFE-POSNR} = "0100"
then {Z_QM_INFOSET_CR.QMEL-QMNUM}
else if {Z_QM_INFOSET_CR.VIQMFE-POSNR} = "0100"
and next({Z_QM_INFOSET_CR.QMEL-QMNUM}) <> {Z_QM_INFOSET_CR.QMEL-QMNUM}
then {Z_QM_INFOSET_CR.QMEL-QMNUM}
else ""
...