Maaf atas keterlambatan dalam membuat lanjutan dari tutorial operasi CRUD ini. Sudah setahun lebih..
Anyway, ini merupakan versi revisi dari versi sebelumnya. Artinya, kelanjutan dari versi sebelumnya tidak akan ada, karena di versi ini semua dibuat ulang dari NOL.
Tutorial ini menggunakan Visual Studio 2008 sebagai IDE-nya dengan SQL Server 2005 Express Edition sebagai backend database.
Terima kasih atas kesabarannya dan kritikan yang sering saya terima lewat email, YM maupun rumah.. Langsung saja, berikut tutorialnya..
1. Membuat project
Setelah masuk ke dalam IDE Visual Studio, buat project baru lewat menu ‘File > New Project’ dengan nama ‘TutorialVB.NET’.
[Klik gambar untuk memperbesar]
2. Membuat Database
Database yang akan digunakan adalah SQLServer 2005 Express Edition. Pada jendela ‘Solution Explorer’ (atau tekan kombinasi tombol CTRL+R untuk menampilkan Solution Explorer), klik kanan pada project ‘TutorialVB.NET’ > Add > New Item
Pada jendela yang muncul, pilih ‘Service-based Database’ dan beri nama ‘Database1.mdf’
Klik ‘Add’ maka sebuah jendela baru ‘Data Source Configuration Wizard’ akan tampil. Klik ‘Finish’ untuk menambahkan Datasource baru tersebut ke dalam project.
Tampilan pada ‘Solution Explorer’ akan menjadi seperti ini:
Database1.mdf telah ditambahkan ke dalam Solution Explorer
3. Membuat tabel
Pada bagian kiri dari IDE, buka panel ‘Server Explorer’pada (atau dengan mengklik kombinasi tombol CTRL+ALT+S). Klik kanan pada node ‘Table’ dan pilih ‘Add New Table’. Klik ‘Save’ dan beri nama ‘tblBarang’.
Kita akan membuat tabel barang. Buatlah field-field baru seperti tampilan berikut:
Selanjutnya field pada KdBarang akan dijadikan sebagai ‘primary key’ dengan nilai auto increment sebanyak 1. Caranya, klik kanan pada baris KdBarang dan pilih ‘Set Primary Key’ untuk menjadikan field KdBarang sebagai primary key pada tabel ini.
Pada bagian kiri dari field KdBarang akan muncul tanda kunci berwarna kuning yang menandakan bahwa field KdBarang tersebut merupakan sebuah ‘Primary Key’/’Index’.
Selanjutnya kita akan membuat incremental value untuk field KdBarang dengan merubah nilai dari ‘Identity Specification’. Caranya: Pada bagian bawah dari table designer, dalam tab ‘Column Properties’, ubah nilai (IsIdentity) menjadi ‘Yes’ dengan ‘Identity Increment’ = 1 dan ‘Identity Seed’ = 1. Ini akan menjadikan nilai dari KdBarang menjadi auto increment sehingga bisa mengurangi kemungkinan duplikasi kode barang dalam proses transaksi. Lihat gambar:
Jadikan Default Value dari field ‘Jumlah’, ‘Harga’ dan ‘Dihapus’ menjadi nilai 0.
4. Menambah Module
Kita akan lanjutkan dengan menambah modul baru ke dalam project. Kegunaan atau fungsi dari modul ini nantinya adalah untuk menyimpan prosedur dan fungsi-fungsi serta variabel public yang akan digunakan oleh setiap class dalam project.
Pertama-tama, tambahkan folder baru ke dalam project dengan cara klik kanan pada project ‘TutorialVB.NET’ > ‘Add’ > ‘New Folder’ dan beri nama ‘Functions’. Kemudian klik kanan pada folder ‘Functions’ yang baru ditambahkan tadi kemudian pilih ‘Add’ > ‘Module’ untuk menambah modul baru ke dalam project. Beri nama modul baru tersebut dengan nama ‘PublicFunctions’.
5. Menulis kode untuk public functions
Pada modul yang baru dibuat tadi (PublicFunction.vb), ketikkan kode berikut:
Imports System.Data.SqlClient 'Untuk proses ke database
Imports System.IO 'Untuk proses penyimpanan log error
Module PublicFunctions
'Deklarasikan DBConnection sebagai object dari SQLConnection dengan string koneksi dari Database1ConnectionString
Public DBConnection As New SqlConnection(My.Settings.Database1ConnectionString)
Public ErrorLog As Boolean = True 'Aktifkan error log
Public lastSQL As String = "" 'String perintah sql terakhir
Public Function OpenConnection(ByRef RetMessage As String) As SqlConnection
Try
DBConnection.Open()
Catch ex As SqlException
RetMessage = ex.Message
Return Nothing
Catch ex As Exception
RetMessage = ex.Message
Return Nothing
End Try
Return DBConnection
End Function
Public Function DoSqlDataView(ByVal str As String) As DataView
Try
Dim da As SqlDataAdapter
Dim ds As DataSet
Dim dv As DataView
da = New SqlDataAdapter(str, DBConnection)
ds = New DataSet
da.Fill(ds)
dv = New DataView(ds.Tables(0))
Return dv
Catch e As Exception
'Jika terjadi kesalahan, simpan pesan kesalahan ke dalam file
saveerrormessage(e.Message, e.StackTrace, e.Source)
End Try
Return New DataView
End Function
Public Function DoSqlCommand(ByVal str As String) As Boolean
Try
lastSQL = str
Dim cm As SqlCommand
cm = New SqlCommand(str, DBConnection)
cm.ExecuteNonQuery()
Return True
Catch e As Exception
'Jika terjadi kesalahan, simpan pesan kesalahan ke dalam file
saveerrormessage(e.Message, e.StackTrace, e.Source)
Return False
End Try
End Function
Public Function GetIdentity(ByVal pFromTableName As String) As Integer
Dim str As String
Dim dv As DataView
Dim iIdentity As Integer
str = "SELECT @@IDENTITY as myValue FROM " & pFromTableName
dv = DoSqlDataView(str)
If dv.Count > 0 Then
iIdentity = CInt(dv(0)(0))
End If
Return iIdentity
End Function
Public Function PrepareStr(ByVal strValue As String) As String
Try
If strValue.Trim() = "" Then
Return "''"
Else
strValue = strValue.Replace("'", "''")
Return "'" & strValue.Trim & "'"
End If
Catch e As Exception
saveerrormessage(e.Message, e.StackTrace, e.Source)
Return "''"
End Try
End Function
Public Sub saveerrormessage(ByVal Message As String, ByVal stacktrace As String, ByVal source As String)
If ErrorLog = True Then
Dim errout As System.IO.StreamWriter
Dim errfilename As String = "RtError.txt" 'RtError merupakan nama file yang akan digunakan
If Not File.Exists(errfilename) Then
'file untuk menyimpan log error belum ada, buat baru..
errout = File.CreateText(errfilename)
Else
errout = File.AppendText(errfilename)
End If
'Buka dan tulis pesan error ke dalam file
errout.WriteLine("******* TutorialVB.NET RUNTIME ERROR *******")
errout.WriteLine("Date :" + CStr(Now()))
errout.WriteLine("MSG :" + Message)
errout.WriteLine("SQL :" + lastSQL)
errout.WriteLine("SOURCE :" + source)
errout.WriteLine("STACK :" + stacktrace)
errout.Flush()
errout.Close()
End If
End Sub
End Module
6. Menambah kontrol ListView ke dalam form
Sekarang masuk ke tahap desain form
. Kembali ke ‘Solution Explorer’, pada ‘Solution Explorer’ klik dua kali pada form ‘Form1’.
Buka panel ‘Toolbox’ pada bagian kiri (tekan kombinasi tombol CTRL+ALT+X untuk membuka panel ‘Toolbox’), dan pilih kontrol ListView. Klik tahan dan geser kontrol ListView ke dalam form.
Atur posisi dan ukuran dari ListView yang baru dimasukkan tadi sesuai selera dan ubah nama kontrol menjadi ‘LvBarang’ melalui panel ‘Properties’(tekan tombol F4 saat kontrol sedang dipilih untuk menampilkan panel ‘Properties’).
Selanjutnya akan kita tambahkan kolom-kolom baru pada kontrol ‘LvBarang’ dengan klik kanan pada ‘LvBarang’ dan pilih ‘Edit Columns’.
Pada kotak dialog ‘ColumnHeader Collection editor’ yang muncul, klik tombol ‘Add’ untuk menambah kolom baru. Masukkan ‘cKdBarang’ pada bagian ‘Name’ dan ‘Kode’ pada bagian ‘Text’.
Tambahkan 3 anggota kolom berikutnya dengan nama dan text masing-masing:
Name: cNoBarang, Text: No. Barang
Name: cNmBarang, Text: Nama
Name: cJumlah, Text:Jumlah
Name: cHarga, Text:Harga
Klik OK untuk menutup kotak dialog ‘ColumnHeader Collection Editor’.
Masih pada LvBarang, pada panel ‘Properties’, ubah nilai ‘FullRowSelect’=True, ‘MultiSelect’=False dan ‘View’=Details.
7. Menambah kontrol Textbox dan Label ke dalam form
Tampilkan panel Toolbox, pilih kontrol Texbox dan geser ke dalam form (cara hampir sama dengan cara memasukkan kontrol ListView ke dalam form). Masukkan 4 buah kontrol textbox. Atur posisi dan ukuran masing-masing Textbox sesuai selera. Properti name untuk setiap Textbox adalah sebagai berikut (atur melalui panel ‘Properties’ dengan menekan tombol F4 saat kontrol sedang dipilih):
Nama untuk masing-masing Textbox:
Name: TbNoBarang
Name: TbNmBarang
Name: TbJumlah
Name: TbHarga
Tambahkan juga 4 buat kontrol Label ke dalam form..
Nama dan Text untuk masing-masing Label:
Name: LbNoBarang, Text: No.:
Name: LbNmBarang, Text:Nama:
Name: LbJumlah, Text: Jumlah:
Name: LbHarga, Text: Harga:
Atur ukuran dan posisi kontrol-kontrol Texbox tersebut menjadi seperti gambar berikut..
8. Menambah kontrol Button ke dalam form
Pada panel ‘Toolbox’ pilih kontrol ‘Button’, klik tahan dan geser ke dalam form. Ganti properti Name dari kontrol Button tersebut melalui panel ‘Properties’.
Tambahkan 5 kontrol Button ke dalam form, dengan property Name dan Text untuk masing-masing Button:
Name: cmdBaru, Text: Baru
Name: cmdEdit, Text: Edit
Name: cmdSimpan, Text: Simpan
Name: cmdHapus, Text: Hapus
Name: cmdTutup, Text: Tutup
Atur lokasi dan posisi kelima kontrol Button tersebut seperti gambar:
9. Menulis kode
Ok, setelah user interface (UI) untuk form1 telah jadi, kini saatnya kita mulai menulis kode untuk Form1.
Pilih Form1.vb dari daftar object pada panel ‘Solution Explorer’. Klik kanan pada Form1.vb dan pilih ‘View Code’ atau dengan menekan tombol ‘F7’ pada keyboard.
Pada ‘Code View’ yang baru dibuka hanya akan terdapat 2 baris kode :
Public Class Form1 End Class
Sebelum melanjutkan ke penulisan kode pada Form1, kita akan membuat modul baru yang akan memuat daftar field dari dalam tabel barang yang telah dibuat .
10. Module TableList.vb
Melalui modul ini kita akan membuat Class-class untuk setiap tabel dalam database. Setiap Class dalam modul ini akan mewakili nama tabel dalam database.. dan setiap konstanta dalam modul ini akan mewakili nama dari setiap field dalam tabel tblBarang.
Tambahkan modul baru ke dalam project di dalam folder ‘Functions’. Klik kanan pada folder ‘Functions’ dan pilih ‘Add’ > ‘Module’.
Ubah nama modul menjadi ‘TableList.vb’ dan klik tombol ‘Add’.
[Klik gambar untuk memperbesar]
Dalam modul TableList.vb, tambahkan Class baru dengan nama tblBarang. Di dalam class tblBarang, tambahkan beberapa konstanta public sebagai wakil dari field-field dalam tabel tblBarang:
Module TableList
Public Class tblBarang
Public Const _tablename As String = "tblBarang" 'Nama tabel
Public Const KdBarang As String = "KdBarang" 'Field KdBarang dalam tabel
Public Const NoProduk As String = "NoProduk" 'Field NoBarang dalam tabel
Public Const NmBarang As String = "NmBarang" 'Field NmBarang dalam tabel
Public Const Jumlah As String = "Jumlah" 'Field Jumlah dalam tabel
Public Const Harga As String = "Harga" 'Field Harga dalam tabel
Public Const Dihapus As String = "Dihapus" 'Field Dihapus dalam tabel
End Class
End Module
11. PublicSQLBuilder
Setelah class dari tblBarang dibuat saatnya kita masuk ke bagian PublicSQLBuilder. Modul PublicSQLBuilder merupakan suatu module yang akan digunakan untuk memudahkan kita dalam mengeksekusi perintah-perintah SQL ke dalam database. Modul ini terdiri dari beberapa classs.
Class-class dalam modul PublicSQLBuilder terdiri dari:
Class SQLCaseWhenObject
Class SQLDataObject
Class SQLGroupStatement
Class SQLJoinStatement
Class SQLOrderStatement
Class SQLStringField
Class SQLTabelField
Class SQLWhereField
Class SQLInsertBuilder
Class SQLSelectBuilder
Class SQLUpdateBuilder
Dalam menggunakan PublicSQLBuilder ini, tidak diperbolehkan menghapus data dalam database. Sebagai penggantinya, gunakan field ‘Dihapus’ yang terdapat dalam tabel tblBarang.
Contoh penggunaan PublicSQLBuilder:
Untuk menjalankan perintah SELECT:
Dim sqlSelect As New SQLSelectBuilder
With sqlSelect
.AddTable(tblBarang._tablename)
.AddField(tblBarang.KdBarang)
.AddField(tblBarang.NmBarang)
.AddField(tblBarang.NoProduk)
.AddField(tblBarang.Jumlah)
.AddField(tblBarang.Harga)
.AddWhere(tblBarang.Dihapus, "=", 0)
End With
Untuk mendapatkan hasil dari statement di atas, gunakan property ‘getsqlcommand’
sqlSelect.getsqlcommand
Hasil dari sqlSelect.getsqlcommand adalah:
“SELECT KdBarang, NmBarang, NoProduk, Jumlah, Harga FROM tblBarang WHERE Dihapus = 0”
Untuk statement WHERE yang lebih dari satu gunakan keyword “AND”:
.AddField(tblBarang.Harga) .AddWhere(tblBarang.Dihapus, "=", 0) .AddWhere(“AND”, tblBarang.Harga, ">", 100)
Untuk menjalankan perintah INSERT:
Dim sqlInsert As New SQLInsertBuilder
With sqlInsert
.AddTable(tblBarang._tablename)
.AddField(tblBarang.NoProduk, TbNoBarang.Text)
.AddField(tblBarang.NmBarang, TbNmBarang.Text)
.AddField(tblBarang.Jumlah, TbJumlah.Text)
.AddField(tblBarang.Harga, TbHarga.Text)
End With
Hasil dari sqlInsert.getsqlcommand untuk statement di atas adalah:
“INSERT INTO tblBarang(NoProduk, NmBarang, Jumlah, Harga) VALUES (1,2,3,4)”
PublicSQLBuilder akan dibahas lebih lanjut pada saat penulisan koding ke dalam Form1
12. Menyatukan semua Fungsi dan Module ke dalam Form1
Kita kembali ke Form1. Tampilkan tampilan ‘Code View’ untuk Form1. Kita akan mencoba mengetik kode perintah untuk mengisi LvBarang dengan data-data dari database.
Yang akan kita lakukan adalah:
- Menampilkan data barang saat pertama kali form dibuka
- Menambah data baru ke dalam tabel tblBarang saat tombol simpan diklik.
- Meng-update data lama ke dalam tabel tblBarang saat tombol simpan diklik.
- Membedakan proses edit dan simpan saat tombol-tombol atau LvBarang diklik.
- Mengambil nilai dari KdBarang saat item dalam control LvBarang dipilih kemudian disimpan ke dalam variabel KdBarang.
.Menampilkan data barang saat pertama kali form dibuka
Dalam ‘Code View’ dari Form1, pada dropdown ‘Class Name’ di bagian kiri, pilih ‘(Form 1 Events)’ dan pada dropdown ‘Method Name’ di bagian kanan pilih ‘Load’.
Ketikkan kode berikut dalam Sub Form1_Load:
loadData()
Sehingga menjadi :
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
loadData()
End Sub
Berikut kode untuk sub loadData() :
Private Sub loadData()
'Menampilkan data dari database ke kontrol ListView LvBarang
'Di sini kita mulai menggunakan PublicSQLBuilder
'Deklarasikan sqlSelect sebagai Class SQLSelectBuilder
Dim sqlSelect As New SQLSelectBuilder
With sqlSelect
.AddTable(tblBarang._tablename) 'Menambah tabel barang ke daftar tabel yang akan digunakan
.AddField(tblBarang.KdBarang) 'Menambah KdBarang ke daftar Field yang akan diambil
.AddField(tblBarang.NmBarang) 'Menambah NmBarang ke daftar Field
.AddField(tblBarang.NoProduk) 'Menambah NoProduk ke daftar Field
.AddField(tblBarang.Jumlah) 'Menambah Jumlah ke daftar Field
.AddField(tblBarang.Harga) 'Menambah Harga ke daftar Field
.AddWhere(tblBarang.Dihapus, "=", 0) 'Hanya memilih barang yang belum dihapus (Dihapus = 0)
End With
'Hasil dari sqlSelect pada property getsqlcommand dengan cara di atas adalah:
'SELECT KdBarang, NmBarang, NoProduk, Jumlah, Harga from tblBarang WHERE Dihapus = 0
Dim dv As New Data.DataView
dv = DoSqlDataView(sqlSelect.getsqlcommand)
If dv.Count <> 0 Then
'Mengosongkan daftar barang dari dalam kontrol LvBarang
LvBarang.Items.Clear()
'Loop sampai semua data terbaca
For i As Integer = 0 To dv.Count - 1 'Menggunakan -1 agar nilai i dan nilai index dari dv sesuai
'Deklarasikan lv sebagai ListViewItem yang akan ditambahkan ke dalam kontrol LvBarang
'Tambahkan setiap nilai yang didapat dari database (dalam dataview dv) ke dalam object lv
Dim lv As New ListViewItem(CStr(dv(i)(tblBarang.KdBarang))) 'Mengambil nilai dari KdBarang pada index ke i
With lv.SubItems
.Add(CStr(dv(i)(tblBarang.NoProduk)))
.Add(CStr(dv(i)(tblBarang.NmBarang)))
.Add(CStr(dv(i)(tblBarang.Jumlah)))
.Add(CStr(dv(i)(tblBarang.Harga)))
End With
'Mengisi control LvBarang dengan isi dari lv
Me.LvBarang.Items.Add(lv)
Next
End If
End Sub
Kiranya penjelasan dari kode di atas cukup jelas sehingg belum perlu untuk dijabarkan lagi..
Jika dijalankan (dengan menekan tombol F5 pada keyboard) maka aplikasi akan menampilkan data-data barang yang terdapat dalam tabel barang yang memiliki nilai Dihapus = 0.
Untuk proses edit dan tambah data barang, kita tambahkan lagi 2 sub prosedur masing-masing untuk menambah data baru dan satunya lagi untuk meng-update data yang lama..
.Menambah data baru ke dalam tabel tblBarang saat tombol simpan diklik.
Tambahkan kode berikut ke dalam Form1:
Private Sub tambahData()
'Deklarasikan sqlInsert sebagai SQLInsertBuilder dari modul PublicSQLBuilder (Persiapan menambah data baru)
Dim sqlInsert As New SQLInsertBuilder
With sqlInsert
.AddTable(tblBarang._tablename) 'Nama tabel yang akan dipakai
.AddField(tblBarang.NoProduk, TbNoBarang.Text) 'Menambah isi NoProduk dengan nilai pada TbNoBarang
.AddField(tblBarang.NmBarang, TbNmBarang.Text) 'Menambah isi NmBarang dengan nilai pada TbNmBarang
.AddField(tblBarang.Jumlah, TbJumlah.Text) 'Menambah isi Jumlah dengan nilai pada TbJumlah
.AddField(tblBarang.Harga, TbHarga.Text) 'Menambah isi Harga dengan nilai pada TbHarga
End With
If DoSqlCommand(sqlInsert.getsqlcommand) Then 'Menjalankan perintah dari sqlInsert menggunakan DoSqlCommand
'Nilai dari KdBarang terakhir belum bisa diketahui, untuk mengetahui nilai dari suatu field yang
'bertipe auto increment bisa dengan menggunakan fungsi GetIdentity
'Mengambil nilai dari KdBarang yang baru dimasukkan
Dim KdBarangTerakhir As Integer = GetIdentity(tblBarang._tablename)
MessageBox.Show("Data berhasil disimpan dengan kode " & KdBarangTerakhir, Me.Text)
Else
MessageBox.Show("Gagal menyimpan data.", Me.Text)
End If
End Sub
Kemudian tekan kombinasi tombol SHIFT+F7 untuk kembali ke Designer View. Dari Designer View, klik dua kali tombol simpan, maka kita akan kembali ke dalam Code View. Ketikkan perintah berikut di dalam sub cmdSimpan_Click()
tambahData()
Sekarang kita sudah bisa menambah data pada database. Coba jalankan aplikasi dengan menekan tombol F5 pada keyboard, masukkan data-data dan klik tombol Simpan untuk mencoba hasilnya..
.Meng-update data lama ke dalam tabel tblBarang saat tombol simpan diklik.
Tambahkan kode berikut ke dalam Form1:
Private Sub updateData(Optional ByVal hapus As Boolean = False)
'Deklarasi sqlUpdate sebagai SQLUpdateBuilder (Persiapan mengupdate data lama)
Dim sqlUpdate As New SQLUpdateBuilder
With sqlUpdate
.AddTable(tblBarang._tablename) 'Nama tabel yang akan diupdate
.AddField(tblBarang.NoProduk, TbNoBarang.Text) 'Update nilai NoProduk dengan nilai dari TbNoBarang
.AddField(tblBarang.NmBarang, TbNmBarang.Text) 'Update nilai NmBarang dengan nilai dari TbNmBarang
.AddField(tblBarang.Jumlah, TbJumlah.Text) 'Update nilai Jumlah dengan nilai dari TbJumlah
.AddField(tblBarang.Harga, TbHarga.Text) 'Update nilai Harga dengan nilai dari TbHarga
'Bila hapus bernilai TRUE, maka data akan dihapus
If hapus Then
.AddField(tblBarang.Dihapus, 1)
End If
.AddWhere(tblBarang.KdBarang, "=", Me.KdBarang) 'Kode dari barang yang akan dihapus
End With
If DoSqlCommand(sqlUpdate.getsqlcommand) Then 'Menjalankan perintah dari sqlUpdate menggunakan DoSqlCommand
MessageBox.Show("Data berhasil diupdate", Me.Text)
Else
MessageBox.Show("Gagal mengupdate data.", Me.Text)
End If
End Sub
Kembali ke Designer View, klik 2 kali pada tombol simpan untuk tambahkan kode berikut yang akan meng-update data dalam tblBarang.
Ubah kode dalam sub cmdSimpan_Click() sehingga menjadi seperti berikut:
'Jika tidak sedang dalam kondisi Edit maka panggil prosedur tambahData, dan sebaliknya
If _sedangEdit = False Then
tambahData()
Else
updateData()
End If
. Membedakan proses edit dan simpan saat tombol-tombol atau LvBarang diklik.
Karena untuk proses tambah dan edit menggunakan satu tombol (cmdSimpan) maka ada beberapa logika yang perlu kita tambahkan.
Sebelumnya nonaktifkan tombol Simpan saat Form pertama kali ditampilkan, tambahkan kode cmdSimpan.Enabled = False :
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Tampilkan data saat pertama kali Form1 di tampilkan
loadData()
'Nonaktifkan tombol simpan
cmdSimpan.Enabled = False
End Sub
Pertama-tama kita buat sebuah variabel _sedangEdit dan beberapa sup prosedur yang masing-masing terdiri dari ‘Membuka textbox’, ‘Mengunci textbox’ dan ‘Mengosongkan textbox’.
Masukkan kode seperti di bawah ini ke dalam Form1:
Private _sedangEdit As Boolean = False
Sub _kunciTeks()
Me.TbHarga.Enabled = False
Me.TbJumlah.Enabled = False
Me.TbNmBarang.Enabled = False
Me.TbNoBarang.Enabled = False
End Sub
Sub _bukaTeks()
Me.TbHarga.Enabled = True
Me.TbJumlah.Enabled = True
Me.TbNmBarang.Enabled = True
Me.TbNoBarang.Enabled = True
End Sub
Sub _resetTeks()
Me.TbHarga.Text = ""
Me.TbJumlah.Text = ""
Me.TbNmBarang.Text = ""
Me.TbNoBarang.Text = ""
End Sub
Kita mulai dari cmdBaru..
Kembali ke Designer View dan klik 2 kali tombol Baru (cmdBaru), kita akan dibawa kembali ke Code View..
Ketikkan kode berikut pada sub cmdBaru_Click()
_sedangEdit = False 'Ini bukan proses edit
_resetTeks() 'Kosongkan textbox
KdBarang = 0 'Pastikan nilai pada variabel KdBarang = 0
If cmdBaru.Text = "Baru" Then 'Jika text cmdBaru = Baru
cmdSimpan.Enabled = True 'Aktifkan cmdSimpan
cmdEdit.Enabled = False 'Nonaktifkan cmdEdit
cmdHapus.Enabled = False 'Nonaktifkan cmdHapus
cmdBaru.Text = "Batal" 'Ubah text cmdBaru menjadi Batal
KdBarang = 0
_bukaTeks() 'Aktifkan Textbox
Else 'Jika text pada cmdBaru = Batal
cmdBaru.Text = "Baru" 'Ubah text pada cmdBaru menjadi Baru
cmdSimpan.Enabled = False 'Nonaktifkan cmdSimpan
cmdEdit.Enabled = True 'Aktifkan cmdEdit
cmdHapus.Enabled = True 'Aktifkan cmdHapus
_kunciTeks() 'Nonaktifkan semua textbox
End If
Untuk cmdEdit:
Pertama-tama kita perlu mengambil nilai dari KdBarang dari barang yang dipilih dalam LvBarang. Kembali ke ‘Designer View’, klik 2 kali LvBarang, kita akan diajak kembali ke tampilan ‘Code View’. Pada bagian kanan dari ‘Code View’, ubah Method name menjadi Click:
dan ketikkan kode berikut ke dalam sub LvBarang_Click()
Private Sub LvBarang_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LvBarang.Click
'Validasi: apakah di dalam kontrol LvBarang terdapat barang? Jika tidak ada, keluar dari Sub
If LvBarang.Items.Count = 0 Then
Exit Sub
End If
'Jika tidak ada barang yang dipilih, tampilkan pesan
If LvBarang.SelectedItems.Count = 0 Then
MessageBox.Show("Data tidak tersedia.", Me.Text)
Exit Sub
End If
'Mengambil nilai dari KdBarang pada barang yang terdapat pada index 0 dari item yang dipilih dari dalam LvBarang
KdBarang = CInt(LvBarang.SelectedItems(0).SubItems(0).Text)
'Mengisi tiap textbox dengan nilai dari barang yang dipilih dalam LvBarang
Me.TbNoBarang.Text = LvBarang.SelectedItems(0).SubItems(1).Text
Me.TbNmBarang.Text = LvBarang.SelectedItems(0).SubItems(2).Text
Me.TbJumlah.Text = LvBarang.SelectedItems(0).SubItems(3).Text
Me.TbHarga.Text = LvBarang.SelectedItems(0).SubItems(4).Text
End Sub
Kembali ke ‘Designer View’, klik 2 kali pada tombol cmdEdit dan masukkan kode berikut ke dalam sub cmdEdit_Click()
If KdBarang = 0 Then 'Jika belum ada barang yang dipilih dari dalam LvBarang, maka tampilkan pesan
MessageBox.Show("Silahkan pilih barang dari daftar.", Me.Text)
Exit Sub
End If
_sedangEdit = True 'Ubah variabel _sedangEdit menjadi True
_bukaTeks() 'Aktifkan textbox
cmdBaru.Text = "Batal" 'Ubah text pada cmdBaru menjadi "Batal"
cmdSimpan.Enabled = True 'Aktifkan cmdSimpan
cmdEdit.Enabled = False 'Nonaktifkan cmdEdit
cmdHapus.Enabled = False 'Nonaktifkan cmdHapus
Untuk tombol cmdHapus:
Kembali ke ‘Designer View’, klik 2 kali pada cmdHapus dan masukkan kode berikut ke dalam sub cmdHapus_Click()
Private Sub cmdHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdHapus.Click
'Jika tidak ada barang yang dipilih, tampilkan pesan
If KdBarang = 0 Then
MessageBox.Show("Tidak ada barang yang dipilih.", Me.Text)
Exit Sub
End If
'Tampilkan pesan konfirmasi penghapusan data
If MessageBox.Show("Ingin menghapus barang ini?", Me.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No Then
Exit Sub
End If
'Mulai proses penghapusan dengan memanggil prosedur updateData dengan mengatur nilai 'hapus' menjadi True
updateData(True)
'Kosongkan textbox
_resetTeks()
'Muat ulang semua data untuk melihat perubahan
loadData()
End Sub
Untuk cmdTutup:
Kembali ke Designer View, klik 2 kali tombol cmdTutup dan masukkan kode berikut ke dalam sub cmdTutup_Click()
Me.Close()
Selesai….. Coba jalankan aplikasi dengan menekan tombol F5 pada keyboard.
Download solution lengkap : TutorialVB.NET-REVISED (785)
Kiranya masih ada yang kurang, salah kata dan kalimat mohon dimaafkan.. Kiranya ada yang salah, mohon koreksi serta caci dan maki-nya..
Warm Regards n Wassalam..
Setelah cukup lama melupakan .NET kali ini kita akan mencoba membuat suatu aplikasi sederhana yang terdiri dari proses-proses Create, Read, Update ...
Sudah bukan merupakan rahasia lagi bahwa suatu aplikasi memerlukan pengamanan untuk User dan Password yang digunakan. Rahasia yang mungkin belum d ...
Sejak pertengahan 1990-an, JavaScript telah menjadi bagian dari pengembangan web, kala itu Netscape memperkenalkan versi ke 2 dari browser Netscap ...
PHP merupakan salah satu bahasa scripting yang cukup populer untuk digunakan dalam pengembangan web. PHP bersifat Open Source, artinya kita tidak ...
Kali ini saya coba mendesain suatu logo sederhana menggunakan Photoshop. Siapapun bisa membuatnya asalkan ada niat n kemauan.. Peralatan yang dip ...
Mantabs Gan... Mohon bimbingannya, saya baru bela
Makasih sob,, atas infonya ini sangat membantu se
kok contohnya kodingannya ga ada , penggalan kodin
keren templatex :-)
mksih brother atas ebooknya semoga sukses selalu..
Ajax alasan blog C# Cara datang Desain Download Ebook font Gambar gratis Grunge HDR Icon idfreelance inspirasi intro JavaScript jquery Keamanan Key Klien Kreatif Mengenali menggunakan Multithreading Pemrograman Pernikahan Photoshop PHP Programmer rahasia Script Software sumber Theme Thread Tip trik Tutorial VB Vista website Wordpress
Daftar link sahabat...
-Berbagi Ilmu -Blog Ooyi -Bobby Rahman -Caraku-Caramu -Ferditya Nugraha -Hadyan Fariz -Hidrogroup -I Putu Gusti -IndoSourceCode -Interaktif Tutorial -Jafriyal Bule -Medan Gamer -PolizeIRC -Rey’s Blog -Tech Review -Wawan
Mantabs Gan…
Mohon bimbingannya, saya baru belajar…
Share ya Gan. Salam…
mantap gan tutornya.
dan saya terpesona liat design blog ini. mantap abis gan.
A few years ago I’d have to pay someone for this iofnrmtaion.
Kereeeen gan.
Thank’s ilmu nya……….
wah website nya keren abis
boleh dong bagi ilmu webnya
keep posting