2011-07-06 39 views
0

我有一個問題,當生成報告圖表,問題是,圖表重複問題用的JasperReport

EXP如果我有在X軸5層的元件,該圖表將被重複5次

我的報告:

<?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="BarChartproject" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
<parameter name="SQL" class="java.lang.String"> 
    <defaultValueExpression><![CDATA[]]></defaultValueExpression> 
</parameter> 
<queryString> 
    <![CDATA[$P!{SQL}]]> 
</queryString> 
<field name="nb" class="java.lang.Long"/> 
<field name="priority" class="java.lang.String"/> 
<field name="project" class="java.lang.String"/> 
<background> 
    <band splitType="Stretch"/> 
</background> 
<title> 
    <band height="79" splitType="Stretch"/> 
</title> 
<pageHeader> 
    <band height="35" splitType="Stretch"/> 
</pageHeader> 
<columnHeader> 
    <band height="18" splitType="Stretch"/> 
</columnHeader> 
<detail> 
    <band height="178" splitType="Stretch"> 
     <stackedBar3DChart> 
      <chart> 
       <reportElement x="70" y="21" width="363" height="132"/> 
       <chartTitle/> 
       <chartSubtitle/> 
       <chartLegend/> 
      </chart> 
      <categoryDataset> 
       <categorySeries> 
        <seriesExpression><![CDATA[$F{project}]]></seriesExpression> 
        <categoryExpression><![CDATA[$F{project}]]></categoryExpression> 
        <valueExpression><![CDATA[$F{nb}]]></valueExpression> 
       </categorySeries> 
      </categoryDataset> 
      <bar3DPlot> 
       <plot/> 
       <itemLabel color="#000000" backgroundColor="#FFFFFF"/> 
       <categoryAxisFormat> 
        <axisFormat> 
         <labelFont/> 
         <tickLabelFont/> 
        </axisFormat> 
       </categoryAxisFormat> 
       <valueAxisFormat> 
        <axisFormat> 
         <labelFont/> 
         <tickLabelFont/> 
        </axisFormat> 
       </valueAxisFormat> 
      </bar3DPlot> 
     </stackedBar3DChart> 
    </band> 
</detail> 
<columnFooter> 
    <band height="45" splitType="Stretch"/> 
</columnFooter> 
<pageFooter> 
    <band height="54" splitType="Stretch"/> 
</pageFooter> 
<summary> 
    <band height="42" splitType="Stretch"/> 
</summary> 

我的代碼:

public String ConstructSQL() 
{ 
System.out.println("status------"+this.getMyChoiceStatus()); 
System.out.println("chartssssssssss------"+this.getChartType()); 
for(int i=0;i<checkbox.length;i++) 
{ 
    if (checkbox[i].equals("1")) 
    { 
     System.out.println("priority checked"); 
     select ="select count(jiraissue.id) as nb ,jiraissue.priority,jiraissue.project,jiraissue.issuestatus"; 
     from =" from jiraissue,issuestatus"; 
     where =" where issuestatus.id=jiraissue.issuestatus"; 
     and =" and issuestatus.pname ="+"'"+this.getMyChoiceStatus()+"'"; 
     groupBy=" group by jiraissue.priority"; 
     sql =select+from+where+and+groupBy+" ;"; 
     System.out.println("SQL report------"+this.sql); 

     return sql; 

     } 
     else 
    { 

    if (checkbox[i].equals("2")) 
    { 
     System.out.println("project checked"); 
     select ="select count(jiraissue.id) as nb ,jiraissue.project,jiraissue.priority,jiraissue.issuestatus"; 
     from =" from jiraissue,issuestatus"; 
     where =" where issuestatus.id=jiraissue.issuestatus"; 
     and =" and issuestatus.pname ="+"'"+this.getMyChoiceStatus()+"'"; 
     groupBy=" group by jiraissue.project"; 
     sql =select+from+where+and+groupBy+" ;"; 

     System.out.println("SQL report------"+this.sql); 

     return sql; 

    } 
    } 

} 
return sql; 
} 


public void fillReport() 
{ 

try { 
      // - Connexion à la base 

      Driver monDriver = new com.mysql.jdbc.Driver(); 
      DriverManager.registerDriver(monDriver); 
      connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/jiradb", "",""); 

      // - Chargement et compilation du rapport 
      JasperDesign jasperDesign = JRXmlLoader.load("C:/Documents and Settings/My Documents/NetBeansProjects/JiraMap/src/java/Reports/"+chartType+chartGrouping()+".jrxml"); 
      JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 
Map parameterMap = new HashMap(); 
parameterMap.put("SQL",ConstructSQL()); 

      // // - Execution du rapport 
      JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameterMap, connection); 

      // - Création du rapport au format PDF 
      JasperExportManager.exportReportToPdfFile(jasperPrint, "C:/Documents and Settings/My Documents/NetBeansProjects/JiraMap/src/java/Reports/"+chartType+chartGrouping()+".pdf"); 
       // JasperViewer.viewReport(jasperPrint); 


     } 

回答

1

我認爲這裏的問題(你最有可能在7個月前就已經發現了這個問題),那就是你已經把圖表放到了'細節'區域。您將爲每個返回的元素(即查詢中的數據行)重複詳細信息區域。

您應該將圖表放置在頁面上的「標題」區域或其他「非重複」區域中。