Выделение значений в кросс-таблице Crystal Reports на основе одноуровневых значений

У меня есть перекрестная таблица, в которой есть столбцы строк, указывающие на разные классы, а затем имена людей сверху.

|         | Required | Person 1 | Person 2 | Person 3 |
| Class 1 | 8      6 | 1      6 | 3      6 | 4      6 | 
| Class 2 | 6      2 | 3      2 | 2      2 | 1      2 |

Каждое поле содержит 2 значения. Первое значение — количество часов, проведенных в классе, второе поле — количество часов, необходимых для сертификации.

Обязательное поле идентифицирует мой общий итог.

В эксперте кросс-таблицы поля определяются следующим образом.

Строки:

Command.descr -> поле, содержащее имена классов

Столбцы:

Command.fullname -> поле, содержащее полные имена учеников

Сводные поля:

Сумма Command.evlength -> сумма всего времени, проведенного на заданном курсе

Макс. @required -> эта формула возвращает количество необходимых часов на основе названия курса

Я пытаюсь выделить поле Sum of Command.evlength, если оно больше или равно значению Max of @required.

Моим решением было выполнить фоновое форматирование. Щелкните правой кнопкой мыши поле Sum of Command.evlength и выберите Формат поля. Перейдите на вкладку «Границы», установите флажок «Фон» и введите формулу.

Формула, которую я использовал:

if CurrentFieldValue >= {@required} then color(152, 251, 152) else crNoColor

Это не правильная формула. Моя перекрестная таблица была помещена в нижний колонтитул, из-за чего {@required} содержит последнее значение в сетке, которое в приведенном выше примере равно 2.

Из моего исследования я подумал, что мне придется использовать GridRowColumnValue(имя строки или столбца) для доступа к значению {@required} в кросс-таблице, но я не смог найти правильную строку для его представления.

У кого-нибудь есть способ правильно выполнить это сравнение?


person stats    schedule 08.02.2012    source источник


Ответы (1)


К сожалению, я не думаю, что вы можете использовать эксперта по подсветке для сравнения с динамическим значением. Вы можете поменять столбцы местами, а затем добавить следующие формулы:

К цвету фона max_of_required:

whileprintingrecords;
global numbervar required_hrs := currentfieldvalue;
crNoColor;

К цвету фона sum_of_command.evlength:

whileprintingrecords;
global numbervar required_hrs;
if currentfieldvalue >= required_hrs then
 crRed
else
 crNoColor;

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

person Lee Tickett    schedule 28.02.2012