Заголовки и детали из таблиц базы данных - PullRequest
0 голосов
/ 12 января 2012

Мне нужен редактор для создания некоторых отчетов, все отчеты имеют заголовок (название компании, адрес, телефон, изображение), который читается из таблицы, называемой компаниями, и содержит подробный пример всех клиентов компании.

Как я могу сделать это в iReports?

Есть ли способ связать две таблицы (компания и клиент) в моем отчете?потому что «запрос отчета» позволяет мне только предложение.

Я работаю с Java Swing и базой данных MySql.

Спасибо за ваши полезные комментарии.

Report example

1 Ответ

1 голос
/ 12 января 2012

Мне нужен редактор для создания некоторых отчетов, все отчеты имеют заголовок (название компании, адрес, телефон, изображение), который читается из таблицы, называемой компаниями, и содержит подробный пример, например, всех клиентов компании.Как я могу сделать это в iReports?

Вы можете посмотреть это образцы .Дистрибутив JasperReports содержит множество других примеров (в папке % jasperreports% \ demo \ samples ). iReport также содержит несколько образцов в папке % iReport% \ ireport \ samples .

Ваш пример отчета очень прост.

Этапы создания такого отчета могут быть такими:

  1. Добавление image элемента (с логотипом компании) и нескольких (или одного) staticText элементов (с контактной информацией компании) в полосу Title .
  2. Добавление запроса (для получения данных из MySQL DB) с полями ()idClient , name , address в вашем образце)
  3. Добавление staticText элементов с заголовком столбцов в заголовок столбца band - это будет заголовок столбцов для сетки данных
  4. Добавление textField элементов с полями в Detail band - это будут данные в сетке

Вы должны прочитать Руководство по JasperReports Ultimate .Это отличный учебник.

Пример файла jrxml (разработан в iReport ):

<?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="sample_company" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <queryString>
        <![CDATA[SELECT idClient, name, address FROM customers_table]]>
    </queryString>
    <field name="idClient" class="java.lang.Integer"/>
    <field name="name" class="java.lang.String"/>
    <field name="address" class="java.lang.String"/>
    <title>
        <band height="108" splitType="Stretch">
            <staticText>
                <reportElement x="171" y="53" width="183" height="55"/>
                <textElement textAlignment="Center" verticalAlignment="Middle" markup="styled"/>
                <text><![CDATA[<style isBold="true" forecolor="blue">ABC COMPANY</style>
Main Avenue and 9th Street
Tel: (593)  4 - 2066765
e-mail: info@abc.com]]></text>
            </staticText>
            <image>
                <reportElement x="245" y="3" width="41" height="50"/>
                <imageExpression><![CDATA["abc_logo.png"]]></imageExpression>
            </image>
        </band>
    </title>
    <columnHeader>
        <band height="20">
            <staticText>
                <reportElement x="11" y="0" width="160" height="20"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Id Client]]></text>
            </staticText>
            <staticText>
                <reportElement x="171" y="0" width="183" height="20"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Name]]></text>
            </staticText>
            <staticText>
                <reportElement x="354" y="0" width="172" height="20"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Address]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="11" y="0" width="160" height="20"/>
                <box leftPadding="10"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{idClient}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="354" y="0" width="172" height="20"/>
                <box leftPadding="10"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="171" y="0" width="183" height="20"/>
                <box leftPadding="10"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{address}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

Результат будет (отчетэкспортируется в pdf формат):

The report in PDF format

ОБНОВЛЕНИЕ:

Для заполнения заголовкас информацией о компании вы можете использовать диапазон Group .Вы можете прочитать информацию о группах здесь .

Ваш запрос будет выглядеть следующим образом:

SELECT c.idClient, c.name, c.address, cmp.name AS companyName, cmp.contactInfo, cmp.id AS idCompany FROM customers c, companies cmp WHERE cmp.id=c.idCompany SORT BY cmp.id

Вы также должны добавить поля отчета для данныхиз таблицы companies (например, companies.name, companies.contactInfo, companies.id):

    <field name="companyName" class="java.lang.String"/>
    <field name="contactInfo" class="java.lang.String"/>
    <field name="idCompany" class="java.lang.String"/>

После этого необходимо добавить группу с помощью idCompany (уникальный ключ из таблицы companies).Затем поместите элементы textField с полями (companyName, contactInfo) в группу Group .

...