Tutorial: Membuat Laporan Sederhana Menggunakan Crystal Report di Visual Studio 2010

Tutorial Membuat Laporan Sederhana Menggunakan Crystal Report di Visual Studio 2010
<p><a href="https://pojokprogrammer.net/content/tutorial-membuat-laporan-sederhana-…"><strong>Membuat Laporan Crystal Report</strong></a> | Kemampuan aplikasi untuk membuat sebuah laporan yang bisa dicetak ke printer adalah hal umum yang harus bisa dilakukan sebuah aplikasi desktop. Untuk itu skill ini amat sangat diperlukan oleh seorang programmer pengembang aplikasi desktop. <strong><a href="https://pojokprogrammer.net/tags/tutorial">Tutorial</a></strong> ini mencoba memberikan arahan langkah demi langkah cara menggunakan vb.net&nbsp;untuk membuat sebuah laporan crystal report&nbsp;sederhana namun professional menggunakan <em><strong>Push Method</strong></em>, artinya proses pengambilan data dari database dilakukan di luar Crystal Report , namun menggunakan DataSet, dan setelah data siap, Data Set bersangkutan di-<em><strong>Push</strong></em> ke Crystal Report. Studi kasus berupa Laporan Purchase Order. Aplikasi ini dibuat menggunakan C# karena dengan menguasai C# kita lebih mudah untuk migrasi ke bahasa lain seperti Java. Namun jika kita ingin membuatnya dalam bahasa lain, seperti VB.net, itu adalah hal yang sangat mudah karena coding dalam aplikasi ini hanya beberapa baris saja.</p>
<!--break-->
<p>Beberapa <strong>hal lain yang perlu diperhatikan </strong>antara lain, tutorial ini tidak membahas cara menjalankan Visual Studio, cara membuat Project baru, cara menambah Form atau DataSet baru, cara membuka Server Explorer dan sebangsanya. Ane berasumsi agan semua sudah mengetahui cara-caranya. Tutorial ini juga tidak membahas cara menyimpan data master detail ke dalam database, karena concern kita saat ini hanyalah manmpilkan data yang sudah ada dalam database menggunakan crystal report. Database yang digunakan adalah SQL Server Compact Database. Tutorial ini juga tidak membahas cara membuat database baru, cara koneksi database di .NET, cara design database yang baik dan lain sebagainya. Ane berasumsi agan semua sudah mengetahui cara-caranya.</p>
<p>&nbsp;</p>
<h2>Membuat Project dan DataSet</h2>
<p><strong>Buat project baru dan Siapkan database</strong>, untuk tutorial ini ane pakai Local Database (<em>dbSample.sdf</em>). Note: cara membuat project baru dan design database atau menggunakan database lain tidak dibahas di sini.</p>
<p>
</p>
<p><strong>Tambahkan DataSet baru</strong>, beri nama dsSample.xsd, setelah itu buka Database menggunakan Server Explorer. Lakukanlah drag dan drop table yang ada di Database Explorer ke atas dataset designer dsSample.xsd menjadi seperti yang ada di gambar.</p>
<p>
</p>
<p><strong>Buat custom query</strong> untuk mengambil <strong>data Companies </strong>berdasarkan CompanyID, beri nama method Fill dengan FillByCustomerID dan method Return DataTable dengan GetDataByCompanyID. Note: Perhatikan step pembuatannya di gambar.</p>
<div>
</div>
<p><strong>Buat custom query </strong>untuk mengambil <strong>data Orders </strong>berdasarkan OrderID, beri nama method Fill dengan FillByOrderID dan method Return DataTable dengan GetDataByOrderID. Note: Perhatikan step pembuatannya di gambar.</p>
<div>
</div>
<p><strong>Buat custom query </strong>untuk mengambil <strong>data OrderDetails </strong>berdasarkan OrderID, beri nama method Fill dengan FillByOrderID dan method Return DataTable dengan GetDataByOrderID. Note: Perhatikan step pembuatannya di gambar.</p>
<div>
</div>
<p><strong>Buat custom query </strong>untuk mengambil <strong>data Items </strong>berdasarkan OrderID, beri nama method Fill dengan FillByOrderID dan method Return DataTable dengan GetDataByOrderID. Note: Perhatikan step pembuatannya di gambar.</p>
<div>
</div>
<p><strong>Buat custom query </strong>untuk mengambil <strong>list Orders yang terdenormalisasi</strong>, beri nama method Fill dengan FillList dan method Return DataTable dengan GetDataList. Note: Perhatikan step pembuatannya di gambar.</p>
<div>
</div>
<p><strong>Compile aplikasi (</strong>Ctrl-F5). Langkah ini <strong>penting </strong>agar dapat maju ke langkah berikutnya. Jika tidak dilakukan kompilasi, maka Crystal Report tidak bisa menggunakan DataSet - yang kita siapkan pada langkah sebelumnya - sebagai definisi report.</p>
<p>Sekarang <strong>DataSet sudah siap </strong>kita gunakan</p>
<div>
</div>
<div>&nbsp;</div>
<h2>Membuat Report Definition</h2>
<p><strong>Tambahkan Crystal Report ke project </strong>untuk laporan List Order, pilih "Using the Report Wizard" untuk membuat definisi report, kemudian pilih <em><strong>Create New Connection &gt; ADO.NET (XML)</strong></em> sebagai data source dan arahkan File Path ke DataSet dsSample.xsd yang kita buat pada langkah sebelumnya.</p>
<div>
<div>
</div>
</div>
<p><strong>Tambahkan ke Selected Tables</strong>: Companies, Orders, OrderDetails, dan Items ke list "Selected Tables", kemudian klik next untuk melihat relasi antar tabel</p>
<div>
<div>
</div>
</div>
<p><strong>Tambahkan field-field </strong>yang yang akan ditampilkan ke list "Fields to Display", kemudian tambahkan juga report grouping, summary, dan filtering jika diperlukan, akhiri dengan memilih template yang diinginkan.</p>
<div>
<div>
</div>
</div>
<p><strong>Tampilan standar </strong>dari wizard, Silakan ubah layoutnya sesuai keinginan agan, misalkan menjadi seperti ini,</p>
<div>
<div>
</div>
</div>
<p><strong>Tambahkan formula field </strong>untuk menghitung nilai order dengan cara klik kanan pada item "Formula Field" di window "Field Explorer". Beri nama formula tersebut "ItemAmount" dan isikan rumusnya seperti pada gambar, kemudian klik tombol "Save and Close" di pojok kanan. Note: agar tidak perlu ketik ulang nama field di formula editor, bisa dengan cara klik ganda pada field yang ada di Field Tree.</p>
<div>
<div>
</div>
</div>
<p><strong>Tambahkan Subtotal </strong>untuk field ItemAmount, dengan cara klik kanan mouse pada field Item Amount, kemudian pilih menu "Insert" -&gt; "Summary", kemudian ubah "Summary Location" menjadi "Group 1" Hasilnya akan muncul field summary persis di bawah field "ItemAmount".</p>
<div>
<div>
</div>
</div>
<p><strong>Rapikan layout </strong>report kita, misalnya menjadi seperti ini. Note: Jika "GroupFooterSection2" tidak ada pada report, silahkan klik kanan mouse pada "GroupFooterSection" kemudian pilih menu "Insert Section Below"</p>
<div>
</div>
<p>&nbsp;</p>
<h2>Buat Form untuk Menampilkan Report</h2>
<p>buat form baru kemudian beri nama frmReportViewer, setelah itu drag dan drop komponen CrystalReportViewer dari toolbox, hasilnya akan tampak seperti gambar di bawah ini.</p>
<div>
</div>
<p>Kemudian buka code editor dan tambahkan coding seperti di bawah ini. Metoda yang kita pakai adalah dengan memanfaatkan constructor form untuk menerima argumen berupa report yang akan di tampilkan.</p>
<div>
</p>
<p>&nbsp;</p>
</div>
<h2>Buat Form untuk List Order</h2>
<p>Buka desain Form1, ubah namanya menjadi "frmMain" kemudian tambahkan 1 buah button dan 1 buah DataGridView seperti yang tampak dalam gambar. Selanjutnya menggunakan property window, ubah nama button1 menjadi btnPrintForm, dan dataGridView1 menjadi grid1.</p>
<div>
</div>
<p>Kemudian drag dan drop ke form dari toolbox grup "CrystalReports1 Components", dsSample dan OrdersTableAdapter, sehingga desain form akan tampak sepert gambar di bawah ini. Selanjutnya ubah property berikut ini untuk grid1,</p>
<ul>
<li>DataSource = dsSample1</li>
<li>DataMember = Orders</li>
<li>ReadOnly = True</li>
<li>AllowUserToAddRows = False</li>
<li>AllowUserToDeleteRows = False</li>
<li>AutoSizeColumnMode = Fill</li>
</ul>
<p>Jika sudah maka tampilan form akan berubah menjadi seperti gambar di bawah ini</p>
<p>&nbsp;</p>
<div>
</div>
<p>Sekarang saatnya menambahkan coding untuk mengambil data dari database dan ditampilkan ke grid. Silakan buka Code Editor dan tambahkan code seperti di bawah ini</p>
<div>
</div>
<p>Coding untuk Menampilkan Report adalah sebagai berikut, Buka desain frmMain kemudian klik ganda pada button btnPrintForm untuk membuka code editor, kemudian tambahkanlah code seperti di bawah ini</p>
<div>
</p>
<p>&nbsp;</p>
</div>
<div>&nbsp;</div>
<h2>Hasilnya gan....</h2>
<p>Hasil akhir tampilan form aplikasi seperti ini</p>
<div>
</div>
<p>Hasil akhir tampilan report yang dihasilkan seperti ini</p>
<div>
</div>
<h2>Download Source Code di sini gan!</h2>
<div>
</div>
<div>
<p>&nbsp;</p>
</div>
<p><strong>Semoga berguna</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>.</p>