2010-04-01 4 views
0

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

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

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

Спасибо!

ответ

0

Два способа, которыми я бы это сделал, - использовать оператор switch или использовать текущие итоги.

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

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

{@activitycode_id}= "Not Ready" 

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

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

0

Если место оператора if-then-else, попробуйте структуру шкафа выбора.

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 
Смежные вопросы