Jump to content
We've recently updated our Privacy Statement, available here ×
  • Drill with in the report in jasper reports


    This is an extended tutorial of my post back in 2015, today, I needed to implement the same and struggled to get the old example working, so, thought of documenting it again with server export available for the community. 

    https://jasper-bi-suite.blogspot.com/2015/01/tip-intercharts-drill-down-technique-in.html
    Tip : Intra charts/components linking technique in Jasper reports : HTML5 charts inter linking with in report in Jasper Studio 6.x

    Problem Statement : 
    How to drill down with in the report ? How to get dynamic data displayed in a table component when performed click action on particular slices from Pie Chart ?

    Pie : Number of cars by Occupation
    Table : Details of customer by occupation

    Manual.png


    Management.png


    Solution :  
    1) Create a parameter say : $P{paramOccupation} for main report and give default value
             In this example default value is given as "Manual"
    2) Create a data set and create the same parameter and filter the query with this parameter.
    3) Design Pie graph and table component.
    4) For the Pie graph category create Bucket Property
            paramOccupation = $F{paramOccupation}
    4) For the pie graph Hyperlink give _report = path of the same report from J.Server.
        and add parameter as shown in below image.
      i.e.,
    (NOTE : Assuming the report is published already to the server)

    _report="/Praveen/Drill_with_in_reports"                  
      paramOccupation=Level1.paramOccupation   (This is the Bucket property created for category)

    drill.png

    5) Make sure the table component "Dateset" is added with Parameter
           i.e., In table component properties --> Parameters -->
             Add paramOccupation=${paramOccupation}

    6) Re publish the report to Jasper Server and hide the paramOccupation parameter
             
    invisible.png
    Download the server zip file for live example :  Click Me
    Import this zip to your jasper server and run "Drill with in report" report from "Praveen" folder
    praveen.png


    JRXML: 
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Created with Jaspersoft Studio version 7.2.0.final using JasperReports Library version 6.6.0  -->
    <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="Drill with in reports" pageWidth="1000" pageHeight="842" columnWidth="960" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="4b0b908c-5907-4119-9d85-00671c2494af">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="foodmart"/>
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
    <property name="ireport.jasperserver.url" value="http://localhost:8080/jasperserver-pro/"/>
    <property name="ireport.jasperserver.user" value="superuser"/>
    <property name="ireport.jasperserver.reportUnit" value="/Praveen/Drill_with_in_reports"/>
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
    <property name="ireport.jasperserver.report.resource" value="/Praveen/Drill_with_in_reports_files/main_jrxml"/>
    <style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
    <box>
    <pen lineWidth="0.5" lineColor="#000000"/>
    <topPen lineWidth="0.5" lineColor="#000000"/>
    <leftPen lineWidth="0.5" lineColor="#000000"/>
    <bottomPen lineWidth="0.5" lineColor="#000000"/>
    <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
    </style>
    <style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
    <box>
    <pen lineWidth="0.5" lineColor="#000000"/>
    <topPen lineWidth="0.5" lineColor="#000000"/>
    <leftPen lineWidth="0.5" lineColor="#000000"/>
    <bottomPen lineWidth="0.5" lineColor="#000000"/>
    <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
    </style>
    <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
    <box>
    <pen lineWidth="0.5" lineColor="#000000"/>
    <topPen lineWidth="0.5" lineColor="#000000"/>
    <leftPen lineWidth="0.5" lineColor="#000000"/>
    <bottomPen lineWidth="0.5" lineColor="#000000"/>
    <rightPen lineWidth="0.5" lineColor="#000000"/>
    </box>
    </style>
    <subDataset name="Dataset1-table" uuid="24749c25-55a5-49c2-be2d-f5dc1ec06acb">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="foodmart"/>
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
    <parameter name="paramOccupation" class="java.lang.String"/>
    <queryString>
    <![CDATA[select * from customer where occupation= $P{paramOccupation} limit 10]]>
    </queryString>
    <field name="customer_id" class="java.lang.Integer">
    <property name="com.jaspersoft.studio.field.label" value="customer_id"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="account_num" class="java.lang.Long">
    <property name="com.jaspersoft.studio.field.label" value="account_num"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="lname" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="lname"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="fname" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="fname"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="mi" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="mi"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="address1" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="address1"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="address2" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="address2"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="address3" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="address3"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="address4" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="address4"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="city" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="city"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="state_province" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="state_province"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="postal_code" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="postal_code"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="country" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="country"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="customer_region_id" class="java.lang.Integer">
    <property name="com.jaspersoft.studio.field.label" value="customer_region_id"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="phone1" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="phone1"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="phone2" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="phone2"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="birthdate" class="java.sql.Date">
    <property name="com.jaspersoft.studio.field.label" value="birthdate"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="marital_status" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="marital_status"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="yearly_income" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="yearly_income"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="gender" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="gender"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="total_children" class="java.lang.Integer">
    <property name="com.jaspersoft.studio.field.label" value="total_children"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="num_children_at_home" class="java.lang.Integer">
    <property name="com.jaspersoft.studio.field.label" value="num_children_at_home"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="education" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="education"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="date_accnt_opened" class="java.sql.Date">
    <property name="com.jaspersoft.studio.field.label" value="date_accnt_opened"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="member_card" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="member_card"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="occupation" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="occupation"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="houseowner" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="houseowner"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="num_cars_owned" class="java.lang.Integer">
    <property name="com.jaspersoft.studio.field.label" value="num_cars_owned"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="fullname" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="fullname"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    </subDataset>
    <parameter name="paramOccupation" class="java.lang.String">
    <defaultValueExpression><![CDATA["Manual"]]></defaultValueExpression>
    </parameter>
    <queryString>
    <![CDATA[select occupation, sum(num_cars_owned) cars  from customer
    group by occupation
     order by occupation]]>
    </queryString>
    <field name="occupation" class="java.lang.String">
    <property name="com.jaspersoft.studio.field.label" value="occupation"/>
    <property name="com.jaspersoft.studio.field.tree.path" value="customer"/>
    </field>
    <field name="cars" class="java.lang.Long">
    <property name="com.jaspersoft.studio.field.label" value="cars"/>
    </field>
    <background>
    <band splitType="Stretch"/>
    </background>
    <summary>
    <band height="420" splitType="Stretch">
    <componentElement>
    <reportElement x="0" y="80" width="400" height="340" uuid="07f8444d-5b85-4950-aefc-4e4b3f62c16c"/>
    <hc:chart xmlns:hc="http://jaspersoft.com/highcharts" xsi:schemaLocation="http://jaspersoft.com/highcharts http://jaspersoft.com/schema/highcharts.xsd" type="Pie">
    <hc:chartSetting name="default">
    <hc:chartProperty name="title.text" value=""/>
    <hc:chartProperty name="credits.enabled" value="false"/>
    <hc:chartProperty name="credits.href" value=""/>
    <hc:chartProperty name="credits.text" value=""/>
    <hc:chartProperty name="yAxis.title.text" value=""/>
    <hc:chartProperty name="chart.zoomType" value="xy"/>
    <hc:chartProperty name="plotOptions.pie.showInLegend" value="true"/>
    </hc:chartSetting>
    <multiAxisData>
    <multiAxisDataset/>
    <dataAxis axis="Rows">
    <axisLevel name="Level1">
    <labelExpression><![CDATA["Level Label expression"]]></labelExpression>
    <axisLevelBucket class="java.lang.Comparable">
    <bucketExpression><![CDATA[$F{occupation}]]></bucketExpression>
    <labelExpression><![CDATA[]]></labelExpression>
    <bucketProperty name="paramOccupation"><![CDATA[$F{occupation}]]></bucketProperty>
    </axisLevelBucket>
    </axisLevel>
    </dataAxis>
    <dataAxis axis="Columns"/>
    <multiAxisMeasure name="Measure1" class="java.lang.Number" calculation="Nothing">
    <labelExpression><![CDATA["Cars"]]></labelExpression>
    <valueExpression><![CDATA[$F{cars}]]></valueExpression>
    </multiAxisMeasure>
    </multiAxisData>
    <hc:series name="Measure1">
    <hc:contributor name="SeriesItemHyperlink">
    <hc:contributorProperty name="hyperlinkTarget" valueType="Constant" value="Self"/>
    <hc:contributorProperty name="hyperlinkType" valueType="Constant" value="ReportExecution"/>
    <hc:contributorProperty name="_report" valueType="Expression">
    <hc:valueExpression><![CDATA["/Praveen/Drill_with_in_reports"]]></hc:valueExpression>
    </hc:contributorProperty>
    <hc:contributorProperty name="paramOccupation" valueType="Bucket" value="Level1.paramOccupation"/>
    </hc:contributor>
    </hc:series>
    </hc:chart>
    </componentElement>
    <componentElement>
    <reportElement x="420" y="60" width="540" height="60" uuid="100a6fe4-7159-4de7-a8af-ec3abb357d30">
    <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
    <property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
    <property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
    <property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
    </reportElement>
    <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
    <datasetRun subDataset="Dataset1-table" uuid="10d6d999-3da9-4530-b062-fe2fc3cd4330">
    <datasetParameter name="paramOccupation">
    <datasetParameterExpression><![CDATA[$P{paramOccupation}]]></datasetParameterExpression>
    </datasetParameter>
    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
    </datasetRun>
    <jr:column width="110" uuid="6eabdd56-6307-4a16-b24d-0bd7f9d8af20">
    <jr:columnHeader style="Table_CH" height="30">
    <staticText>
    <reportElement x="0" y="0" width="110" height="30" uuid="8a77e308-071d-4305-b50d-0a4c2469db0c"/>
    <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true"/>
    </textElement>
    <text><![CDATA[account_num]]></text>
    </staticText>
    </jr:columnHeader>
    <jr:detailCell style="Table_TD" height="30">
    <textField>
    <reportElement x="0" y="0" width="110" height="30" uuid="894b8b9c-47e8-4943-9ce9-1d5d9da3895d"/>
    <textElement textAlignment="Center" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[$F{account_num}]]></textFieldExpression>
    </textField>
    </jr:detailCell>
    </jr:column>
    <jr:column width="130" uuid="bd701c03-37dd-4ac7-9d88-bbd6ad9e6ef3">
    <jr:columnHeader style="Table_CH" height="30">
    <staticText>
    <reportElement x="0" y="0" width="130" height="30" uuid="e0a9941b-2b4e-473c-98bf-c1dc4039b841"/>
    <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true"/>
    </textElement>
    <text><![CDATA[occupation]]></text>
    </staticText>
    </jr:columnHeader>
    <jr:detailCell style="Table_TD" height="30">
    <textField>
    <reportElement x="0" y="0" width="130" height="30" uuid="8d464964-5455-4479-9ff3-30badb9dbc13"/>
    <textElement textAlignment="Center" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[$F{occupation}]]></textFieldExpression>
    </textField>
    </jr:detailCell>
    </jr:column>
    <jr:column width="140" uuid="ec42ddc4-b560-400f-ae5c-2661a02e2607">
    <jr:columnHeader style="Table_CH" height="30">
    <staticText>
    <reportElement x="0" y="0" width="140" height="30" uuid="81af8ec1-0046-4c1e-87dd-fdc7693678b9"/>
    <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true"/>
    </textElement>
    <text><![CDATA[country]]></text>
    </staticText>
    </jr:columnHeader>
    <jr:detailCell style="Table_TD" height="30">
    <textField>
    <reportElement x="0" y="0" width="140" height="30" uuid="bb5ab017-42ca-49cd-847a-94c55853cc52"/>
    <textElement textAlignment="Center" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[$F{country}]]></textFieldExpression>
    </textField>
    </jr:detailCell>
    </jr:column>
    <jr:column width="160" uuid="313a65a4-3caa-494e-a6fb-502eb5030755">
    <jr:columnHeader style="Table_CH" height="30">
    <staticText>
    <reportElement x="0" y="0" width="160" height="30" uuid="ceb0dd75-ca3f-4351-a343-93e4d33515f0"/>
    <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true"/>
    </textElement>
    <text><![CDATA[total_children]]></text>
    </staticText>
    </jr:columnHeader>
    <jr:detailCell style="Table_TD" height="30">
    <textField>
    <reportElement x="0" y="0" width="160" height="30" uuid="ef9155f3-1e33-405f-9b7f-861d02b5fd95"/>
    <textElement textAlignment="Center" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[$F{total_children}]]></textFieldExpression>
    </textField>
    </jr:detailCell>
    </jr:column>
    </jr:table>
    </componentElement>
    <textField>
    <reportElement x="30" y="20" width="130" height="30" uuid="859c4814-f726-45ab-b928-07af80779061"/>
    <textElement textAlignment="Center" verticalAlignment="Middle">
    <font size="10" isBold="true"/>
    </textElement>
    <textFieldExpression><![CDATA[$P{paramOccupation}]]></textFieldExpression>
    </textField>
    </band>
    </summary>
    </jasperReport>


    User Feedback

    Recommended Comments

    There are no comments to display.



    Guest
    This is now closed for further comments

×
×
  • Create New...