Variabel Laporan
Variabel laporan adalah objek khusus yang dibangun di atas ekspresi laporan.
Variabel laporan menyederhanakan tugas-tugas berikut -
Ekspresi laporan, yang banyak digunakan di seluruh template laporan. Ekspresi ini hanya dapat dideklarasikan sekali dengan menggunakan variabel report.
Variabel laporan dapat melakukan berbagai perhitungan berdasarkan nilai ekspresi yang sesuai seperti jumlah, jumlah, rata-rata, terendah, tertinggi, varians, dll.
Jika variabel ditentukan dalam desain laporan, maka variabel ini dapat direferensikan oleh variabel baru dalam ekspresi. Oleh karena itu, urutan variabel dideklarasikan dalam desain laporan adalah penting.
Deklarasi Variabel
Deklarasi variabel adalah sebagai berikut -
<variable name = "CityNumber" class = "java.lang.Integer" incrementType = "Group"
incrementGroup = "CityGroup" calculation = "Count">
<variableExpression>
<![CDATA[Boolean.TRUE]]>
</variableExpression>
</variable>
Seperti yang terlihat di atas, elemen <variable> berisi sejumlah atribut. Atribut ini dirangkum di bawah ini -
Atribut Nama
Mirip dengan parameter dan bidang , atribut nama elemen </variable> bersifat wajib. Ini memungkinkan referensi variabel dengan nama yang dideklarasikan dalam ekspresi laporan.
Atribut Kelas
The kelas atribut juga wajib yang menentukan nama kelas untuk nilai variabel. Nilai defaultnya adalah java.lang.String . Ini dapat diubah ke kelas mana pun yang tersedia di classpath, baik pada waktu kompilasi laporan dan waktu pengisian laporan. Mesin menangani pengecoran tipe dalam ekspresi laporan yang menggunakan token $ V {}, oleh karena itu transmisi tipe manual tidak diperlukan.
Perhitungan
Atribut ini menentukan - perhitungan apa yang harus dilakukan pada variabel saat mengisi laporan. Subbagian berikut menjelaskan semua nilai yang mungkin untuk atribut kalkulasi dari elemen <variable>.
Rata - rata - Nilai variabel adalah rata-rata dari setiap nilai bukan-nol dari ekspresi variabel. Hanya valid untuk variabel numerik.
Hitung - Nilai variabel adalah jumlah instance non-null dari ekspresi variabel.
Pertama - Nilai variabel adalah nilai contoh pertama dari ekspresi variabel. Nilai selanjutnya akan diabaikan.
Tertinggi - Nilai variabel adalah nilai tertinggi untuk ekspresi variabel.
Terendah - Nilai variabel adalah nilai terendah untuk ekspresi variabel dalam laporan.
Tidak ada - Tidak ada perhitungan yang dilakukan pada variabel.
Standar Deviasi - Nilai variabel adalah simpangan baku dari semua nilai bukan nol yang cocok dengan ekspresi laporan. Hanya valid untuk variabel numerik.
Jumlah - Nilai variabel adalah jumlah dari semua nilai bukan nol yang dikembalikan oleh ekspresi laporan.
Sistem - Nilai variabel adalah penghitungan khusus (menghitung sendiri nilai untuk variabel tersebut, menggunakan fungsionalitas scriptlets JasperReports).
Varians - Nilai variabel adalah varian dari semua nilai bukan nol yang dikembalikan oleh evaluasi ekspresi variabel laporan.
Kelas Pabrik Incrementer
Atribut ini menentukan kelas yang digunakan untuk menghitung nilai variabel saat mengisi catatan saat ini pada laporan. Nilai defaultnya adalah penerapan kelas apa punnet.sf.jasperreports.engine.fill.JRIncrementerFactory. Kelas pabrik akan digunakan oleh mesin untuk membuat instance objek incrementer pada waktu proses bergantung pada atribut kalkulasi yang disetel untuk variabel tersebut.
IncrementType
Ini menentukan kapan harus menghitung ulang nilai variabel. Atribut ini menggunakan nilai, seperti di bawah ini -
Kolom - Nilai variabel dihitung ulang di akhir setiap kolom.
Grup - Nilai variabel dihitung ulang saat grup yang ditentukan oleh perubahan incrementGroup.
Tidak ada - Nilai variabel dihitung ulang dengan setiap catatan.
Halaman - Nilai variabel dihitung ulang di akhir setiap halaman.
Laporan - Nilai variabel dihitung ulang sekali, di akhir laporan.
IncrementGroup
Ini menentukan nama grup di mana nilai variabel dihitung ulang, jika incrementType adalah Grup . Ini mengambil nama grup mana pun yang dideklarasikan dalam template laporan JRXML.
ResetType
Ini menentukan kapan nilai variabel disetel ulang. Atribut ini menggunakan nilai, seperti di bawah ini -
Kolom - Nilai variabel disetel ulang di awal setiap kolom.
Grup - Nilai variabel disetel ulang saat grup yang ditentukan oleh incrementGroup berubah.
Tidak ada - Nilai variabel tidak pernah disetel ulang.
Halaman - Nilai variabel disetel ulang di awal setiap halaman.
Laporan - Nilai variabel disetel ulang hanya sekali, di awal laporan.
ResetGroup
Ini menentukan nama grup di mana nilai variabel disetel ulang, ketika resetType adalah Grup . Nilai untuk atribut ini adalah nama grup mana pun yang dideklarasikan di template laporan JRXML.
Variabel Laporan Bawaan
Ada beberapa variabel sistem bawaan, siap digunakan dalam ekspresi, sebagai berikut -
S.NO | Nama Variabel dan Deskripsi |
---|---|
1 | PAGE_NUMBER Nilai variabel ini adalah nomor halamannya saat ini. Ini dapat digunakan untuk menampilkan nomor halaman saat ini dan jumlah halaman menggunakan fitur khusus elemen bidang teks JasperReports, atribut evaluasiTime . |
2 | COLUMN_NUMBER Variabel ini berisi nomor kolom saat ini. |
3 | REPORT_COUNT Variabel laporan ini berisi jumlah total catatan yang diproses. |
4 | PAGE_COUNT Variabel ini berisi jumlah catatan yang diproses saat membuat halaman saat ini. |
5 | COLUMN_COUNT Variabel ini berisi jumlah record yang diproses saat membuat kolom saat ini. |
6 | GroupName_COUNT Nama variabel ini berasal dari nama grup yang sesuai, diakhiri dengan urutan _COUNT. Variabel ini berisi jumlah record di grup saat ini. |
Contoh
Mari tambahkan variabel (countNumber) ke templat laporan yang ada ( Desain Laporan Bab ). Kami akan memberi awalan hitungan untuk setiap catatan. Template laporan yang direvisi (jasper_report_template.jrxml) adalah sebagai berikut. Simpan ke direktori C: \ tools \ jasperreports-5.0.1 \ test -
<?xml version = "1.0"?>
<!DOCTYPE jasperReport PUBLIC
"//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<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 = "jasper_report_template" pageWidth = "595"
pageHeight = "842" columnWidth = "515"
leftMargin = "40" rightMargin = "40" topMargin = "50" bottomMargin = "50">
<parameter name = "ReportTitle" class = "java.lang.String"/>
<parameter name = "Author" class = "java.lang.String"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name = "country" class = "java.lang.String">
<fieldDescription>
<![CDATA[country]]>
</fieldDescription>
</field>
<field name = "name" class = "java.lang.String">
<fieldDescription>
<![CDATA[name]]>
</fieldDescription>
</field>
<variable name = "countNumber" class = "java.lang.Integer" calculation = "Count">
<variableExpression>
<![CDATA[Boolean.TRUE]]>
</variableExpression>
</variable>
<title>
<band height = "70">
<line>
<reportElement x = "0" y = "0" width = "515" height = "1"/>
</line>
<textField isBlankWhenNull = "true" bookmarkLevel = "1">
<reportElement x = "0" y = "10" width = "515" height = "30"/>
<textElement textAlignment = "Center">
<font size = "22"/>
</textElement>
<textFieldExpression class = "java.lang.String">
<![CDATA[$P{ReportTitle}]]>
</textFieldExpression>
<anchorNameExpression>
<![CDATA["Title"]]>
</anchorNameExpression>
</textField>
<textField isBlankWhenNull = "true">
<reportElement x = "0" y = "40" width = "515" height = "20"/>
<textElement textAlignment = "Center">
<font size = "10"/>
</textElement>
<textFieldExpression class = "java.lang.String">
<![CDATA[$P{Author}]]> </textFieldExpression> </textField> </band> </title> <columnHeader> <band height = "23"> <staticText> <reportElement mode = "Opaque" x = "0" y = "3" width = "535" height = "15" backcolor = "#70A9A9" /> <box> <bottomPen lineWidth = "1.0" lineColor = "#CCCCCC" /> </box> <textElement /> <text> <![CDATA[]]> </text> </staticText> <staticText> <reportElement x = "414" y = "3" width = "121" height = "15" /> <textElement textAlignment = "Center" verticalAlignment = "Middle"> <font isBold = "true" /> </textElement> <text><![CDATA[Country]]></text> </staticText> <staticText> <reportElement x = "0" y = "3" width = "136" height = "15" /> <textElement textAlignment = "Center" verticalAlignment = "Middle"> <font isBold = "true" /> </textElement> <text><![CDATA[Name]]></text> </staticText> </band> </columnHeader> <detail> <band height = "16"> <staticText> <reportElement mode = "Opaque" x = "0" y = "0" width = "535" height = "14" backcolor = "#E5ECF9" /> <box> <bottomPen lineWidth = "0.25" lineColor = "#CCCCCC" /> </box> <textElement /> <text> <![CDATA[]]> </text> </staticText> <textField> <reportElement x = "414" y = "0" width = "121" height = "15" /> <textElement textAlignment = "Center" verticalAlignment = "Middle"> <font size = "9" /> </textElement> <textFieldExpression class = "java.lang.String"> <![CDATA[$F{country}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x = "0" y = "0" width = "136" height = "15" />
<textElement textAlignment = "Center" verticalAlignment = "Middle" />
<textFieldExpression class = "java.lang.String">
<![CDATA[" " + String.valueOf($V{countNumber}) +"."+$F{name}]]>
</textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Kode java untuk pengisian laporan tetap tidak berubah. Isi fileC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\JasperReportFill.java seperti yang diberikan di bawah ini -
package com.tutorialspoint;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class JasperReportFill {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
String sourceFileName =
"C://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";
DataBeanList DataBeanList = new DataBeanList();
ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();
JRBeanCollectionDataSource beanColDataSource =
new JRBeanCollectionDataSource(dataList);
Map parameters = new HashMap();
/**
* Passing ReportTitle and Author as parameters
*/
parameters.put("ReportTitle", "List of Contacts");
parameters.put("Author", "Prepared By Manisha");
try {
JasperFillManager.fillReportToFile(
sourceFileName, parameters, beanColDataSource);
} catch (JRException e) {
e.printStackTrace();
}
}
}
Isi file POJO C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBean.java seperti yang diberikan di bawah ini -
package com.tutorialspoint;
public class DataBean {
private String name;
private String country;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
Isi file C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBeanList.java seperti yang diberikan di bawah ini -
package com.tutorialspoint;
import java.util.ArrayList;
public class DataBeanList {
public ArrayList<DataBean> getDataBeanList() {
ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();
dataBeanList.add(produce("Manisha", "India"));
dataBeanList.add(produce("Dennis Ritchie", "USA"));
dataBeanList.add(produce("V.Anand", "India"));
dataBeanList.add(produce("Shrinath", "California"));
return dataBeanList;
}
/**
* This method returns a DataBean object,
* with name and country set in it.
*/
private DataBean produce(String name, String country) {
DataBean dataBean = new DataBean();
dataBean.setName(name);
dataBean.setCountry(country);
return dataBean;
}
}
Pembuatan Laporan
Kami akan mengkompilasi dan mengeksekusi file di atas menggunakan proses build ANT reguler kami. Isi dari file build.xml (disimpan di bawah direktori C: \ tools \ jasperreports-5.0.1 \ test) seperti yang diberikan di bawah ini.
File impor - baseBuild.xml diambil dari bab Pengaturan Lingkungan dan harus ditempatkan di direktori yang sama dengan build.xml.
<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewFillReport" basedir = ".">
<import file = "baseBuild.xml" />
<target name = "viewFillReport" depends = "compile,compilereportdesing,run"
description = "Launches the report viewer to preview
the report stored in the .JRprint file.">
<java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true">
<arg value = "-F${file.name}.JRprint" />
<classpath refid = "classpath" />
</java>
</target>
<target name = "compilereportdesing" description = "Compiles the JXML file and
produces the .jasper file.">
<taskdef name = "jrc"
classname = "net.sf.jasperreports.ant.JRAntCompileTask">
<classpath refid = "classpath" />
</taskdef>
<jrc destdir = ".">
<src>
<fileset dir = ".">
<include name = "*.jrxml" />
</fileset>
</src>
<classpath refid = "classpath" />
</jrc>
</target>
</project>
Selanjutnya, buka jendela baris perintah dan buka direktori tempat build.xml ditempatkan. Terakhir, jalankan perintahant -Dmain-class=com.tutorialspoint.JasperReportFill (viewFullReport adalah target default) sebagai -
C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.tutorialspoint.JasperReportFill
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml
clean-sample:
[delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
[delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
[delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint
compile:
[mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
[javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28: warning:
'includeantruntime' was not set, defaulting to build.sysclasspath=last;
set to false for repeatable builds
[javac] Compiling 7 source files to C:\tools\jasperreports-5.0.1\test\classes
compilereportdesing:
[jrc] Compiling 1 report design files.
[jrc] log4j:WARN No appenders could be found for logger
(net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
[jrc] log4j:WARN Please initialize the log4j system properly.
[jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig
for more info.
[jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.
run:
[echo] Runnin class : com.tutorialspoint.JasperReportFill
[java] log4j:WARN No appenders could be found for logger
(net.sf.jasperreports.extensions.ExtensionsEnvironment).
[java] log4j:WARN Please initialize the log4j system properly.
viewFillReport:
[java] log4j:WARN No appenders could be found for logger
(net.sf.jasperreports.extensions.ExtensionsEnvironment).
[java] log4j:WARN Please initialize the log4j system properly.
BUILD SUCCESSFUL
Total time: 18 seconds
Sebagai hasil dari kompilasi di atas, jendela JasperViewer terbuka seperti pada layar di bawah ini -
Di sini, kita melihat bahwa hitungan diawali untuk setiap record.