2011-12-28 2 views
3

Мне нужно несколько запросов в моем отчете, поэтому я добавил новый набор данных. Проблема в том, что я не могу использовать поля нового набора данных в своем отчете, ошибка: поле не существует.iReport, как печатать поля разных таблиц

Итак, как я могу иметь несколько запросов в своем отчете (чтобы печатать поля из разных таблиц), не создавая подзаголовок для каждого поля?

Спасибо.

+0

Вы можете увидеть ответ @GenericJon для [этого вопроса] (http://stackoverflow.com/q/7482412/876298) –

ответ

1

К сожалению, это не то, как работает iReport. Вам нужно собрать все данные в один набор данных, чтобы использовать поля рядом друг с другом. Подробный ответ @ GenericJon на использование datasetRun, где ваши поля используются в качестве входных параметров для определения другого набора данных.

Если вы действительно хотите, чтобы параметры могли использоваться для передачи поля для вывода в наборе данных Run. Это выводит Dataset1> Field1/Dataset2> Field2.

<subDataset name="TotalUsers"> 
    <parameter name="Users" class="java.lang.Integer" isForPrompting="false"/> 
    <parameter name="Date" class="java.util.Date" isForPrompting="false"/> 
    <queryString language="SQL"> 
     <![CDATA[CALL GetTotalUsersAtDate($P{Date})]]> 
    </queryString> 
    <field name="TotalUsers" class="java.lang.Long"/> 
</subDataset> 
... 

<componentElement> 
    <reportElement x="0" y="78" width="555" height="16"/> 
    <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical"> 
     <datasetRun subDataset="TotalUsers"> 
      <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression> 
      <datasetParameter name="Users"> 
       <datasetParameterExpression><![CDATA[$F{MusicSubscribers}]]></datasetParameterExpression> 
      </datasetParameter> 
      <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
     </datasetRun> 
     <jr:listContents height="16" width="555"> 
      <textField pattern="#,##0.00 %" isBlankWhenNull="true"> 
       <reportElement style="table_TD" x="475" y="0" width="80" height="16"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{Users}.doubleValue()/$F{TotalUsers}.doubleValue()]]></textFieldExpression> 
      </textField> 
      <staticText> 
       <reportElement style="table_TD" x="0" y="0" width="475" height="16"/> 
       <textElement textAlignment="Left" markup="none"/> 
       <text><![CDATA[Proportion of total users]]></text> 
      </staticText> 
     </jr:listContents> 
    </jr:list> 
</componentElement> 

Я хотел бы пойти дальше, чтобы предложить вам сделать как можно больше математики и упорядоченной внешней иРепорт тоже, то есть использование хранимых процедур, если источник данных представляет собой базу данных.

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