Выражение поля в iReport

Я пытаюсь привыкнуть к iReport, прежде чем использовать его в реальном проекте на следующей неделе, и, похоже, я уже где-то застрял. Я использую iReport 3.7.0 на платформе Windows XP + Java 1.6

Кажется, легко изменить цвет поля в зависимости от того, что оно содержит, или вычислить сумму чисел в поле на основе условий, но на практике это занимает у меня слишком много времени. У меня есть запрос:

SELECT COUNT(gender) AS total_by_gender, gender, account_status FROM user_account ua, user_profile up WHERE ua.user_profile_id=up.user_profile_id GROUP BY gender,account_status

это дает мне что-то вроде этого:

    | total_by_gender | gender | account_status |  
    | 160             |Female  | ENABLED        |  
    | 26              |Female  | UNCONFERIMED   |  
    | 100             |Male    | ENABLED        |
    | 10              |Male    | UNCONFIRMED    |    

Теперь я хочу, чтобы ENABLED текст выглядел, скажем, green, а UNCONFIRMED сказал "красный". Для этого я добавил текстовое поле с этим выражением

$F{account_status}.equals( new String("ENABLED") ) ? "<style forecolor='#ff0000'>" + $F{account_status}.toString() + "</style>" :"<style forecolor='#999999'>" + $F{account_status}.toString() + "</style>"    
//i've tried this too
$F{account_status}.contentEquals( new String("ENABLED") )  ? 
//and even  
($F{account_status}.toString =="ENABLED"  ) ?

ну, для каждого из них он дает мне что-то вроде одного и того же текста, например <style> (я думаю, что он печатает все выражение условия) вместо цветного текста unconfirmed или enabled.

Моя вторая проблема заключается в том, что я хочу сделать сумму всех unconfirmed и всех enabled. я могу сделать обычное выражение суммы, но с условием я понятия не имею. Кто-нибудь может пролить свет? Спасибо за прочтение


person black sensei    schedule 10.01.2010    source источник


Ответы (2)


Попробуй это. Определите стиль, как показано ниже.

     <style name="myStyle" isDefault="false" mode="Transparent">
          <conditionalStyle>
              <conditionExpression><![CDATA['YOUR CONDITION']]></conditionExpression>
              <style isDefault="false" style="myStyle" backcolor="#E6DAC3"/>
          </conditionalStyle>
     </style>

И используйте его в своем textFieldExpression

     <reportElement style="myStyle" x="1" y="0" width="100" height="15"/>
person Nayn    schedule 12.01.2010

Здесь две проблемы. 1. Ваше условие не работает. Попробуйте $F{account_status}.equals("ENABLED"). Это будет работать. 2. Вы хотите раскрасить текст на основе некоторого условия. Проверьте, поддерживает ли iReport условное окрашивание текстового поля. Если это так, постарайтесь не загрязнять контент информацией о цвете (). Информация о цвете должна быть в текстовом поле, а не в содержимом текстового поля. Пожалуйста, дайте полное определение текстового поля, которое вы используете.

Я попробую это сам завтра.

person Nayn    schedule 10.01.2010
comment
хорошо, вчера я получил условие, работающее для другой цели, сбрасывая цветовое окрашивание текстового поля. Во время моего исследования в Google я вижу только то, что я опубликовал, но я также заметил, что это для более старых версий. Получение такой информации для ireport 3.7 .0 или просто версия 3 кажется редкой. спасибо за ответ - person black sensei; 11.01.2010
comment
так вы решили вопрос раскраски или условной суммы? или оба? - person medopal; 11.01.2010