Minggu, 13 Januari 2013

Simple Proses Input - Edit - Delete Data Dengn VB.Net 2008 dan SQL Server 2008


Diposkan oleh T. Erick Sitorus | 05:50 | Aplikasi | 0 komentar »
Bila kita membuat aplikasi desktop yang memakai database, tentu kita akan bekerja dengan proses Input, Edit dan Delete data. Nah, di postingan kali ini kita akan membuat contoh proses tersebut dengan memakai database SQL Server 2008.

Seperti biasa siapkan dulu contoh tabel database yang akan digunakan. Sebagai contoh kita akan bermain dengan nama-nama obat. Nama databasenya testing dan nama tabelnya obat. Berikut penampakan tabel obat : (Script SQL query dapat didownload di akhir postingan).
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUc8rJ5FrUytea04VD1z8KcCotjoWZ8V4_bKvFv-FMh5HGZWjKCqVRcdO9FabM3Y44M2dXTNl5pYm2Y18UJdtjKfc6BBOcy4NUywp90mJ7t3zULW1IkQ0SBnn7x10WNiIXDnm9KJdUnJo/s400/tabel.gif

Buat Project baru di
 VB.Net 2008 dab berinama ProsesDataObat. Berikut tampilan Tab Solution Explorernya :
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9NZO9JX9-H8EvWOzDyxy3mCzd6fH4Ut1pGJKicBxahNACg6B_omidXFI6tAjPD49Rk_z76wWghs3Q0TJ4-coesfpLw-ocBQZ-D3g2JFaGedRq9eLqS5-ZXQLCR42u4a8LE5PqYOqaEdw/s1600/se.gif

Sebagai awal, rename form1 menjadi FormObat. Kira-kira form yang saya buat seperti berikut ini :
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfAEpi3-5Nacl3_Wz6_KJsZp0T-_bo4Gop4q9FcAiiZANqCdDQ5-6ObQpp-B8-9epXBoxOI9eD7yny2KgfVXP8EsO_h08DtFBr5WEM8kyrbVHMTnyN20DQ6maXbGAuOaIECf-kdGpBUNc/s400/formobat.gif

Sekarang buatlah File modul dengan nama ModulKoneksi.vb, file ini tentu untuk koneksi database. Berikut adalah contoh script koneksinya :


 Public koneksi As SqlConnection = Nothing 
 Public cmd As SqlCommand = Nothing 
 Public Sub koneksiDB() 
   Dim connString As String = "Data Source=ZHENLONK-342572;Initial Catalog=testing;Integrated Security=True" 
   Try 
     koneksi = New SqlClient.SqlConnection(connString) 
     koneksi.Open() 
     koneksi.Close() 
   Catch ex As Exception 
     MessageBox.Show("Database Connection Error : " & ex.Message) 
   End Try 
 End Sub 

Pada Form buat proses untuk load data ke FormObat. Intinya Pada saat Form Load, maka data di database akan di Load ke FormObat. Berikut ini contohnya:


 Sub getDataFromDB(ByVal i As Integer) 
   koneksiDB() 
   Try 
     koneksi.Open() 
     DS_Obat = New DataSet 
     sql = "SELECT * FROM obat" 
     DA_Obat.SelectCommand = New SqlClient.SqlCommand(sql, koneksi) 
     DA_Obat.Fill(DS_Obat, "obat") 
     RowNumber = i 
     koneksi.Close() 
   Catch ex As Exception 
     MessageBox.Show(ex.Message) 
   End Try 
 End Sub 
 Sub DaftarObat() 
   If DS_Obat.Tables("obat").Rows.Count = 0 Then 
     MsgBox("Data Obat di Database Masih Kosong", MsgBoxStyle.Exclamation, "Pesan Program") 
     Exit Sub 
   End If 
   Me.TextBoxKodeObat.Text = DS_Obat.Tables("obat").Rows(RowNumber)("kd_obat").ToString 
   Me.TextBoxNamaObat.Text = DS_Obat.Tables("obat").Rows(RowNumber)("nama").ToString 
   Me.ComboBoxJenisObat.Text = DS_Obat.Tables("obat").Rows(RowNumber)("jenis").ToString 
   Me.TextBoxStok.Text = DS_Obat.Tables("obat").Rows(RowNumber)("stok").ToString 
   Me.TextBoxSatuan.Text = DS_Obat.Tables("obat").Rows(RowNumber)("satuan").ToString 
   Me.TextBoxHargaBeli.Text = DS_Obat.Tables("obat").Rows(RowNumber)("hargabeli").ToString 
   Me.TextBoxHargaJual.Text = DS_Obat.Tables("obat").Rows(RowNumber)("hargajual").ToString 
 End Sub 

Berikutnya adalah tombol operasi data, namun untuk ini saya membuat 1 file modul khusus yaitu ModulFormObat.vb yang khusus untuk kode Operasi data (Lihat Solution Explorer). Pertama input data. Berikut adalah kode input data yang saya gunakan.


 Sub SaveData() 
   With FormObat 
     Try 
       If .TextBoxNamaObat.Text = "" Then MsgBox("Nama Obat Harus Diisi..!", MsgBoxStyle.Critical, "Pesan Kesalahan") : Exit Sub 
       If .TextBoxStok.Text = "" Then MsgBox("Stok Obat Harus Diisi..!", MsgBoxStyle.Critical, "Pesan Kesalahan") : Exit Sub 
       If .TextBoxHargaBeli.Text = "" Then MsgBox("Harga Beli Obat Harus Diisi..!", MsgBoxStyle.Critical, "Pesan Kesalahan") : Exit Sub 
       If .TextBoxHargaJual.Text = "" Then MsgBox("Harga Jual Harus Diisi..!", MsgBoxStyle.Critical, "Pesan Kesalahan") : Exit Sub 
       sql = "INSERT INTO obat VALUES ('" & .TextBoxKodeObat.Text & "', '" & .TextBoxNamaObat.Text & "', '" & .ComboBoxJenisObat.Text & "', '" & .TextBoxSatuan.Text & "', '" & .TextBoxStok.Text & "', '" & .TextBoxHargaBeli.Text & "','" & .TextBoxHargaJual.Text & "')" 
       cmd = New SqlClient.SqlCommand(sql) 
       cmd.Connection = koneksi 
       koneksi.Open() 
       cmd.ExecuteNonQuery() 
       koneksi.Close() 
       MsgBox("Data Obat " & .TextBoxNamaObat.Text & " Berhasil Disimpan", MsgBoxStyle.Information, "Pesan Program") 
       .LoadData() 
     Catch ex As Exception 
       MsgBox(ex.Message, MsgBoxStyle.Information, "Pesan Kesalahan") 
     End Try 
   End With 
 End Sub 

Kedua untuk Edit data, berikut adalah contoh kode yang saya gunakan.


 Sub EditData() 
   With FormObat 
     Try 
       If .TextBoxNamaObat.Text = "" Then MsgBox("Nama Obat Harus Diisi..!", MsgBoxStyle.Critical, "Pesan Kesalahan") : Exit Sub 
       If .TextBoxStok.Text = "" Then MsgBox("Stok Obat Harus Diisi..!", MsgBoxStyle.Critical, "Pesan Kesalahan") : Exit Sub  
       If .TextBoxHargaBeli.Text = "" Then MsgBox("Harga Beli Obat Harus Diisi..!", MsgBoxStyle.Critical, "Pesan Kesalahan") : Exit Sub 
       If .TextBoxHargaJual.Text = "" Then MsgBox("Harga Jual Harus Diisi..!", MsgBoxStyle.Critical, "Pesan Kesalahan") : Exit Sub 
       sql = "UPDATE obat SET nama='" & .TextBoxNamaObat.Text & "', " _ 
                  & "jenis = '" & .ComboBoxJenisObat.Text & "', " _ 
                  & "satuan = '" & .TextBoxSatuan.Text & "', " _ 
                  & "stok = '" & .TextBoxStok.Text & "', " _ 
                  & "hargabeli = '" & .TextBoxHargaBeli.Text & "', " _ 
                  & "hargajual = '" & .TextBoxHargaJual.Text & "' " _ 
                  & "WHERE kd_obat = '" & .TextBoxKodeObat.Text & "'" 
       cmd = New SqlClient.SqlCommand(sql) 
       cmd.Connection = koneksi 
       koneksi.Open() 
       cmd.ExecuteNonQuery() 
       koneksi.Close() 
       MsgBox("Data Obat " & .TextBoxNamaObat.Text & " Berhasil DiUpdate", MsgBoxStyle.Information, "Pesan Program") 
       .LoadData() 
     Catch ex As Exception 
       MsgBox(ex.Message, MsgBoxStyle.Information, "Pesan Kesalahan") 
     End Try 
   End With 
 End Sub 

Dan terakhir yaitu untuk Delete Data.


 Sub DeleteData() 
   With FormObat 
     Try 
       Dim hapus As Integer 
       Dim Sql As String 
       hapus = MsgBox("Anda Yakin Ingin Menghapus Data Obat " & .TextBoxNamaObat.Text & " ini?", MsgBoxStyle.OkCancel, "Info Program") 
       Select Case hapus 
         Case vbCancel 
           Exit Sub 
         Case vbOK 
           Sql = "DELETE FROM obat WHERE kd_obat = '" & .TextBoxKodeObat.Text & "'" 
           cmd = New SqlClient.SqlCommand(Sql) 
           cmd.Connection = koneksi 
           koneksi.Open() 
           cmd.ExecuteNonQuery() 
           koneksi.Close() 
           MsgBox("Data Berhasil Dihapus", MsgBoxStyle.Information, "Info Program") 
           .LoadData() 
       End Select 
     Catch ex As Exception 
       MsgBox(ex.Message, MsgBoxStyle.Information, "Pesan Kesalahan") 
     End Try 
   End With 
 End Sub 

Sedangkan untuk navigasi datanya, berikut adalah contoh kode yang saya gunakan.


 Private Sub ButtonFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonFirst.Click 
   RowNumber = 0 
   Me.DaftarObat() 
 End Sub 
 Private Sub ButtonPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPrev.Click 
   If RowNumber = 0 Then 
     MsgBox("Anda Berada di Data Paling Awal", MsgBoxStyle.Information, "Info Program") 
   Else 
     RowNumber -= 1 
     Me.DaftarObat() 
   End If 
 End Sub 
 Private Sub ButtonNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNext.Click 
   If RowNumber = DS_Obat.Tables("obat").Rows.Count - 1 Then 
     MsgBox("Anda Berada di Data Paling Akhir", MsgBoxStyle.Information, "Info Program") 
   Else 
     RowNumber += 1 
     Me.DaftarObat() 
   End If 
 End Sub 
 Private Sub ButtonLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLast.Click 
   RowNumber = DS_Obat.Tables("obat").Rows.Count - 1 
   Me.DaftarObat() 
 End Sub 

Untuk tombol Search buat Form baru dengan nama FormDataGrid. Berikut adalah tampilan Formnya :
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkkA8-OeaF5vyv5SUXkRv3dWKGTezbGB-xZn71nIfVjTqf9RYbUf9GFEvMqpnTNeijj8U11TdwcoxPudQ4n0mKArbxMqxgHQqigk7UUXiO3zXH8swEtVmIiRu22zWxIkRouoCpmthC_0g/s400/formdg.gif


Jadi, saat data terlalu banyak, user bisa memilih menggunakan Datagrid dengan klik pada cell atau double klik di baris data yang anda inginkan. Berikut adalah contoh kode saat user melakukan klik untuk pemilihan data:


 Private Sub DataGridFullData_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridFullData.DoubleClick 
   FormObat.getDataFromDB(DataGridFullData.CurrentCell.RowIndex) 
   FormObat.DaftarObat() 
   Me.Close() 
 End Sub 

Anda sebenarnya bisa download source code program di akhir artikel ini. Jangan lupa untuk menyesuaikan nama server databasenya dengan nama server SQL Server di komputer / laptop anda (lihat di ModulKoneksi.vb.)

Download Disini