2012-03-05 10 views
6

Tôi đang cố gắng tạo báo cáo với Jasper iReport 4.5 và tôi đang sử dụng bảng để hiển thị một số dữ liệu. Bảng được điền bởi một truy vấn và khi tôi kiểm tra bản xem trước của truy vấn trong Trình soạn thảo truy vấn, tôi nhận được chính xác kết quả mà tôi muốn. Nhưng khi tôi cố gắng tạo bản xem trước của báo cáo, tất cả những gì tôi nhận được là "Tài liệu không có trang". Ngay cả văn bản tĩnh trong tiêu đề bảng cũng không được hiển thị.Bảng Jasper iReport trả về tài liệu trống mặc dù truy vấn hoạt động

Đây là XML của báo cáo, nhưng không có truy vấn:

<?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="subReportTextManualCustomerRating" pageWidth="500" pageHeight="842" columnWidth="460" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <property name="ireport.zoom" value="1.4641000000000008"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <style name="table"> 
     <box> 
      <pen lineWidth="1.0" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table_TH" mode="Opaque" backcolor="#F0F8FF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table_CH" mode="Opaque" backcolor="#BFE1FF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table_TD" mode="Opaque" backcolor="#FFFFFF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table 1"> 
     <box> 
      <pen lineWidth="1.0" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table 1_TH" mode="Opaque" backcolor="#FFFFFF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table 1_CH" mode="Opaque" backcolor="#FFBFBF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="table 1_TD" mode="Opaque" backcolor="#FFFFFF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <subDataset name="CustomerType"> 
     <parameter name="TEXT_MANUAL_OID" class="java.lang.String"/> 
     <queryString> 
     </queryString> 
     <field name="Anzahl" class="java.lang.Long"/> 
     <field name="Typ" class="java.lang.String"/> 
     <field name="Bezeichnung" class="java.lang.String"/> 
    </subDataset> 
    <parameter name="TEXT_MANUAL_OID" class="java.lang.String"/> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <summary> 
     <band height="143"> 
      <componentElement> 
       <reportElement key="table 1" style="table 1" x="0" y="0" width="460" height="143"/> 
       <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="CustomerType"> 
         <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
        </datasetRun> 
        <jr:column width="90"> 
         <jr:tableHeader style="table 1_TH" height="30"> 
          <staticText> 
           <reportElement x="0" y="0" width="90" height="30"/> 
           <textElement/> 
           <text><![CDATA[Kontakt Typen]]></text> 
          </staticText> 
         </jr:tableHeader> 
         <jr:detailCell style="table 1_TD" height="20"> 
          <textField> 
           <reportElement x="0" y="0" width="90" height="20"/> 
           <textElement/> 
           <textFieldExpression><![CDATA[$F{Typ}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="90"> 
         <jr:tableHeader style="table 1_TH" height="30"> 
          <staticText> 
           <reportElement x="0" y="0" width="90" height="30"/> 
           <textElement/> 
           <text><![CDATA[Ergebniserklärung]]></text> 
          </staticText> 
         </jr:tableHeader> 
         <jr:detailCell style="table 1_TD" height="20"> 
          <textField> 
           <reportElement x="0" y="0" width="90" height="20"/> 
           <textElement/> 
           <textFieldExpression><![CDATA[$F{Bezeichnung}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="90"> 
         <jr:tableHeader style="table 1_TH" height="30"> 
          <staticText> 
           <reportElement x="0" y="0" width="90" height="30"/> 
           <textElement/> 
           <text><![CDATA[Anzahl der Kontakte]]></text> 
          </staticText> 
         </jr:tableHeader> 
         <jr:detailCell style="table 1_TD" height="20"> 
          <textField> 
           <reportElement x="0" y="0" width="90" height="20"/> 
           <textElement/> 
           <textFieldExpression><![CDATA[$F{Anzahl}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
       </jr:table> 
      </componentElement> 
     </band> 
    </summary> 
</jasperReport> 
+1

Bạn đã tạo nguồn dữ liệu cho báo cáo? Bạn nên đặt nguồn dữ liệu có liên quan là hoạt động (trong 'iReport'). Bạn đang sử dụng nguồn dữ liệu nào (xml hoặc cái gì khác)? –

+0

Có, tôi có nguồn dữ liệu hợp lệ và tôi đặt bảng để sử dụng nguồn dữ liệu báo cáo chính –

+1

Ok, tôi vừa phát hiện ra nó là gì. Tôi đã phải tạo một truy vấn cho báo cáo chính, mặc dù tôi không sử dụng nó ở bất cứ đâu trong báo cáo này. Vì vậy, tôi chỉ cần thêm chọn 1 làm dummy_field làm truy vấn cho báo cáo chính và giờ bảng hiển thị dữ liệu tôi muốn. Đáng buồn thay, tôi chỉ có thể trả lời câu hỏi của riêng mình sau 7 giờ vì tài khoản của tôi mới. –

Trả lời

5

Ok, tôi vừa phát hiện ra đó là gì. Tôi đã phải tạo một truy vấn cho báo cáo chính, mặc dù tôi không sử dụng nó ở bất cứ đâu trong báo cáo này. Vì vậy, tôi vừa thêm "select 1 as dummy_field" làm truy vấn cho báo cáo chính, và bây giờ bảng hiển thị dữ liệu tôi muốn.

5

Có một phương pháp khác.

Thực hiện theo bên dưới bước

  1. Bấm vào tên báo cáo chính
  2. chọn tên tài sản: khi không có kiểu dữ liệu
  3. chọn giá trị tài sản: tất cả các phần không chi tiết

Bằng việc sử dụng này có không cần thêm sql giả.

1

Trong trường hợp của tôi, tôi đã cung cấp nguồn dữ liệu rỗng và vấn đề giải quyết

JasperPrint jasperPrint = JasperFillManager.fillReport(path,null, new JREmptyDataSource());