Как проверить, что значение true для одного объекта, но false для других - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь создать SelectionFormula в отчетах о кристаллах, который проверит, имеет ли один объект значение true для столбца предупреждения, а другие объекты имеют значение false. Любые, которые имеют истину и ложь для оповещения одного и того же человека, для разных объектов, будут включены в отчет.

Например, для данных:

Last  First  Facility   Alert
Yoda  Guy    A          true
Yoda  Guy    B          false
Skyw  Luke   A          true

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

Требуется отчет:

Last  First  Facility   Alert
Yoda  Guy    A          true
Yoda  Guy    B          false

Это будет Report => SelectionFormulas => record

{Facilities.Alert} = true
and
{Facilities.Alert} = false

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

Это будет внутри, а не внутри? Как это пойдет? Я новичок в кристалле. в, а не в

* Обновление: я попытался сделать то, что было в ответе (@millet) ниже. Я добавил псевдоним для каждой таблицы и сделал так, чтобы для удобства это было! = Между псевдонимами, а не псевдонимами.

Я добавил Alert_True для Facility и Alert_False для Facility_1 (псевдоним), просто поля, извлеченные в отчете для предупреждения.

Затем в Report => SelectionFormulas => record я добавил это:

(
({Facilities.Alert} = true) 
or 
({Facilities_1.Alert} = false)
)

Но, похоже, это тоже не работает. В результатах я вижу:

Last  First  Facility   Alert_True   Alert_False
Yoda  Guy    A          true        true
Yoda  Guy    B          true        true
Yoda  Guy    B          true        false
Yoda  Guy    A          false       false
Skyw  Luke   A          false       false
Skyw  Luke   C          false       false

Я хотел, чтобы отчет отображался только тогда, когда оповещение было верно для некоторых объектов, но не для всех, как минимум.

** Обновление: Я изменил SelectionFormula на следующий комментарий, и результаты выглядят хорошо, но это не очевидно. Я не уверен, как сделать Alert более очевидным. Я изменил это:

(
    ({Facilities.Alert} = true) 
    and 
    ({Facilities_1.Alert} = false)
    )

Полученная таблица выглядит следующим образом (возможно, исходные данные были изменены):

Last  First  Facility   Alert_True   Alert_False
Yoda  Guy    A          true        false
Yoda  Guy    B          true        false
Yoda  Guy    C          true        false
Yoda  Guy    D          true        false
Skyw  Luke   A          true       false
Skyw  Luke   C          true       false
Test  TT     H          true       false
Test  TT     H          true       false

По какой-то причине он всегда показывает true в первом столбце предупреждения и false во втором. Когда я захожу к нашему приложению и проверяю найденные результаты, среди средств, по крайней мере, один всегда проверяется, а некоторые нет. Тем не менее, вы не можете сказать по результатам, которые они есть. Например, для теста выше, для объекта S он не проверен, но для объекта H он проверен, а для объекта J он не проверен. Но в отчете показано только средство H для испытаний.

1 Ответ

0 голосов
/ 22 мая 2019

Один из способов решить эту проблему - использовать псевдонимы таблиц:

Внесите соответствующие таблицы во второй раз в отчет (Crystal попросит вас указать псевдоним для 2-го экземпляра каждой таблицы).

Добавить условие соединения, что это тот же человек, но объект НЕ тот же объект

Добавить условие выбора записи для 1-го экземпляра, в котором Alert равно True, а для 2-го экземпляра, что Alert - False.

...