Кристаллическая формула с указанием слов - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь преобразовать SQL-оператор case в формулу Crystal.

В select в sql было это:

...
,pf.Status_category AS Category
,CASE WHEN p.degree LIKE '%P%' AND 
               pf.department_name LIKE 'Occ%' THEN isnull(pf.department2, '') ELSE isnull(pf.department_name, '') END AS Department, 
 CASE WHEN p.degree LIKE '%P%' AND pf.department_name LIKE 'Occ%' THEN isnull(pf.Section2, '') ELSE isnull(pf.Section_name, '') END AS Section, 
 CASE WHEN p.degree LIKE '%P%' AND pf.department_name LIKE 'Occ%' THEN isnull(pf.department3, '') ELSE isnull(pf.department2, '') END AS [Department 2], 
 CASE WHEN p.degree LIKE '%P%' AND pf.department_name LIKE 'Occ%' THEN isnull(pf.Section3, '') ELSE isnull(pf.Section2, '') END AS [Section 2], 
 pdd.DepartmentName AS DP
 ,pdv.PrivilegeDetailText AS Privilages
...
FROM  dbo.Person_PrivDtl_V AS pdv INNER JOIN
               dbo.Person_Privs_Facs_V ON pdv.M_ID = dbo.Person_Privs_Facs_V.Person_Priv_M_ID INNER JOIN
               dbo.PrivDefDepartments_PDF AS pdd ON pdd.PDDept_ID = pdv.PDDept_ID INNER JOIN
               dbo.Person AS p ON pdv.Person_ID = p.Person_ID INNER JOIN
               dbo.Person_Facilities AS pf ON pf.FacCode = dbo.Person_Privs_Facs_V.FacCode AND pdv.Person_ID = pf.Person_ID

Когда я конвертирую это в Crystal, я могу 't поместить это в столбцы дизайна отчета. Поэтому моя идея - использовать формулу для каждого выбранного столбца. Пока что у меня есть это для первой формулы, но она не позволит мне сохранить ее:

Имя формулы = Отдел:

select {Person_Facilities.Department_name} 
case is  like "Occ%" : {Person_Facilities.Department2}

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

Что не так с этой формулой, чтобы я мог использовать подобное и регистр?

Есть ли лучший способ сделать это? Я предполагаю, что могу использовать представление, но мой босс не хочет, чтобы представления загромождали базу данных. Является ли использование формулы способ сделать это в кристалле? SQL также обработал нуль, что я не делаю, но я не уверен, как включить это в данный момент. Я довольно новичок в кристалле, и моя команда не любит вопросы. У нас есть Crystal Reports 2008 и SQL Server 2008 R2.

1 Ответ

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

Не уверен, что это то, что вы ищете, но попробуйте это;

select {Person_Facilities.Department_name} 
case "Occ%" : {Person_Facilities.Department2}
default : 'Unknown';

По умолчанию не является обязательным.

Чтобы использовать оператор LIKE, он выглядит следующим образом:

If {Command_Main.Name} LIKE '*Manager*' then Do Something

Чтобы обработать NULLS в CR, есть возможность сделать это в редакторе формул. Смотри ниже. Измените его с Исключение для пустых значений на Значения по умолчанию для пустых значений . enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...