Halaman

Rabu, 05 September 2012

Login Form And Dynamic Menu From Database

Kali ini kita coba bahas bagaimana cara membuat login form berdasarkan tingkat previlage nya dan program akan membuka menu tertentu saja yg bisa di akses oleh user tersebut.

Pertama tama kita siapkan tabel nya terlebih dahulu:

Penjelasannya adalah sebagai berikut:
  • Tabel sysusergroup berfungsi untuk menampung group group user yang sesuai dengan hak hak otoritasnya. Misal group Supervisor boleh mengakses semua tombol transaksi dan membuka semua menu yang ada. Group Purchasing Manager boleh mengakses semua tombol transaksi dan membuka menu yang berhubungan dengan Procurement saja. Group Sales Staff hanya boleh mengakses tombol Detail, Baru, Print dan menu yang berhubungan dengan Penjualasan saja. Itu adalah beberapa contoh pembagian group user.
  • Tabel sysusers berfungsi untuk menyimpan semua user yang akan menggunakan program ini.
  • Tabel sysmenus berfungsi untuk menyimpan nama menu yang akan di tampilkan di program beserta nama formnya, sehingga apabila user mengklik menu master Nama, maka program akan langsung mengenali kemana dia harus membuka formnya. Perhatikan juga disini ada field Hierarchy. Field ini berfungsi sebagai penentu urutan menu beserta sub sub menu di bawahnya. Contoh penggunanya seperti gambar di bawah ini:
  • Tabel sysgroupmenu berfungsi untuk menyimpan semua menu yang aktif berdasarkan group masing masing user.

Delete data ke Database

Kali ini yang akan kita bahas adalah proses Delete data ke database, sebelumnya kita buat interface untuk manajemen data nama di visual studio dengan menggunakan komponen DataGridView sebagai penampung data, kita buat form seperti contoh ini
 

Kemudian kita buat StoreProcedure di MySQL untuk proses Delete seperti berikut:

Setelah itu pada masing masing tombol fungsi di isikan dengan kode berikut:

Penjelasannya adalah sebagai berikut:
  1. Tombol detail bila di tekan akan masuk ke form detailNama yg kita buat pada penjelasan sebelumnya. disini user hanya dapat melihat saja tanpa bisa melakukan perubahan data.
  2. Tombol Baru berfungsi sebagai trigger gIsAdd pada form detailNama.
  3. Tombol Koreksi berfungsi sebagai trigger gIsEdit pada form detailNama.
  4. Untuk tombol Hapus, perintah yg digunakan juga hampir sama dengan seperti kita melakukan insert atau update data pada database, yakni buka koneksi, tentukan jenis SqlCmd nya, masukan nama StoreProcedure beserta parameternyadan eksekusi query tersebut.

Insert atau Update ke Database

Penjelasan kali ini kita coba membahas bagaimana cara menambahkan data ataupun mengubah data yang ada pada database. Kita gunakan form yang sama seperti tutorial sebelumnya.



Kemudian kita buat StoreProcedure di MySQL untuk proses Insert dan Update seperti berikut:

Setelah itu pada tombol Simpan, kita masukan kode seperti di bawah ini:

Penjelasannya adalah sebagai berikut:
  1. Karena field kode nama dan field nama adalah field yang harus di entri, maka kita lakukan pengecekan terlebih dahulu, bahwa field tersebut harus ada isinya.
  2. Kita buka koneksi ke database dengan menggunakan OpenConn.
  3. Kemudian kita tentukan apakah saat ini kita akan menggunakan mode insert atau update, penjelasan lebih detail mengenai mode ini akan di bahas di tutorial selanjutnya.
  4. Selanjutnya proses hampir sama dengan fungsi LoadData(). Hanya saja karena ini adalah proses insert data atau update data, kita tidak perlu menyimpan hasil dari query karena sifatnya adalah satu arah, sehingga untuk menjalankan query tersebut kita gunakan perintah MySQLCmd.ExecuteNonQuery().
  5. Yang perlu di perhatikan adalah variabel gTransStat, variabel ini adalah sebagai penentu apakah transaksi yang kita lakukan berhasil dijalankan di server atau gagal. Apabila statusnya True maka data akan di COMMIT bila terjadi error (misal data kembar, koneksi putus, dll) maka data akan di ROLLBACK.

Menggunakan OpenConn dan CloseConn

Kemarin sudah kita bahas mengenai cara koneksi antara VB.NET ke MySQL dengan membuat fungsi sederhana OpenConn dan CloseConn. Sekarang kita akan membahasa bagaimana cara menggunakan fungsi tersebut.

Perlu di perhatikan, di pembahasan tutorial ini semua transaksi query CRUD (Create, Read, Update dan Delete) semuanya menggunakan Store Procedure. Baik query yang rumit maupun query yang simple, semua menggunakan Store Procedute. Pertimbanganya adalah dengan menggunakan Store Procedure, semua query di lakukan pada sisi server, sehingga menggurangi kinerja jaringan.

Sebelumnya kita coba buat contoh tabel MasterName di MySQL. Kita buat dengan menggunakan struktur seperti ini:

Kemudian kita buat Store Procedure untuk men-Select data yang ada pada tabel Mastername, kita buat dengan menggunakan parameter, yang berfungsi sebagai option terhadap hasil query ini :

Kemudian di Visual Studio kita coba buat form dengan tampilan sebagai berikut:



Setelah semua sudah kita buat, sekarang kita buat fungsi LoadData(), dan letakkan fungsi ini pada event onLoad:

Penjelasan untuk Fungsi LoadData adalah sebagai berikut:
  1. Kita Buka koneksi dulu ke database MySQL dengan menggunakan perintah OpenConn.
  2. Set MySQLCmd menggunakan mode Transaction
  3. Set juga jenis dari MySQLCmd menggunakan tipe StoreProcedure (tipe pada MySQLCmd ini bisa berupa Text, StoreProcedure, dan TabelDirect).
  4. Kemudian kita isikan nama StoreProcedure yang terlah kita buat di databasae MySQL dalam contoh ini adalah Name_Browse, dan isikan masing masing parameter nya.
  5. Setelah itu ada variabel MySQLDr - DataReader, variabel ini berfungsi sebagai penampung hasil dari eksekusi query yang kita jalankan.
  6. Untuk memanggil isi dari masing masing field, kita gunakan perintah MySQLDr.Read()
  7. Kemudian kita isikan field field yang ada di form dengan hasil dari MySQLDr tersebut.
  8. Setelah semua sudah kita isikan ke masing masing field, biasakan kita untuk selalu menutup variabel yang sudah tidak kita pake agar memory lebih bersih dengan perintah MySQLDr.Close() dan MySQLCmd.Dispose().
  9. Setelah itu kita Tutup koneksi ke database MySQl dengan menggunakan perintah CloseConn.

Selasa, 04 September 2012

Persiapan Pertama

Pertama-tama beberapa software yang harus di siapkan:
  1. Microsoft Visual Studio 2010.
  2. MySQL Database (dapat di download di MySQL Comunity Server 5.5.27 32bit atau MySQL Comunity Server 5.5.27 64bit ) - Database Server yang free dan banyak di gunakan oleh banyak orang di seluruh dunia.
  3. MySQL .NET Connector (dapat di download di MySQL .Net Connector 6.5.4) - Connector penghubung antara VB.NET dengan database MySQL
  4. MySQL Workbench (dapat di download di MySQL Workbench 5.2.42) - sebagai interface database admin yang cukup lengkap dan handal
  5. [Optional] Crytal Report for Visual Studio 2010 (dapat di download di SAP Crystal Reports for VS2010) - Reporting tools yang cukup handal dan tentu saja...free.
Download semua software pendukung dan instal menurut urutan masing-masing. Setelah semua terinstall saatnya lanjut ke bagian pertama.

Buka project baru di visual studio 2010. Jangan lupa, pilih VB.net project. beri nama project tersebut sesuai keingan. Agar MySQl dapat di kenali di VS 2010 kita perlu menambah referensi dari MySQL Connector tersebut ke dalam project baru. Caranya: Setelah membuat project baru, pilih menu Project > Properties > di bagian Reference tambahkan referensi baru (default foldernya adalah di program files\mysql\mysql connector net 6.5.4\assemblies\v4.0) > pilih mysql.data.dll.
Setelah itu tinggal di simpan.

Pertama kita harus membuat koneksi antara vb.net dengan mysql.
Ada baiknya Koneksi yang kita buat di simpan dalam modul..agar dapat di pake berulang ulang.
Tambahkan modul baru pada project tersebut. dan lampirkan kode berikut:

Function OpenConn() - berguna untuk membuka koneksi ke database mysql. Koneksi ini support untuk Database Trasaction (apa itu Database Transaction bisa di baca disini).

Function CloseConn() - berfungsi untuk menutup koneksi ke database mysql. Sebelum koneksi di tutup akan di cek integritas data nya terlebih dahulu, jika tidak ada error maka database di tutup dengan status COMMIT, jika ternyata ada error makan akan di tutup dengan status ROLLBACK.
(Penjelasan mengenai commit dan rollback dapat di baca disini).

Perhatikan terdapat variabel gConnString - ini adalah variable global yg memuat connection string antara vb.net dengan mysql, isinya adalah:
gConnString ="server=" & My.Settings.ServerName & ";" & "User Id=root;password=1234;Persist Security Info=false;database=" & LCase((My.Settings.DatabaseName))

Untuk user id dan password diisikan sesuai dengan pada saat kita instal database MySQL pertama kali. Disini username dan password sengaja di hardcoding, supaya database kita tidak di buka sembarangan oleh orang yg tidak berkepentingan.
Sedangkan server name dan database name ada baiknya tidak di hardcode, karena servername dan database name sifatnya umum sehingga kita bisa letakkan variabel tersebut di file application setting (bagi yg sudah paham vb.net, seharusnya tau apa itu config.xml, bagi pemula bisa di baca apa itu application setting disini).

Dimana kita deklarasikan gConnString ini, jawabnya terserah pada Anda, yang pasti sebelum kita membuka koneksi ke MySQL, variabel tersebut harus sudah ada isinya. dan varibel gConnString ini cukup di deklarasikan 1x saja (Kecuali ada kebutuhan lain yang bersifat akses ke database lain).
Menurut saya ada baiknya variabel gConnString ini di letakkan di form awal semacam form login (biasanya form login akan pasti di tampilkan pertama kali jika membuat suatu aplikasi database).

Sekian untuk hari ini, kita lanjutkan besok..