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 (3102)
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 ...
PHP merupakan salah satu bahasa scripting yang cukup populer untuk digunakan dalam pengembangan web. PHP bersifat Open Source, artinya kita tidak ...
Sejak pertengahan 1990-an, JavaScript telah menjadi bagian dari pengembangan web, kala itu Netscape memperkenalkan versi ke 2 dari browser Netscap ...
Kali ini saya coba mendesain suatu logo sederhana menggunakan Photoshop. Siapapun bisa membuatnya asalkan ada niat n kemauan.. Peralatan yang dip ...
Bagus bgt neh themenya... sugoooiii.. Mklum newbi
bro bgus kli
ciamik habis....... gan!!! thanx banget, semoga me
thaks yaaa gan sangat bermanfaat skali nih .......
pengen blajar banyak deh dengan admin idfreelance.
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
bro, kode SQLSelectBuilder kok eror ? ktnya not defined
keren mas Tutor nya . . . .
ane ada tugs kuliah tentang CRUd ini………
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