Senin, 14 Juni 2010

Membuat sub report di iReport 3.7.1

Subreport adalah laporan yang disertakan dalam laporan lain. Hal ini memungkinkan penciptaan tata letak yang sangat kompleks dengan porsi yang berbeda dari satu dokumen diisi menggunakan berbagai sumber data dan laporan.
Dalam bahasan ini kami ingin membuat buku alamat pencetakan untuk setiap orang dalam buku alamat nama, daftar nomor telepon dan daftar alamat email.Tata letak kami ingin mendapatkan adalah satu dalam gambar di bawah.
Sebuah laporan master akan digunakan untuk memilih orang dari buku alamat dan membuat halaman utama dan rincian orang. Sebuah subreport pertama akan digunakan untuk memilih alamat email dari setiap orang dan membuat bagian jeruk. Akhirnya subreport kedua akan digunakan untuk mengambil nomor telepon dan mencetaknya (bagian biru).Untuk mengisi laporan, kita akan menggunakan database script berikut.create table PERSONS ( ID int primary key, NAME varchar(30), CITY varchar(30) ); insert into PERSONS values(1, 'ETHAN', 'NEW YORK'); insert into PERSONS values(2, 'CALEB', 'SAN FRANCISCO'); insert into PERSONS values(3, 'WILLIAM', 'LONDON'); create table EMAIL_ADDRESSES ( ID int primary key, ID_PERSON varchar(30), EMAIL varchar(100) ); insert into EMAIL_ADDRESSES values(1, 1, 'ethan@yahoo.com'); insert into EMAIL_ADDRESSES values(2, 1, 'ethan@gmail.com'); insert into EMAIL_ADDRESSES values(3, 2, 'caleb@yahoo.com'); insert into EMAIL_ADDRESSES values(4, 2, 'caleb2@linux.com'); insert into EMAIL_ADDRESSES values(5, 2, 'cccleb@jaspersoft.com'); insert into EMAIL_ADDRESSES values(6, 3, 'wlm@somedomain.co.uk'); insert into EMAIL_ADDRESSES values(7, 3, 'william@someemail.eu'); insert into EMAIL_ADDRESSES values(8, 3, 'willy@myemail.org'); create table PHONE_NUMBERS ( ID int primary key, ID_PERSON varchar(30), PHONE varchar(100) ); insert into PHONE_NUMBERS values(1, 1, '1(111) 111-1111'); insert into PHONE_NUMBERS values(2, 1, '1(222) 222-2222'); insert into PHONE_NUMBERS values(3, 1, '1(333) 333-3333'); insert into PHONE_NUMBERS values(4, 2, '1(444) 444-4444'); insert into PHONE_NUMBERS values(5, 3, '1(555) 555-5555'); insert into PHONE_NUMBERS values(6, 3, '1(666) 666-6666');Dimulai dari sebuah laporan kosong untuk membuat laporan master, satu untuk menampilkan nama-nama orang. Ini adalah laporan yang sangat sederhana berdasarkan query:Select * from person;Dalam band detail kita menambahkan field NAMA dan KOTA. Latar belakang abu-abu yang diperoleh dengan menggunakan elemen frame yang berisi dua bidang.Garis di bagian bawah dari band detail memiliki properti, set Posisi Jenis melayang, dengan cara ini, ketika kita akan menambahkan subreports, apa pun ruang elemen subreport akan mengambil waktu berjalan, baris akan bergerak sesuai.Angka 2 menunjukkan tata letak laporan master.
Langkah selanjutnya adalah untuk menciptakan subreport untuk menampilkan alamat email. Dimulai dengan sebuah laporan kosong, simpan di direktori yang sama sebagai master, dan menyebutnya subreport_1.jrxml.Buka dialog format halaman (Format → Format Page) dan mengurangi ukuran halaman menjadi 270 pixel dan menghapus margin, karena mereka tidak berguna dalam sebuah subreport. Tinggi laporan dalam hal ini tidak terlalu menarik, karena akan dikelola oleh laporan master sekali laporan ini akan digunakan sebagai subreport.
Laporan ini tidak akan menampilkan semua alamat email yang dibaca dari EMAIL_ADDRESSES meja, tapi hanya yang orang saat ini di master. Untuk menyaring alamat email, kami akan menggunakan parameter. Dalam laporan inspektur klik kanan Parameter node dan pilih Tambah Parameter. Dalam lembar properti mengubah nama parameter untuk ID_PERSON, mengatur parameter untuk kelas java.lang.Integer dan menetapkan nilai default, yaitu: 1.
Buat query: SELECT * FROM EMAIL_ADDRESSES WHERE ID_PERSON=$P{ID_PERSON}Sintaks $ P (ID_PERSON) mengijinkan penggunaan parameter dalam query, dalam hal ini untuk menyaring hasil menggunakan kondisi di mana.
. Tutup dialog query dan melanjutkan dengan layout laporan (lihat gambar 6).
Jika kita mau, kita bisa menjalankan laporan ini untuk melihat hasilnya. Ulangi langkah yang sama untuk menciptakan subreport kedua untuk menampilkan nomor telepon. Sebut saja subreport_2.jrxml dan menyimpannya dalam direktori yang sama seperti dua file lainnya jrxml. Kali ini permintaan akan: SELECT * FROM P WHERE PHONE_NUMBERS ID_PERSON = $ (ID_PERSON) Tata letak subreport kedua harus sama dengan gambar berikut:
Sudah saatnya untuk menempatkan bersamaan semua. Kembali ke laporan master dan drag dari palet ke dalam band detail elemen subreport.Laporan itu muncul penyihir. Pilih pilihan kedua (Gunakan laporan yang sudah ada) dan pilih subreport_1.jrxml (atau subreport_1.jasper jika Anda telah mencobanya).Dalam langkah berikut menggunakan pilihan "Gunakan sambungan yang sama digunakan untuk mengisi laporan master" (yang harus dipilih oleh defaut). Dengan cara ini, koneksi database akan dilewatkan ke subreport untuk membiarkannya mengeksekusi query SQL nya.
Klik berikutnya. Pada langkah selanjutnya kita dapat mengatur ekspresi untuk parameter terpapar subreport itu. Set ke lapangan ID. Ketika laporan akan dieksekusi, alamat email akan disaring berdasarkan ID dari laporan saat ini (yang merupakan ID dari orang yang kami memproses).
Melengkapi wizard menjaga semua setingan default. Unsur subreport baru akan ditempatkan di dalam detail, menyesuaikan ukurannya (lebar harus diatur ke 270 piksel) dan posisi sehingga dapat sesuai dengan ruang yang tersedia (lihat gambar 10).Salin dan sisipkan elemen subreport. Satu-satunya perbedaan antara dua elemen subreport yang menjadi acuan untuk jasper file untuk digunakan sebagai subreport. Dalam lembar properti mengubah ekspresi Subreport sebagai berikut:
$ P (SUBREPORT_DIR) + "subreport_2.jasper"

Nama parameter (ID_PERSON) sama baik dalam subreports, seperti cara itu lulus dari master, sehingga tidak ada perubahan lain untuk melakukannya. Perbaiki posisi subreport kedua yang di sebelah kanan yang pertama.

Tutorial ini hanya mencakup dasar-dasar subreporting di JasperReports. Menggunakan koneksi JDBC dan jalur staic ke subreports. Subreports dapat diisi dengan jenis sumber data, termasuk XML, koleksi kacang java, sumber data kosong dan sebagainya. subreport tersebut kemudian dapat kembali ke hasil master perhitungan dengan menggunakan nilai kembali, jasper file yang akan digunakan subreoprt dapat diambil secara dinamis dan subreport dapat mencakup subreports lain, yang memungkinkan penciptaan tata letak yang sangat kompleks.

2 komentar:

  1. makasih udh menambah wawasan

    BalasHapus
  2. copy-paste ni...kalo mau di translate nya manual mas...jadi kacau gtu bahasanya :P

    BalasHapus