Jump to content

Reports against JavaObjects/XML


Recommended Posts

By: David W. Streever - dstreev

Reports against JavaObjects/XML

2003-09-16 14:32

Is it possible to use JavaObject and/or XML as the datasource for filling JasperReports?

 

 

 

By: Daryl Jackson - dkjjr

Subreports - possible bug?

2003-06-13 09:22

I have a quick sample, below, that dynamically produces .jasper files much the same as our application. When run, the sample will product two PDFs. The first shows that there is enough space on a page for two subreports (C1 & C2). The second shows the problems I am having. I am trying to specify that subreport C1 should begin on a new page, but this does not appear to be happening. Also, the subreports are being re-orded from how I am placing them. I am using JasperReports-0.4.6 and I am trying to get a report that looks like:

 

Master detail

Subreport A

Subreport B

-- page break

Subreport C1

Subreport C2

-- page break

Subreport C1

Subreport C2

-- page break

Subreport C1

-- page break

Subreport C1

Subreport C2

-- page break

Subreport D

 

Am I doing something wrong?

 

Column.java:

 

public class Column

{ private int dataPosition, labelPosition;

 

public Column(int labelPosition, int dataPosition)

{

 

this.dataPosition = dataPosition;

this.labelPosition = labelPosition;

return;

}

 

 

 

/*

Getters & setters:

*/

public int getDataPosition() { return(dataPosition); }

public int getLabelPosition() { return(labelPosition); }

}

 

 

Report.java:

 

public class Report

{ private dori.jasper.engine.design.JRDesignReportFont boldFont, italicFont, normalFont;

private dori.jasper.engine.design.JasperDesign jasperDesign;

private int pageColumnWidth, rowHeight, rowSpacing;

 

public Report(int marginTop, int marginBottom, int pageColumnWidth, int rowHeight, int rowSpacing) throws dori.jasper.engine.JRException

{

 

this.pageColumnWidth = pageColumnWidth;

this.rowHeight = rowHeight;

this.rowSpacing = rowSpacing;

 

// Create common fonts:

normalFont = new dori.jasper.engine.design.JRDesignReportFont();

normalFont.setName("Arial_Normal");

normalFont.setDefault(true);

normalFont.setFontName("Arial");

normalFont.setSize(10);

normalFont.setPdfFontName("Helvetica");

normalFont.setPdfEncoding("Cp1252");

normalFont.setPdfEmbedded(false);

 

boldFont = new dori.jasper.engine.design.JRDesignReportFont();

boldFont.setName("Arial_Bold");

boldFont.setDefault(false);

boldFont.setFontName("Arial");

boldFont.setSize(10);

boldFont.setBold(true);

boldFont.setPdfFontName("Helvetica-Bold");

boldFont.setPdfEncoding("Cp1252");

boldFont.setPdfEmbedded(false);

 

italicFont = new dori.jasper.engine.design.JRDesignReportFont();

italicFont.setName("Arial_Italic");

italicFont.setDefault(false);

italicFont.setFontName("Arial");

italicFont.setSize(10);

italicFont.setItalic(true);

italicFont.setPdfFontName("Helvetica-Oblique");

italicFont.setPdfEncoding("Cp1252");

italicFont.setPdfEmbedded(false);

 

// Initialize the report design:

jasperDesign = new dori.jasper.engine.design.JasperDesign();

jasperDesign.setName("tmp");

jasperDesign.setOrientation(dori.jasper.engine.JRReport.ORIENTATION_LANDSCAPE);

jasperDesign.setPageWidth(842);

jasperDesign.setPageHeight(595);

jasperDesign.setColumnSpacing(0);

jasperDesign.setLeftMargin((842 - pageColumnWidth) / 2);

jasperDesign.setRightMargin((842 - pageColumnWidth) / 2);

jasperDesign.setTopMargin(marginTop);

jasperDesign.setBottomMargin(marginBottom);

jasperDesign.setColumnWidth(pageColumnWidth);

jasperDesign.addFont(normalFont);

jasperDesign.addFont(boldFont);

jasperDesign.addFont(italicFont);

return;

}

 

 

 

public void addDetailBand(dori.jasper.engine.design.JRDesignBand band, boolean forceNewPage) throws dori.jasper.engine.JRException

{

 

if (forceNewPage)

{ dori.jasper.engine.design.JRDesignGroup group = new dori.jasper.engine.design.JRDesignGroup();

 

group.setName("dummy");

group.setStartNewPage(true);

group.setGroupHeader(band);

jasperDesign.addGroup(group);

jasperDesign.setTitleNewPage(true);

}

else

jasperDesign.setDetail(band);

return;

}

 

public void addDetailColumns(dori.jasper.engine.design.JRDesignBand band, java.util.List columns, int dataFields)

{ dori.jasper.engine.design.JRDesignRectangle rectangle;

dori.jasper.engine.design.JRDesignStaticText staticText;

Column column;

int col = 1, extraFields, fieldCount = 1, fieldsPerColumn, row = band.getHeight() + 1, startRow = row;

 

/*

How many fields per column will we print - take into account the fact that there may not be the same number

of fields for each column (extraFields):

*/

extraFields = (dataFields % columns.size());

fieldsPerColumn = (dataFields / columns.size());

 

/*

Working from top of the page towards the bottom, from left column to right, display all fields:

*/

column = (Column) columns.get(0);

 

for (int x = 0; x < dataFields; x++)

{ // Field label:

staticText = new dori.jasper.engine.design.JRDesignStaticText();

staticText.setX(column.getLabelPosition());

staticText.setY(row);

staticText.setWidth(40);

staticText.setHeight(rowHeight);

staticText.setTextAlignment(dori.jasper.engine.JRTextElement.TEXT_ALIGN_LEFT);

staticText.setFont(boldFont);

staticText.setText("Label");

band.addElement(staticText);

 

// Field data rectangle:

rectangle = new dori.jasper.engine.design.JRDesignRectangle();

rectangle.setX(column.getDataPosition() - 1);

rectangle.setY(row);

rectangle.setWidth(82);

rectangle.setHeight(rowHeight);

rectangle.setBackcolor(new java.awt.Color(0xEA, 0xEC, 0xEF));

rectangle.setPen(dori.jasper.engine.JRGraphicElement.PEN_NONE);

rectangle.setStretchType(dori.jasper.engine.JRGraphicElement.STRETCH_TYPE_NO_STRETCH);

band.addElement(rectangle);

 

// Field data:

staticText = new dori.jasper.engine.design.JRDesignStaticText();

staticText.setX(column.getDataPosition());

staticText.setY(row);

staticText.setWidth(80);

staticText.setHeight(rowHeight);

staticText.setTextAlignment(dori.jasper.engine.JRTextElement.TEXT_ALIGN_LEFT);

staticText.setFont(normalFont);

staticText.setText("Data item " + (x + 1));

band.addElement(staticText);

 

if (++fieldCount > (fieldsPerColumn + ((extraFields > 0) ? 1 : 0)))

{ --extraFields;

if (col < columns.size())

column = (Column) columns.get(col);

++col;

row = startRow;

fieldCount = 1;

}

else

row += rowHeight + rowSpacing;

}

 

// Position end row below the longest column:

row = (rowHeight + rowSpacing) * (fieldsPerColumn + (((dataFields % columns.size()) > 0) ? 1 : 0)) + startRow + 5;

band.setHeight(row);

return;

}

 

public void addDetailTable(dori.jasper.engine.design.JRDesignBand band, java.util.List fields, int dataRows)

{ dori.jasper.engine.design.JRDesignStaticText staticText;

dori.jasper.engine.design.JRDesignRectangle rectangle;

int row = band.getHeight() + 1, width;

 

// Header rectangle:

width = 2;

 

for (int x = 0; x < fields.size(); x++)

width += ((TableField) fields.get(x)).getWidth();

 

rectangle = new dori.jasper.engine.design.JRDesignRectangle();

rectangle.setX(((TableField) fields.get(0)).getStartColumn() - 1);

rectangle.setY(row);

rectangle.setWidth(width);

rectangle.setHeight(rowHeight);

rectangle.setBackcolor(new java.awt.Color(0x33, 0x33, 0x33));

rectangle.setPen(dori.jasper.engine.JRGraphicElement.PEN_NONE);

rectangle.setStretchType(dori.jasper.engine.JRGraphicElement.STRETCH_TYPE_NO_STRETCH);

band.addElement(rectangle);

 

// Print the table column headers:

for (int x = 0; x < fields.size(); x++)

{ TableField field = (TableField) fields.get(x);

 

staticText = new dori.jasper.engine.design.JRDesignStaticText();

staticText.setX(field.getStartColumn());

staticText.setY(row);

staticText.setWidth(field.getWidth());

staticText.setHeight(rowHeight);

staticText.setTextAlignment(dori.jasper.engine.JRTextElement.TEXT_ALIGN_LEFT);

staticText.setForecolor(new java.awt.Color(0xFF, 0xFF, 0xFF));

staticText.setFont(boldFont);

staticText.setText(field.getName());

band.addElement(staticText);

}

 

row += rowHeight + rowSpacing;

 

// Print the data rows:

for (int x = 0; x < dataRows; x++)

{ if (((x + 1) % 2) == 0)

{ rectangle = new dori.jasper.engine.design.JRDesignRectangle();

rectangle.setX(((TableField) fields.get(0)).getStartColumn() - 1);

rectangle.setY(row);

rectangle.setWidth(width);

rectangle.setHeight(rowHeight);

rectangle.setBackcolor(new java.awt.Color(0xEA, 0xEC, 0xEF));

rectangle.setPen(dori.jasper.engine.JRGraphicElement.PEN_NONE);

rectangle.setStretchType(dori.jasper.engine.JRGraphicElement.STRETCH_TYPE_NO_STRETCH);

band.addElement(rectangle);

}

 

for (int y = 0; y < fields.size(); y++)

{ TableField field = (TableField) fields.get(y);

 

staticText = new dori.jasper.engine.design.JRDesignStaticText();

staticText.setX(field.getStartColumn());

staticText.setY(row);

staticText.setWidth(field.getWidth());

staticText.setHeight(rowHeight);

staticText.setTextAlignment(dori.jasper.engine.JRTextElement.TEXT_ALIGN_LEFT);

staticText.setFont(normalFont);

staticText.setText(field.getData());

band.addElement(staticText);

}

 

row += rowHeight + rowSpacing;

}

 

band.setHeight(row + 3);

return;

}

 

public void addPageFooter()

{ dori.jasper.engine.design.JRDesignBand band = new dori.jasper.engine.design.JRDesignBand();

dori.jasper.engine.design.JRDesignExpression expression;

dori.jasper.engine.design.JRDesignLine line;

dori.jasper.engine.design.JRDesignTextField textField;

 

band.setHeight(14);

 

line = new dori.jasper.engine.design.JRDesignLine();

line.setX(0);

line.setY(0);

line.setWidth(pageColumnWidth);

line.setHeight(0);

band.addElement(line);

 

textField = new dori.jasper.engine.design.JRDesignTextField();

textField.setX(0);

textField.setY(1);

textField.setWidth(80);

textField.setHeight(12);

textField.setTextAlignment(dori.jasper.engine.JRTextElement.TEXT_ALIGN_RIGHT);

textField.setFont(normalFont);

expression = new dori.jasper.engine.design.JRDesignExpression();

expression.setValueClass(java.lang.String.class);

expression.setText(""Page " + String.valueOf($V{PAGE_NUMBER}) + " of"");

textField.setExpression(expression);

band.addElement(textField);

 

textField = new dori.jasper.engine.design.JRDesignTextField();

textField.setX(80);

textField.setY(1);

textField.setWidth(75);

textField.setHeight(12);

textField.setTextAlignment(dori.jasper.engine.JRTextElement.TEXT_ALIGN_LEFT);

textField.setFont(normalFont);

textField.setEvaluationTime(dori.jasper.engine.JRExpression.EVALUATION_TIME_REPORT);

expression = new dori.jasper.engine.design.JRDesignExpression();

expression.setValueClass(java.lang.String.class);

expression.setText("" " + String.valueOf($V{PAGE_NUMBER})");

textField.setExpression(expression);

band.addElement(textField);

 

jasperDesign.setPageFooter(band);

return;

}

 

public void addSubreport(dori.jasper.engine.design.JRDesignBand band, java.io.File subreportFile)

{ dori.jasper.engine.design.JRDesignExpression expression;

dori.jasper.engine.design.JRDesignSubreport subreport = new dori.jasper.engine.design.JRDesignSubreport();

 

subreport.setX(0);

subreport.setY(band.getHeight());

subreport.setWidth(pageColumnWidth);

subreport.setHeight(1);

subreport.setPositionType(dori.jasper.engine.JRElement.POSITION_TYPE_FLOAT);

subreport.setRemoveLineWhenBlank(true);

expression = new dori.jasper.engine.design.JRDesignExpression();

expression.setValueClass(java.lang.String.class);

expression.setText(""" + subreportFile.getName() + """);

subreport.setExpression(expression);

expression = new dori.jasper.engine.design.JRDesignExpression();

expression.setValueClass(dori.jasper.engine.JRDataSource.class);

expression.setText("new dori.jasper.engine.JREmptyDataSource()");

subreport.setDataSourceExpression(expression);

band.addElement(subreport);

band.setHeight(band.getHeight() + 1);

return;

}

 

public void addSubreportTitle(dori.jasper.engine.design.JRDesignBand band, java.lang.String subreportTitle)

{ dori.jasper.engine.design.JRDesignReportFont tmp = new dori.jasper.engine.design.JRDesignReportFont();

dori.jasper.engine.design.JRDesignStaticText staticText = new dori.jasper.engine.design.JRDesignStaticText();

 

staticText.setX(0);

staticText.setY(0);

staticText.setWidth(pageColumnWidth);

staticText.setHeight(15);

staticText.setTextAlignment(dori.jasper.engine.JRTextElement.TEXT_ALIGN_LEFT);

tmp.setName("Arial_Bold");

tmp.setDefault(false);

tmp.setFontName("Arial");

tmp.setSize(14);

tmp.setBold(true);

tmp.setItalic(true);

tmp.setUnderline(true);

tmp.setPdfFontName("Helvetica-Bold");

tmp.setPdfEncoding("Cp1252");

tmp.setPdfEmbedded(false);

staticText.setFont(tmp);

staticText.setText(subreportTitle);

band.addElement(staticText);

band.setHeight(24);

return;

}

 

public void addTitle(java.lang.String title) throws dori.jasper.engine.JRException

{ dori.jasper.engine.design.JRDesignBand band = new dori.jasper.engine.design.JRDesignBand();

dori.jasper.engine.design.JRDesignExpression expression;

dori.jasper.engine.design.JRDesignImage image;

dori.jasper.engine.design.JRDesignReportFont tmp;

dori.jasper.engine.design.JRDesignStaticText staticText;

 

band.setHeight(45);

 

// Add the report title:

staticText = new dori.jasper.engine.design.JRDesignStaticText();

staticText.setX(0);

staticText.setY(0);

staticText.setWidth(pageColumnWidth);

staticText.setHeight(25);

staticText.setTextAlignment(dori.jasper.engine.JRTextElement.TEXT_ALIGN_CENTER);

tmp = new dori.jasper.engine.design.JRDesignReportFont();

tmp.setName("Arial_Bold");

tmp.setDefault(false);

tmp.setFontName("Arial");

tmp.setSize(22);

tmp.setBold(true);

tmp.setPdfFontName("Helvetica-Bold");

tmp.setPdfEncoding("Cp1252");

tmp.setPdfEmbedded(false);

staticText.setFont(tmp);

staticText.setText(title);

band.addElement(staticText);

 

jasperDesign.setTitle(band);

return;

}

 

public void compileToFile(java.lang.String fileName) throws dori.jasper.engine.JRException

{

 

dori.jasper.engine.JasperCompileManager.compileReportToFile(jasperDesign, fileName);

return;

}

}

 

 

Sample.java:

 

public class Sample

{ public static void main(java.lang.String args[])

{

 

sample1();

sample2();

return;

}

 

private static void sample1()

{ dori.jasper.engine.design.JRDesignBand band;

java.io.File master = new java.io.File("sample1.jasper"), pdf = new java.io.File("sample1.pdf");

java.util.List subreports = new java.util.ArrayList(0);

Report report;

 

try

{ // Create some subreports:

subreports.add(subreportC1(1, false));

subreports.add(subreportC2(1));

 

band = new dori.jasper.engine.design.JRDesignBand();

 

// Create the master design:

report = new Report(10, 10, 822, 15, 4);

report.addTitle("Report C1");

 

for (int x = 0; x < subreports.size(); x++)

report.addSubreport(band, (java.io.File) subreports.get(x));

 

report.addDetailBand(band, false);

report.addPageFooter();

report.compileToFile(master.getName());

 

// Create a PDF:

dori.jasper.engine.JasperRunManager.runReportToPdfFile(master.getName(), pdf.getName(), null, new dori.jasper.engine.JREmptyDataSource());

 

// Launch Acrobat - .pdf must be a registered type:

if (pdf.exists())

java.lang.Runtime.getRuntime().exec("cmd.exe /c start " + pdf.getName());

}

catch (java.lang.Exception ex)

{ ex.printStackTrace();

}

finally

{ master.delete();

 

// Remove all of the .jasper files:

for (int x = 0; x < subreports.size(); x++)

((java.io.File) subreports.get(x)).delete();

 

}

return;

}

 

private static void sample2()

{ dori.jasper.engine.design.JRDesignBand band;

java.io.File master = new java.io.File("sample2.jasper"), pdf = new java.io.File("sample2.pdf");

java.util.List columns = new java.util.ArrayList(0), subreports = new java.util.ArrayList(0);

Report report;

 

try

{ // Create some subreports:

subreports.add(subreportA());

subreports.add(subreportB());

subreports.add(subreportC1(1, true));

subreports.add(subreportC2(1));

subreports.add(subreportC1(2, true));

subreports.add(subreportC2(2));

subreports.add(subreportC1(3, true));

subreports.add(subreportC1(4, true));

subreports.add(subreportC2(4));

subreports.add(subreportD());

 

columns.add(new Column(50, 125));

columns.add(new Column(225, 300));

columns.add(new Column(400, 475));

columns.add(new Column(575, 650));

 

band = new dori.jasper.engine.design.JRDesignBand();

 

// Create the master design:

report = new Report(10, 10, 822, 15, 4);

report.addTitle("Sample Report");

report.addDetailColumns(band, columns, 32);

 

for (int x = 0; x < subreports.size(); x++)

report.addSubreport(band, (java.io.File) subreports.get(x));

 

report.addDetailBand(band, false);

report.addPageFooter();

report.compileToFile(master.getName());

 

// Create a PDF:

dori.jasper.engine.JasperRunManager.runReportToPdfFile(master.getName(), pdf.getName(), null, new dori.jasper.engine.JREmptyDataSource());

 

// Launch Acrobat - .pdf must be a registered type:

if (pdf.exists())

java.lang.Runtime.getRuntime().exec("cmd.exe /c start " + pdf.getName());

}

catch (java.lang.Exception ex)

{ ex.printStackTrace();

}

finally

{ master.delete();

 

// Remove all of the .jasper files:

for (int x = 0; x < subreports.size(); x++)

((java.io.File) subreports.get(x)).delete();

 

}

return;

}

 

private static java.io.File subreportA() throws dori.jasper.engine.JRException

{ dori.jasper.engine.design.JRDesignBand band = new dori.jasper.engine.design.JRDesignBand();

java.io.File retVal = new java.io.File("subreportA.jasper");

java.util.List columns = new java.util.ArrayList(0);

Report report;

 

columns.add(new Column(0, 55));

columns.add(new Column(200, 255));

columns.add(new Column(400, 455));

columns.add(new Column(600, 655));

 

report = new Report(0, 0, 842, 15, 4);

report.addSubreportTitle(band, "Subreport A");

report.addDetailColumns(band, columns, 16);

report.addDetailBand(band, false);

report.compileToFile(retVal.getName());

return(retVal);

}

 

private static java.io.File subreportB() throws dori.jasper.engine.JRException

{ dori.jasper.engine.design.JRDesignBand band = new dori.jasper.engine.design.JRDesignBand();

java.io.File retVal = new java.io.File("subreportB.jasper");

java.util.List columns = new java.util.ArrayList(0);

Report report;

 

columns.add(new Column(0, 55));

columns.add(new Column(200, 255));

columns.add(new Column(400, 455));

columns.add(new Column(600, 655));

 

report = new Report(0, 0, 842, 15, 4);

report.addSubreportTitle(band, "Subreport B");

report.addDetailColumns(band, columns, 28);

report.addDetailBand(band, false);

report.compileToFile(retVal.getName());

return(retVal);

}

 

private static java.io.File subreportC1(int x, boolean isSubreport) throws dori.jasper.engine.JRException

{ dori.jasper.engine.design.JRDesignBand band = new dori.jasper.engine.design.JRDesignBand();

java.io.File retVal = new java.io.File("subreportC1_" + x + ".jasper");

java.util.List columns = new java.util.ArrayList(0);

Report report;

 

columns.add(new Column(0, 75));

columns.add(new Column(240, 305));

columns.add(new Column(470, 555));

 

report = new Report(0, 0, 842, 12, 3);

if (isSubreport)

report.addSubreportTitle(band, "Subreport C1");

report.addDetailColumns(band, columns, 39);

report.addDetailBand(band, isSubreport);

report.compileToFile(retVal.getName());

return(retVal);

}

 

private static java.io.File subreportC2(int x) throws dori.jasper.engine.JRException

{ dori.jasper.engine.design.JRDesignBand band = new dori.jasper.engine.design.JRDesignBand();

java.io.File retVal = new java.io.File("subreportC2_" + x + ".jasper");

java.util.List columns = new java.util.ArrayList(0);

Report report;

 

columns.add(new Column(0, 65));

columns.add(new Column(230, 295));

columns.add(new Column(450, 515));

 

report = new Report(0, 0, 842, 12, 3);

report.addSubreportTitle(band, "Subreport C2");

report.addDetailColumns(band, columns, 32);

report.addDetailBand(band, false);

report.compileToFile(retVal.getName());

return(retVal);

}

 

private static java.io.File subreportD() throws dori.jasper.engine.JRException

{ dori.jasper.engine.design.JRDesignBand band = new dori.jasper.engine.design.JRDesignBand();

java.io.File retVal = new java.io.File("subreportD.jasper");

java.util.List fields = new java.util.ArrayList(5);

Report report;

 

fields.add(new TableField("One", 26, 50, "This"));

fields.add(new TableField("Two", 76, 100, "is"));

fields.add(new TableField("Three", 176, 75, "a"));

fields.add(new TableField("Four", 251, 50, "data"));

fields.add(new TableField("Five", 301, 50, "row"));

 

report = new Report(0, 0, 842, 15, 2);

report.addSubreportTitle(band, "Subreport D");

report.addDetailTable(band, fields, 5);

report.addDetailBand(band, true);

report.compileToFile(retVal.getName());

return(retVal);

}

}

 

 

TableField.java:

 

public class TableField

{ private java.lang.String data, name;

private int startColumn, width;

 

public TableField(java.lang.String name, int startColumn, int width, java.lang.String data)

{

 

this.name = name;

this.startColumn = startColumn;

this.width = width;

this.data = data;

return;

}

 

 

 

/*

Getters & setters:

*/

public java.lang.String getData() { return(data); }

public java.lang.String getName() { return(name); }

public int getStartColumn() { return(startColumn); }

public int getWidth() { return(width); }

}

 

 

 

build.xml:

<project name="JasperReports" default="run" basedir=".">

<path id="project.classpath">

<pathelement location="."/>

<pathelement path="F:/Clients/Anaglyph/Jasper/JasperReports-0.4.6/lib/jasperreports.jar"/>

<pathelement path="F:/Clients/Anaglyph/Jasper/JasperReports-0.4.6/lib/commons-beanutils.jar"/>

<pathelement path="F:/Clients/Anaglyph/Jasper/JasperReports-0.4.6/lib/commons-collections.jar"/>

<pathelement path="F:/Clients/Anaglyph/Jasper/JasperReports-0.4.6/lib/commons-digester.jar"/>

<pathelement path="F:/Clients/Anaglyph/Jasper/JasperReports-0.4.6/lib/commons-logging.jar"/>

<pathelement path="F:/Clients/Anaglyph/Jasper/JasperReports-0.4.6/lib/iText-0.96.jar"/>

</path>

 

<!--

Compiles the java source files

of the test application.

-->

<target name="javac">

<javac srcdir="." destdir="." debug="true" optimize="false" deprecation="false">

<classpath refid="project.classpath"/>

</javac>

</target>

 

<!--

Fills the compiled report design and produce the .jrprint file.

-->

<target name="run" depends="javac">

<java classname="Sample" fork="true">

<classpath refid="project.classpath"/>

</java>

</target>

 

<!--

Deletes all the generated files.

-->

<target name="clean">

<delete>

<fileset dir="." includes="**/*.class" />

<fileset dir="." includes="**/*.jasper" />

<fileset dir="." includes="**/*.pdf" />

</delete>

</target>

 

</project>

 

 

 

 

 

By: Daryl Jackson - dkjjr

RE: Subreports - possible bug?

2003-07-08 12:12

Subreport ordering still appears to be broken in 0.5.0.

 

 

 

 

By: Daryl Jackson - dkjjr

RE: Subreports - possible bug?

2003-06-22 14:20

No takers? No one else has observed similar behavior? I have not had the time to look at the Jasper source so I could really use some help.

 

Thanks,

Daryl

 

 

 

 

 

By: Rick Rogerson - gr8north

RE: Subreports - possible bug?

2003-09-16 13:20

I've got the same problem. Did you ever resolve it?

Link to comment
Share on other sites

  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...