Soy bastante nuevo en JasperReports y necesito crear un informe a partir de una fuente de datos personalizada. Para esto implementé la interfaz JRDataSource, con los dos métodos:

public class FacultyStudentsDS implements JRDataSource {

    @Override
    public Object getFieldValue(JRField field) throws JRException {
        ...
    }

    @Override
    public boolean next() throws JRException {
        ...
    }
}

Luego trato de crear un documento PDF, de esta manera:

pdf = JasperRunManager.runReportToPdf(reportFile.getAbsolutePath(),
new HashMap(), studentsDS);

Mi problema es que no sé cómo acceder a los datos que paso al informe. No tengo idea de qué escribir en el archivo .jrxml . ¿Cómo accedo a la variable studentsDS que paso al informe, en el archivo .jrxml ?

0
Alina Danila 30 nov. 2011 a las 03:07

1 respuesta

La mejor respuesta

Debes tener una banda <detail>. Luego, dentro de esa banda, puede acceder a los campos desde la fuente de datos usando algo como lo siguiente:

<textFieldExpression class="java.lang.String"><![CDATA[$F{dataSourceField}]]></textFieldExpression>

Según sus necesidades, es posible que no necesite crear su propia fuente de datos personalizada. Envolviendo un Collection de Java beans en un JRBeanCollectionDataSource puede acceder a las propiedades de los beans de Java en esa colección usando la sintaxis $F{ anterior.

1
laz 30 nov. 2011 a las 04:56
¡Gracias! Parece que es muy sencillo.
 – 
Alina Danila
30 nov. 2011 a las 05:22