2017-03-27 12 views
-1

JRResultSetDataSourceオブジェクトを使用してJavaコードによって読み込まれる1つのテーブルを持つ簡単なJasperレポートを作成しようとしています。しかし、私はテーブルコンポーネントに値を渡すことができません。Jasper JRResultSetDataSourceからテーブルコンポーネントにデータを設定する方法を報告します

解決策として、パラメータリストまたはJRBeanCollectionDataSourceを探していません。

マイレポートjrxml:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1 --> 
<!-- 2017-03-27T17:04:35 --> 
<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="tab1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="8a63304f-05d6-485c-82e7-5591159f68fb"> 
    <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="Empty Dataset1" uuid="be9c1aa9-031c-4232-a9f2-cdcb0a5bd17d"> 
     <field name="MONTH" class="java.lang.Integer"/> 
     <field name="YEAR" class="java.lang.Integer"/> 
     <field name="COUNT" class="java.lang.Integer"/> 
    </subDataset> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <field name="MONTH" class="java.lang.Integer"/> 
    <field name="YEAR" class="java.lang.Integer"/> 
    <field name="COUNT" class="java.lang.Integer"/> 
    <background> 
     <band splitType="Stretch"/> 
    </background> 
    <title> 
     <band height="79" splitType="Stretch"/> 
    </title> 
    <pageHeader> 
     <band height="35" splitType="Stretch"/> 
    </pageHeader> 
    <columnHeader> 
     <band height="61" splitType="Stretch"/> 
    </columnHeader> 
    <detail> 
     <band height="360" splitType="Stretch"> 
      <componentElement> 
       <reportElement x="0" y="0" width="200" height="200" uuid="684e26d7-94cf-49cc-874d-104e29444537"> 
        <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"/> 
        <property name="net.sf.jasperreports.export.headertoolbar.table.name" value=""/> 
       </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" whenNoDataType="Blank"> 
        <datasetRun subDataset="Empty Dataset1" uuid="0baea769-1082-4618-9eee-520f59145c07"> 
         <connectionExpression><![CDATA[]]></connectionExpression> 
        </datasetRun> 
        <jr:column width="60" uuid="ba2a25da-f872-4a99-8703-9e6e15fc988a"> 
         <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/> 
         <jr:tableHeader style="Table_TH" height="30" rowSpan="1"> 
          <staticText> 
           <reportElement x="0" y="0" width="60" height="30" uuid="a4bbf819-044c-47ff-bff0-627859b51444"/> 
           <text><![CDATA[MONTH]]></text> 
          </staticText> 
         </jr:tableHeader> 
         <jr:tableFooter style="Table_TH" height="30" rowSpan="1"/> 
         <jr:columnHeader style="Table_CH" height="30" rowSpan="1"/> 
         <jr:columnFooter style="Table_CH" height="30" rowSpan="1"/> 
         <jr:detailCell style="Table_TD" height="30"> 
          <textField> 
           <reportElement x="0" y="0" width="60" height="30" uuid="91cd6b4f-f09b-4c08-8fe7-0645468bd1cc"/> 
           <textFieldExpression><![CDATA[$F{MONTH}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="70" uuid="80e850bb-b112-4b53-aa44-f9fca76710b4"> 
         <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/> 
         <jr:tableHeader style="Table_TH" height="30" rowSpan="1"> 
          <staticText> 
           <reportElement x="0" y="0" width="70" height="30" uuid="86e7d6fb-ee79-4c11-8e3d-99b59832b978"/> 
           <text><![CDATA[YEAR]]></text> 
          </staticText> 
         </jr:tableHeader> 
         <jr:tableFooter style="Table_TH" height="30" rowSpan="1"/> 
         <jr:columnHeader style="Table_CH" height="30" rowSpan="1"/> 
         <jr:columnFooter style="Table_CH" height="30" rowSpan="1"/> 
         <jr:detailCell style="Table_TD" height="30"> 
          <textField> 
           <reportElement x="0" y="0" width="70" height="30" uuid="39a27fc4-79d6-4ff8-aae0-ff67ac43bd09"/> 
           <textFieldExpression><![CDATA[$F{YEAR}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="70" uuid="57949a99-6a7c-4911-b01c-1db16d3963bd"> 
         <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/> 
         <jr:tableHeader style="Table_TH" height="30" rowSpan="1"> 
          <staticText> 
           <reportElement x="0" y="0" width="70" height="30" uuid="cddf1b17-b113-4cc5-a95c-395f59d96181"/> 
           <text><![CDATA[COUNT]]></text> 
          </staticText> 
         </jr:tableHeader> 
         <jr:tableFooter style="Table_TH" height="30" rowSpan="1"/> 
         <jr:columnHeader style="Table_CH" height="30" rowSpan="1"/> 
         <jr:columnFooter style="Table_CH" height="30" rowSpan="1"/> 
         <jr:detailCell style="Table_TD" height="30"> 
          <textField> 
           <reportElement x="0" y="0" width="70" height="30" uuid="fefdadb9-d47e-45b5-9aa4-346c53ce0441"/> 
           <textFieldExpression><![CDATA[$F{COUNT}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
       </jr:table> 
      </componentElement> 
     </band> 
     <band height="50"/> 
    </detail> 
    <columnFooter> 
     <band height="45" splitType="Stretch"/> 
    </columnFooter> 
    <pageFooter> 
     <band height="54" splitType="Stretch"/> 
    </pageFooter> 
    <summary> 
     <band height="42" splitType="Stretch"/> 
    </summary> 
</jasperReport> 

私のJavaコードスニペット:

resultSet = statement.executeQuery(query); 

if(resultSet != null && reportStream !=null) 
{    
JRResultSetDataSource jrr = new JRResultSetDataSource(resultSet); 
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream,new HashMap(),jrr); 
} 

をこれまでのところ、私は表コンポーネントを使用いけない場合、単に置く代わりに、レポート上のデータを一覧表示することができていますレポートのフィールド。 しかし、それは別のデータソースと対応するフィールドコンポーネントを持っているので、テーブルコンポーネント内のデータをプッシュする方法を見つけることができません。

可能な場合でもデータソースを使用してテーブルデータにデータを取り込む方法はありますか? 誰かが私に例を挙げたり、例を教えてもらえますか?

あなたはこのような何かする必要があるおかげで、
Vishalendu

+0

でJRXML

<subDataset name="Empty Dataset1" ...> ... </subDataset> <parameter name="TableDataSource" class="net.sf.jasperreports.engine.JRDataSource"/> ... <jr:table ...> <datasetRun subDataset="Empty Dataset1" ...> <dataSourceExpression><![CDATA[$P{TableDataSource}]]></dataSourceExpression> </datasetRun> ... 

は多分これが便利ですhttp:// stackoverflow.com/questions/11018651/can-i-use-data-from-jtable-for-my-jasper -report –

答えて

1

:Javaの

JRResultSetDataSource jrr = new JRResultSetDataSource(resultSet); 
Map params = new HashMap(); 
params.put("TableDataSource", jrr); 
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, params, new JREmptyDataSource()); 
+0

JasperRunManager.runReportToPdfStream()メソッドにHashMapを追加してjrxmlを変更し(更新した.jasperを生成した後)、ClassCastExceptionを取得しています。java.lang.ClassCastException:javaと互換性のないnet.sf.jasperreports.engine.JRResultSetDataSource .sql.Connection。あなたのHashMapを削除すると、テーブルは空白になりますが、エラーはありません。 (完全なスタックトレースはこちら:https://pastebin.com/yAsnsNiN) – Vishalendu

+0

変更されたJRXMLとfill例外stracktraceを投稿してください。 PS:あなたの変更と例外スタックトレースを見ることなく私が作ってくれる野生の推測は、の代わりに<![CDATA [$ P {TableDataSource}]]>あなたのJRXMLの[CDATA [$ P {TableDataSource}]]> dada67

+0

ありがとうございました。私はあなたが上で説明したのと同じ過ちをした。この解決策は機能します。もう一つの質問があります。レポートデザイナーを使用する方法があると思いますが、このソリューションは手作業ではなく実現することができますか? – Vishalendu

関連する問題