Ketika memutuskan untuk menggunakan Crystal Reports sebagai tool untuk membuat laporan, ada dua model yang bisa kita gunakan untuk menampilkan data.
- Pull model – kita mengeset koneksi ke database, mengirimkan perintah SQL, menentukan filter dan sisanya akan langsung ditangani oleh Crystal Reports. Cara yang pertama ini adalah cara umum yang biasanya digunakan untuk menampilkan data, dan rata-rata tutorial yang beredar juga menggunakan cara ini.
- Push model – dengan cara yang kedua ini kita membuat tabel temporary dengan menggunakan objek DataSet kemudian mengirimkan data dengan format DataSet, DataTable, IDataReader atau IEnumerable dan sisanya akan langsung ditangani oleh Crystal Reports.
Nah pada postingan kali ini kita akan menggunakan cara yang kedua yaitu Push Model dengan sumber datanya berupa object collection (IEnumerable).
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
- Tipe project WinForm
Untuk contoh postingan kali ini, kita hanya menggunakan satu buah tabel dengan struktur seperti berikut :
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, Dao 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 Dao untuk mengelompokkan class-class akses database (Data Acces Object) 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 Siswa yang mempunyai struktur sama persis dengan rancangan tabel di awal.
Untuk menambahkan class Model, klik kanan Project -> Add -> New Item…
Kemudian lengkapi kode class Siswa, seperti gambar berikut :
Class DAO (Data Access Object)
Class DAO 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.
Contoh pemanggilannya juga gampang :
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 (DsSiswa), langkah berikutnya adalah menambahkan item DataTable
Kemudian input informasi DataTablenya seperti gambar berikut :
Khusus untuk nama field dan tipe data dari DataTable yang kita buat, harus disesuaikan dengan nama field dan tipe data tabel.
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 Siswa
Drag satu-satu field siswa (nis, nama dan alamat) 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 :)