Aplikasi Inventory | Untuk memudahkan proses pembuatan Aplikasi Inventory sederhana atau Aplikasi Stok Barang ini, kita memerlukan sebuah Data Access Layer untuk proses pengambilan (retrieval) dan penyimpanan (persisting) data dari dan ke database yang kita gunakan, yaitu MySQL. Teknologi yang kita gunakan adalah ADO.net menggunakan DataSet dan DataAdapter. Dan untuk memudahkan kerja kita, maka kita akan menggunakan MySQL Installer for Windows untuk proses instalasi driver MySQL Connector/NET dan plugin MySQL for Visual Studio. Kekuatan ADO.net salah satunya ada di DataSet, dimana kita bisa membuat replika dari database fisik dan kemudian kita bisa menggunakannya secara object-oriented.
Artikel ini adalah bagian dari artikel berseri tentang Tutorial Membuat Aplikasi Inventory Sederhana Menggunakan VB.net dan Database MySQL.
Siapkan Koneksi Database
Langkah pertama adalah dengan membuka Server Explorer kemudian menambahkan koneksi baru ke database MySQL yang sudah kita siapkan di artikel sebelumnya. Perlu dicatat bahwa kita memerlukan plugin MySQL for Visual Studio agar dapat melakukan langkah-langkah tutorial di bawah ini, dan plugin ini hanya bisa digunakan di Visual Studio Professional ke atas, pada versi Express plugin ini tidak bisa digunakan.
Silakan tambahkan koneksi baru dan isikanlah form konfigurasi database, seperti contoh pada gambar di bawah ini
[collapsed title=Membuat Koneksi Baru di Server Explorer]
Pada Server Explorer, click icon Add New Connection sehingga muncul dialog box seperti di bawah ini
[collapsed title=Tentukan Data Source]
[/collapsed]
Kemudian isikan credential yang diperlukan untuk mengakses database mysql Anda, jika menggunakan paket xampp di localhost maka cukup isikan root sebagai user name dan kosongkan password.
[collapsed title=Isikan Credential Database]
[/collapsed]
Jika sukses, Anda dapat melihat seluruh tables, viwes, dan stored procedure yang ada di database.
[collapsed title=Penampakan Database di Server Explorer]
[/collapsed]
[/collapsed]
Membuat Typed-DataSet
Kekuatan ADO.net salah satunya ada di DataSet, dimana kita bisa membuat replika dari database fisik dan kemudian kita bisa menggunakannya secara object-oriented. Sedangkan DataSet sendiri ada 2 (dua) jenis, untyped-dataset dan typed-dataset. Disebut typed-dataset karena DataSet yang kita gunakan bukan dataset generic namun sudah dikonfigurasikan sesuai dengan schema database tertentu. Dengan menggunakan plugin MySQL for Visual Studio, kita bisa membuat Typed DataSet dengan cepat hanya dengan melakukan drag-and-drop dari Server Explorer.
[collapsed title=Membuat DataSet dengan Cara Drag-and-Drop dari Server Explorer]
Untuk membuat Typed DataSet pertama-tama buat sebuah Folder bernama Data di Solution Explorer, kemudian klik-kanan mouse pada folder Data tersebut dan pilihlah menu Add New Item
[collapsed title=Membuat DataSet kosong]
[/collapsed]
Berikan nama DataSet tersebut sebagai dsInventory, cukup logis karena kita sedang membuat sebuah Aplikasi Inventory. DataSet Designer kosong akan muncul seperti tampak pada gambar di screenshot ini.
[collapsed title=DataSet Designer kosong dengan nama dsInventory]
[/collapsed]
Drag-And-Drop. Langkah selanjutnya adalah membuka Server Explorer, kemudian lakukan Drag-And-Drop semua table yang ada di database ke atas DataSet Designer, sehingga akan terbentuk seperti gambar di bawah ini.
[collapsed title=Hasil setelah proses Drag-And-Drop dari Server Explorer]
[/collapsed]
Perlu diperhatikan bahwa Visual Studio secara otomatis membantu kita membuatkan semua fungsi SELECT, INSERT, UPDATE, dan DELETE dari semua table di atas pada saat proses Drag-And-Drop sehingga kita tidak perlu membuat semua query tersebut secara manual. Pastinya cara ini sangat meningkatkan produktifitas para programmer karena hal-hal seperti ini bisa kita otomasikan menggunakan Visual Studio.
[/collapsed]
Enhancing DataSet – Field Tambahan
Setelah kita berhasil membuat Typed-DataSet sesuai langkah-langkah di atas, langkah selanjutnya adalah melakukan enhancing, atau memberikan fungsi tambahan, terhadap DataSet yang sudah dibuatkan oleh Visual Studio. Tambahan fungsi ini meliputi field dan query untuk mempermudah kita melakukan pengambilan data dari database
[collapsed title=Enhancing DataSet – Field]
Membuat field tambahan ke table transactions, dengan cara meletakkan cursor pada posisi field yang mau kita tambahkan, kemudian klik-kanan mouse dan pilih menu Insert Column.
[collapsed title=Enhancing DataSet – Table Transactions]
Membuat field tambahan ke table transactions, dengan cara meletakkan cursor pada posisi field yang mau kita tambahkan, kemudian klik-kanan mouse dan pilih menu Insert Column.
[/collapsed]
Buatlah semua field tambahan untuk table transactions sehingga menjadi seperti tampak di gambar di bawah ini.
[collapsed title=Enhancing DataSet – Table Transactions]
[/collapsed]
Buatlah semua field tambahan untuk table transaction_details sehingga menjadi seperti tampak di gambar di bawah ini.
[collapsed title=Enhancing DataSet – Table Transactions Details]
[/collapsed]
Perlu diperhatikan bahwa penambahan field diluar yang ada di table fisik nantinya akan sangat berguna ketika kita melakukan proses data binding data ke control seperti DataGridView, sehingga kita tidak perlu membuat kolom tambahan lagi di DataGridView karena sudah tersedia semua di DataSet.
[/collapsed]
Enhancing DataSet – Query Tambahan
Berikutnya yang kita lakukan menambahkan query ke DataSet. Jika kita perhatikan di DataSet Designer, ada komponen khusus dibawah bable dengan nama xxxTableAdapter. Komponen TableAdapter ini adalah DataAdapter yang khusus dibuatkan untuk menangani proses CRUD dari tabel bersangkutan, jadi proses CRUD untuk table transactions ditangani oleh transactionsTableAdapter. Secara default, sudah tersedia method Fill dan GetData, namun kedua methos tersebut masih bersifat generic pada saat proses pengambilan data dari database akan mengambil keseluruhan data tanpa filter.
Untuk itu kita perlu menambahkan sejumlah query untuk memudahkan kita mengambil data dari database berdasarkan kriteria tersentu, pastinya kita akan memerlukan query untuk mendapatkan data transaksi dengan ID tertentu, atau nomor transaksi tertentu, atau bisa juga berdasarkan tanggal transaksi.
[collapsed title=Enhancing DataSet – Add Query]
Membuat query tambahan ke table items, dengan cara meletakkan cursor pada posisi header itemsTableAdapter yang mau kita tambahkan, kemudian klik-kanan mouse dan pilih menu Add Query. Seperti tampak di bawah ini.
[collapsed title=Enhancing DataSet – Add Items Query]
[/collapsed]
Setelah itu akan muncul dialog box wizard proses pembuatan TableAdapter Query seperti ini, pilih Use SQL Statement karena kita akan mengambil data menggunakan perintah SQL.
[collapsed title=Enhancing DataSet – Add Query Wizard]
[/collapsed]
Kemudian pilih SELECT which returns rows karena query kita menghasilkan rows dari table items, untuk option lain silakan teman-teman coba sendiri.
[collapsed title=Enhancing DataSet – Add Query Wizard]
[/collapsed]
Beginilah penampakan query terhadap table items berdasarkan field ID, perhatikan bahwa query di bawah ini memasukkan sebuah parameter @id yang harus kita berikan nanti ketika memanggil query ini.
[collapsed title=Enhancing DataSet – Add Query Wizard]
[/collapsed]
Berikan nama untuk query ini, seperti tampak pada gambar di bawah ini.
[collapsed title=Enhancing DataSet – Add Query Wizard]
[/collapsed]
Selesai! Visual Studio sudah membuatkan fungsi untuk membantu kita melakukan query ke table items di database berdasarkan field ID.
[collapsed title=Enhancing DataSet – Add Query Wizard]
[/collapsed]
Setelah menambahkan query pengambilan data items berdasarkan ID, maka penampakan DataSet akan menjadi seperti pada gambar di bawah ini.
[collapsed title=Enhancing DataSet – Add Items Query]
[/collapsed]
Berikutnya yang perlu kita lakukan adalah menambahkan semua query berdasarkan kriteria yang kita inginkan ke seluruh table yang ada dalam DataSet kita ini. Berikut ini penampakan query terhadap table items berdasarkan field Code.
[collapsed title=Enhancing DataSet – Add Query]
[/collapsed]
Penampakan DataSet setelah menambahkan query berdasarkan field ID dan dan field Code pada table items dan transaction_types seperti pada gambar di bawah ini.
[collapsed title=Enhancing DataSet – Add Query]
[/collapsed]
Berikut ini penampakan query terhadap table transactions berdasarkan field ID. Perhatikan bahwa pada query ini kita melakukan JOIN terhadap table transactions dan transaction_types. Lebih jauh tentang JOIN silakan pelajari artikel ini.
[collapsed title=Enhancing DataSet – Add Query]
[/collapsed]
Berikut ini penampakan query terhadap table transactions berdasarkan field Code. Untuk query ini kita juga lakukan JOIN dengan transaction_types.
[collapsed title=Enhancing DataSet – Add Query]
[/collapsed]
Berikut ini penampakan query terhadap table transactions berdasarkan field Date. Perhatikan bahwa kita menggunakan klausa BETWEEN di dalam klausa WHERE.
[collapsed title=Enhancing DataSet – Add Query]
[/collapsed]
Penampakan DataSet setelah menambahkan query berdasarkan field ID dan, field Code, dan field Date pada table transactions seperti pada gambar di bawah ini.
[collapsed title=Enhancing DataSet – Add Query]
[/collapsed]
Berikut ini penampakan query terhadap table transaction_details berdasarkan field Code.
[collapsed title=Enhancing DataSet – Add Query – Transactions Details by ID]
[/collapsed]
Berikut ini penampakan query terhadap table transaction_details berdasarkan field Trans_ID.
[collapsed title=Enhancing DataSet – Add Query – Transactions Details by Transaction ID]
[/collapsed]
Penampakan DataSet setelah menambahkan query berdasarkan field ID dan dan field Transaction ID pada table transaction_details seperti pada gambar di bawah ini.
[collapsed title=Enhancing DataSet – Add Query]
[/collapsed]
Dengan tersedianya fungsi-fungsi query tambahan pada DataSet yang kita buat di atas, maka pada saat proses pengambilan data, kita hanya perlu meamanggil fungsi-fungsi tersebut dan tidap perlu lagi membuat query secara manual. Sekali lagi, produktifitas programmer semakin meningkat dengan cara ini.
[/collapsed]
Denormalisasi
Apakah denormalisasi database itu? denormalisasi database adalah pelanggaran aturan normalisasi atau menjabarkan suatu desain database yang telah normal untuk meningkatkan performa pengaksesan data pada database. Database yang telah normal disini dimaksudkan database yang redundansi datanya minim sehingga data yang disimpan tidak mengalami kerancuan dalam proses pengaksesan. Namun denormalisasi yang kita lakukan di sini tidak secara fisik, namun hanya menggunakan fasilitas view yang ada di database.
[collapsed title=Denormalisasi]
Denormalisasi kita lakukan dengan melakukan JOIN terhadap seluruh tabel yang ada di database inventory kita. Nantinya view denormalisasi ini akan berguna saat membuat laporan. Dengan bantuan plugin MySQL for Visual Studio, kita bisa membuat sebuah View langsung dari IDE Visual Studio sehingga tidak perlu berpindah ke phpMyAdmin atau HeidiSQL untuk membuat view denormalisasi ini.
[collapsed title=Denormalisasi – Membuat View]
[/collapsed]
Setelah View berhasil kita buat, langkah berikutnya adalah menambahkan view tersebut ke dalam Data Access Layer yang kita buat, caranya sama cukup dengan melakukan drag-drop dari Server Explorer ke DataSet Designer, sehingga tampak seperti gambar di bawah ini.
[collapsed title=Denormalisasi – Drag View ke DataSet Designer]
[/collapsed]
Berikut ini penampakan query terhadap view transaction_denormalized berdasarkan field Trans_ID.
[collapsed title=Denormaslisasi – Add Query – untuk view]
[/collapsed]
Berikut ini penampakan query terhadap view transaction_denormalized berdasarkan field Trans_Code.
[collapsed title=Denormaslisasi – Add Query – untuk view]
[/collapsed]
Berikut ini penampakan query terhadap view transaction_denormalized berdasarkan field Item_ID.
[collapsed title=Denormaslisasi – Add Query – untuk view]
[/collapsed]
Berikut ini penampakan query terhadap view transaction_denormalized berdasarkan field Item_Code.
[collapsed title=Denormaslisasi – Add Query – untuk view]
[/collapsed]
Penampakan Data Access Layer setelah kita melengkapi query untuk View transaction_denormalized.
[collapsed title=Denormalisasi – Hasil Query Tambahan untuk View]
[/collapsed]
[/collapsed]
Hasil Akhir
Setelah seluruh langkah di atas kita selesaikan, maka langkah pamungkas dalam pembuatan Data Access Layer ini adalah dengan melakukan compile atau build project ini. Setelah proses build selesai dilakukan maka kita akan mendapatkan sejumlah komponen baru tampil di toolbox seperti tampak pada gambar di bawah ini. Visual Studio otomatis akan mengenali komponen Data Access Layer buatan kita dan menambahkannya ke dalam toolbox, dan kita bisa melakukan drag-and-drop komponen-komponen tersebut ke dalam form-form buatan kita nantinya. Komponen tambahan ini nantinya akan kita pergunakan dalam pembuatan Aplikasi Inventory ini.
Penutup
Mudah-mudahan penjelasan tentang pembuatan Data Access Layer dapat dipahami dengan mudah, dan silakan kunjungi link di bawah ini untuk mengunduh source-code sementara.
[collapsed title=Spoiler: Download Source Code Di Sini] Dibuat menggunakan Visual Studio 2013, Silakan Download Source Code Di Sini [/collapsed]
Salam Pojok Programmer !
–