Membuat Laporan Crystal Reports .NET dengan Model Data-Push Bagian #2
Melanjutkan pembahasan tentang bagaimana cara mendesain laporan menggunakan Crystal Reports .NET tanpa terhubung langsung ke database dengan memanfaatkan objek ADO.NET DataSet atau yang dikenal dengan istilah Push model.
Jika pada postingan sebelumnya kita hanya menampilkan data dari sebuah tabel maka untuk postingan kali ini kita menampilkan data dari tiga buah tabel yang saling berhubungan.
Persiapan tool-tool yang akan digunakan :
- Visual Studio Community 2013, Anda bisa saja menggunakan Visual Studio .NET versi sebelumnya (2010, 2012)
- NuGet, untuk memudahkan dalam menambahkan library pihak ketiga. Adapun library pihak ketiga yang digunakan dalam sample ini adalah Dapper .NET dan System.Data.SQLite Core
- Crystal Reports SP 13
- Database SQLite
Setelah semua tool yang dibutuhkan tersedia kita lanjutkan dengan pembuatan project :
-
Buat project baru dengan type WinForm
-
Tambahkan empat folder baru masing-masing dengan nama DataSet, Model, Repository dan Report
Folder DataSet digunakan untuk mengelompokkan item-item DataSet yang berfungsi sebagai tabel temporary, folder Model untuk mengelompokkan class-class model atau entity, folder Repository untuk mengelompokkan class-class akses database dan terakhir folder Report untuk mengelompokkan item-item Crystal Reports.
Class Model/Entity
Untuk menerapkan konsep OOP (Object-oriented programming) dalam pemrograman database kita perlu membuat sebuah class yang disebut dengan istilah class Model atau Entity. Class ini merupakan representasi dari tabel-tabel yang ada di dalam database. Tujuan dari membuat class ini adalah agar kita bisa melakukan mapping (pemetaan) baris/row dari tabel menjadi kumpulan objek (object collection).
Pemetaan bisa dilakukan secara manual atau bisa juga secara otomatis dengan menggunakan tool-tool ORM dari pihak ketiga seperti Dapper .NET dan Entity Framework. Untuk contoh kali ini kita menggunakan Dapper .NET.
Setelah memahami apa itu class model dan bagaimana proses pemetaan record ke objek terjadi, langkah berikutnya adalah menambahkan class model Category, Product dan Supplier yang mempunyai struktur sama persis dengan rancangan tabel di atas.
Class Repository
Class repository adalah class yang bertugas untuk menangani operasi database yang dikenal dengan istilah operasi CRUD (Create, Read, Update dan Delete). Di dalam class inilah kita menuliskan perintah-perintah INSERT, UPDATE, DELETE dan SELECT.
Sebagai contoh kode dibawah ini akan melakukan mapping (pemetaan) baris/row tabel menjadi kumpulan objek (object collection) secara otomatis.
Kode di atas menggunakan Micro ORM Dapper.NET untuk melakukan mapping/pemetaan hasil query ke objek collection.
Kemudian kita panggil seperti berikut :
DataSet
Dengan model data Push kita tidak langsung menghubungkan antara Crystal Reports dengan database, jadi sebagai solusinya kita menggunakan DataSet yang berfungsi sebagai tabel temporary dan menjadi sumber data bagi Crystal Reports.
Untuk menambahkan item DataSet, klik kanan Project -> Add -> New Item…
Setelah menambahkan item DataSet (DsNorthwind), langkah berikutnya adalah menambahkan item DataTable
Kemudian input informasi DataTablenya seperti gambar berikut :
Ulangi langkah sebelumnya untuk menambahkan DataTable lainnya.
Crystal Reports
Crystal Reports adalah tool yang kita gunakan untuk membuat laporan. Untuk menambahkan item Crystal Report, klik kanan Project -> Add -> New Item…
Pilih “As a Blank Report” karena kita akan mendesain report secara manual.
Langkah berikutnya adalah menentukan sumber data yang kita arahkan ke item DataSet yang sudah kita buat pada langkah sebelumnya
Klik kanan Database Fields -> Database Expert …
Pilih ADO.NET DataSet
Drag satu-satu field ke section detail, kemudian dirapikan.
Crystal Report Viewer
Setelah semua persiapan selesai, langkah berikutnya adalah menambahkan Crystal Report Viewer yang berfungsi sebagai container untuk untuk menampilkan report.
Aktifkan form kemudian tambahkan Crystal Report Viewer
Kemudian tambahkan kode berikut :
Dari kode di atas kita bisa melihat tidak ada lagi kode untuk mengeset koneksi database dan perintah SQL yang akan dikirimkan. Cara ini sangat cocok digunakan ketika kita akan membangun sistem dengan arsitektur N-Tier, di mana aplikasi klien sudah tidak terkoneksi lagi secara langsung ke database.
Jika kode di atas dijalankan, akan menghasilkan output seperti gambar di bawah ini.
Selamat MENCOBA
Comments