Crystal Reports 10: вложенная формула - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть отчет, который показывает пять разных кодов активности. Я хотел бы сложить все одинаковые коды и поместить итоговые значения для каждого из 5 кодов активности в нижнем колонтитуле группы. У меня это работает для одного кода деятельности, но я хотел бы написать формулу, которая будет искать все пять и общее количество каждого. Вот что у меня есть:

(если {@activitycode_id} = "Не готов", то {iActivityCodeStat.ActivityTime} еще 0)

Каков правильный синтаксис для добавления дополнительных if в одну формулу? И тогда лучший подход к суммированию каждого?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 апреля 2010

Если место оператора if-then-else, попробуйте структуру select-case.

Select {@activitycode_id}

Case "Not Ready": {iActivityCodeStat.ActivityTime}
Case "Sleeping": {iActivityCodeStat.ActivityTime}
//else
Default: 0

Если вы пытаетесь суммировать каждый код активности независимо, вы можете вставить CrossTab.

Если вы хотите большей гибкости, чем CrossTab, вам нужно иметь поле формулы, которое изолирует каждый код активности, чтобы его можно было суммировать по отдельности. Например:

//{@Not Ready}
If {@activitycode_id}= "Not Ready" Then {iActivityCodeStat.ActivityTime} Else 0

//{@Sleeping}
If {@activitycode_id}= "Sleeping" Then {iActivityCodeStat.ActivityTime} Else 0
0 голосов
/ 02 апреля 2010

Два способа сделать это - использовать оператор switch или использовать промежуточные итоги.

В этом случае вы указываете, что если код активности «Не готов», то используйте ActivityTime, и если вы добавите к нему, то другие значения будут добавлены в это поле формулы. Тем не менее, я не думаю, что это метод, который вы хотите использовать.

Для того, что вы хотите, я думаю, что вам лучше бы создать поле промежуточного итога на основе {iActivityCodeStat.ActivityTime}, а в разделе «Оценка» вы должны использовать формулу для каждого статуса, например:

{@activitycode_id}= "Not Ready"

Затем, когда вы поместите каждое из этих полей формулы в нижний колонтитул группы, вы увидите итоговую сумму для того раздела, где код действия "Не готов". Не забудьте установить в разделе «Сброс» в настройке промежуточного итога значение «При изменении группы» и выбрать группу, в которой находится поле, чтобы получить различное значение для каждого раздела, а не промежуточный итог все разделы.

Надеюсь, это поможет.

...