2014-11-14 2 views
1

У меня есть категория и таблицы клиентов, как вы видели ниже в моей базе данных:Как изменить цвет детали группы при изменении группы?

enter image description here

Тогда я хочу, чтобы сделать отчет из этих таблиц и группировка по category id в яшмы. это мой jrxml файл:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="jasper" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <queryString language="plsql"> 
     <![CDATA[select c.cid as "CID", c.title, j.id, j.name, j.family 
    from Jasper j 
    join Category c 
    on j.c_id = c.cid]]> 
    </queryString> 
    <field name="CID" class="java.lang.String"> 
     <fieldDescription><![CDATA[]]></fieldDescription> 
    </field> 
    <field name="TITLE" class="java.lang.String"> 
     <fieldDescription><![CDATA[]]></fieldDescription> 
    </field> 
    <field name="ID" class="java.lang.String"> 
     <fieldDescription><![CDATA[]]></fieldDescription> 
    </field> 
    <field name="NAME" class="java.lang.String"> 
     <fieldDescription><![CDATA[]]></fieldDescription> 
    </field> 
    <field name="FAMILY" class="java.lang.String"> 
     <fieldDescription><![CDATA[]]></fieldDescription> 
    </field> 
    <group name="category"> 
     <groupExpression><![CDATA[$F{CID}]]></groupExpression> 
     <groupFooter> 
      <band> 
       <frame> 
        <reportElement x="1" y="0" width="212" height="0"/> 
        <box> 
         <topPen lineWidth="0.5"/> 
        </box> 
       </frame> 
      </band> 
     </groupFooter> 
    </group> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <pageHeader> 
     <band height="33" splitType="Stretch"> 
      <staticText> 
       <reportElement x="196" y="1" width="162" height="32"/> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font fontName="Consolas" size="20" isBold="true" isItalic="true"/> 
       </textElement> 
       <text><![CDATA[Jasper]]></text> 
      </staticText> 
     </band> 
    </pageHeader> 
    <columnHeader> 
     <band height="20" splitType="Stretch"> 
      <staticText> 
       <reportElement mode="Opaque" x="213" y="0" width="100" height="20" backcolor="#F0F0F0"/> 
       <box> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font fontName="Consolas"/> 
       </textElement> 
       <text><![CDATA[ID]]></text> 
      </staticText> 
      <staticText> 
       <reportElement mode="Opaque" x="313" y="0" width="100" height="20" backcolor="#F0F0F0"/> 
       <box> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font fontName="Consolas"/> 
       </textElement> 
       <text><![CDATA[Name]]></text> 
      </staticText> 
      <staticText> 
       <reportElement mode="Opaque" x="413" y="0" width="100" height="20" backcolor="#F0F0F0"/> 
       <box> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font fontName="Consolas"/> 
       </textElement> 
       <text><![CDATA[Family]]></text> 
      </staticText> 
      <staticText> 
       <reportElement mode="Opaque" x="1" y="0" width="100" height="20" backcolor="#F0F0F0"/> 
       <box> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font fontName="Consolas"/> 
       </textElement> 
       <text><![CDATA[CID]]></text> 
      </staticText> 
      <staticText> 
       <reportElement mode="Opaque" x="101" y="0" width="112" height="20" backcolor="#F0F0F0"/> 
       <box> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font fontName="Consolas"/> 
       </textElement> 
       <text><![CDATA[Title]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="20" splitType="Stretch"> 
      <textField> 
       <reportElement x="213" y="0" width="100" height="20"/> 
       <box leftPadding="5"> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement> 
        <font fontName="Consolas"/> 
       </textElement> 
       <textFieldExpression class="java.lang.String"><![CDATA[$F{ID}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="313" y="0" width="100" height="20"/> 
       <box leftPadding="5"> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement> 
        <font fontName="Consolas"/> 
       </textElement> 
       <textFieldExpression class="java.lang.String"><![CDATA[$F{NAME}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="413" y="0" width="100" height="20"/> 
       <box leftPadding="5"> 
        <topPen lineWidth="0.5"/> 
        <leftPen lineWidth="0.5"/> 
        <bottomPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
       <textElement> 
        <font fontName="Consolas"/> 
       </textElement> 
       <textFieldExpression class="java.lang.String"><![CDATA[$F{FAMILY}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="1" y="0" width="100" height="20"> 
        <printWhenExpression><![CDATA[new Boolean($V{category_COUNT}.longValue() == 1 ? true : false)]]></printWhenExpression> 
       </reportElement> 
       <box leftPadding="5"> 
        <topPen lineWidth="0.0"/> 
        <leftPen lineWidth="0.0"/> 
        <bottomPen lineWidth="0.0"/> 
        <rightPen lineWidth="0.0"/> 
       </box> 
       <textElement verticalAlignment="Middle"> 
        <font fontName="Consolas"/> 
       </textElement> 
       <textFieldExpression class="java.lang.String"><![CDATA[$F{CID}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="101" y="0" width="112" height="20"> 
        <printWhenExpression><![CDATA[new Boolean($V{category_COUNT}.longValue() == 1 ? true : false)]]></printWhenExpression> 
       </reportElement> 
       <box leftPadding="5"> 
        <topPen lineWidth="0.0"/> 
        <leftPen lineWidth="0.0"/> 
        <bottomPen lineWidth="0.0"/> 
        <rightPen lineWidth="0.0"/> 
       </box> 
       <textElement verticalAlignment="Middle"> 
        <font fontName="Consolas"/> 
       </textElement> 
       <textFieldExpression class="java.lang.String"><![CDATA[$F{TITLE}]]></textFieldExpression> 
      </textField> 
      <frame> 
       <reportElement x="1" y="0" width="100" height="20"/> 
       <box> 
        <leftPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
      </frame> 
      <frame> 
       <reportElement x="101" y="0" width="112" height="20"/> 
       <box> 
        <leftPen lineWidth="0.5"/> 
        <rightPen lineWidth="0.5"/> 
       </box> 
      </frame> 
     </band> 
    </detail> 
</jasperReport> 

Результат этого файла выглядит так:

enter image description here

Но я хочу ти есть результат:

enter image description here

Как Я могу это сделать?

+0

Что-то случилось с изображениями ... – jjlema

+0

Что вы имеете в виду? –

+0

Извините, его моя вина, я не мог видеть изображения. – jjlema

ответ

0

Вы можете использовать условный стиль. Определить стиль, как это:

<style name="myStyle"> 
    <box> 
     <pen lineWidth="0.25"/> 
     <topPen lineWidth="0.25"/> 
     <leftPen lineWidth="0.25"/> 
     <bottomPen lineWidth="0.25"/> 
     <rightPen lineWidth="0.25"/> 
    </box> 
    <conditionalStyle> 
     <conditionExpression><![CDATA[($F{CID} % 2) != 0]]></conditionExpression> 
     <style mode="Opaque" forecolor="#000000" backcolor="#FFFF00"/> 
    </conditionalStyle> 
    <conditionalStyle> 
     <conditionExpression><![CDATA[($F{CID} % 2) == 0]]></conditionExpression> 
     <style forecolor="#000000" backcolor="#FFFFFF"/> 
    </conditionalStyle> 
</style> 

Поместите все поля в разделе подробно в рамку и установить этот стиль для кадра.

Это описывают в iReportUltimateGuide в разделе «Работа со стилями»

+0

Если категория удалена, то это решение не работает. например, если категория id выглядит так: ** 1,2,4 ** –

+0

Использовать переменные JR. Например '<имя переменной = класс "GROUPORDERNUM"= "java.lang.Integer" расчет = "DistinctCount"> \t \t \t \t \t ' – sanBez

Смежные вопросы