Tutorial VB
Tutorial VB
Buatlah Project baru dengan Nama CRUD, buat Form baru dengan
nama FrmUtama.vb, buat design FrmUtama seperti gambar berikut :
Buatlah Module koneksi ke database yang sudah anda buat, baca Tutorial Vb.Net :
Koneksi Database MySQL, Buatlah Module baru dengan nama MdlKoneksi, dan
pastekan Code berikut :
Imports System.Data
Imports System.Data.Odbc
Imports System.Data.SqlClient
Imports MySql.Data.MySqlClient
Imports System.Data.OleDb
Module MdlKoneksi
Public konek As OdbcConnection
Public DA As OdbcDataAdapter
Public DR As OdbcDataReader
Public DS As DataSet
Public CMD As OdbcCommand
Sub bukaDB()
Try
konek = New
OdbcConnection("DSN=crud;MultipleActiveResultSets=True")
If konek.State = ConnectionState.Closed Then
konek.Open()
End If
Catch ex As Exception
MsgBox("konek Kedatabase Bermasalah, Periksa koneksi Jaringan
Anda")
End Try
End Sub
End Module
Kode untuk tombol Tambah
Sub isigrid()
bukaDB()
DA = New Odbc.OdbcDataAdapter("SELECT * FROM biodata", konek)
DS = New DataSet
DS.Clear()
DA.Fill(DS, "biodata")
DataGridView1.DataSource = (DS.Tables("biodata"))
DataGridView1.Enabled = True
End Sub
Code Isi Data Dari Gridview Ke TextBox
DataGridView1.Rows(x).Cells(6).Value)
TextBox7.Text = DataGridView1.Rows(x).Cells(7).Value
TextBox8.Text = DataGridView1.Rows(x).Cells(8).Value
TextBox9.Text = DataGridView1.Rows(x).Cells(9).Value
Catch ex As Exception
End Try
End Sub
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
DataGridView1.CellClick
isiTextBox(e.RowIndex)
DATABARU = False
End Sub
Code untuk Frm Load
Setelah terbengkalai sekian lama menunggu mood hehe... mari kita mulai membahas bagaimana proses
CRUD pada VB.NET dan MySQL.
Pastikan udah baca dulu artikel sebelumnya yah No 1 s/d 3.
Pertama-tama kita siapkan tombol-tombol pendukungnya, yaitu Save, Edit, Delete, Cancel, dan Exit.
Pada contoh di sini Rani buat tombol nya pakai ToolStrip Control.
Deklarasikan sebuah objek koneksi dan sebuah variable string untuk menyimpan query di dalam Class
Form (Rani kasih nama form nya frmClass)
Public Class frmClass
Dim conn As MySqlConnection
Dim SQL As String
End Class
Kemudian kita akan membuat sub procedure bernama Data_Load untuk menampilkan data ke dalam
datagridview. Pastikan untuk menyimpan procedure ini di dalam class form. Pada sub procedure ini juga
Rani menambahkan Try Catch sebagai error handling.
Sub Data_Load()
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
With grdData
.DataSource = myData
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.ReadOnly = True
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Kita perlu menampilkan data ke dalam grid saat pertama form dibuka, karena itu kita akan memanggil
sub procedure Data_Load pada event Form_Load
Private Sub frmClass_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
Data_Load()
End Sub
Lanjuuut.... kita akan membuat procedure untuk membuat data baru. User akan memasukan data pada
textbox kode dan nama, kemudian klik toolbar Save untuk menyimpan data baru ke database. Berikut
code yang ditulis pada event tblSave_Click.
Private Sub tbrSave_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles tbrSave.Click
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
txtCode.Text = String.Empty
txtName.Text = String.Empty
Data_Load()
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Sebuah message box (pesan) ditambahkan setelah proses insert sebagai penanda jika proses input data
baru telah berhasil. Procedure Data_Load dipanggil lagi kemudian agar perubahan dapat ditampilkan di
grid.
Mari kita coba dulu menjalankan form dan menginput sebuah data baru.
VB.NET MySQL: Create, Read, Update, Delete (CRUD) - Part 2
Posted by rani irsan | 4/14/2015 | VB.NET MySQL
Next step, kita mau buat fasiltas buat edit/mengubah data yang sudah ada. Bagaimana user mengedit
data? Pertama mereka akan memilih data yang ada di grid, kemudian melakukan double klik untuk
menampilkan data yang akan di edit di control input (textbox). Maka kita akan membuat code berikut
pada event grdData_CellMouseDoubleClick.
txtCode.Text = grdData.CurrentRow.Cells(0).Value
txtName.Text = grdData.CurrentRow.Cells(1).Value
tbrEdit.Enabled = False
txtCode.ReadOnly = True
End Sub
Kita menambahkan txtCode.ReadOnly = True, untuk mengunci kode agar tidak dapat diedit karena
merupakan primary key. Selain dapat langsung double klik pada grid, user juga dapat memilih row data
kemudian klik tombol Edit, maka perlu procedure yang sama pada event tbrEdit_Click. Tapi kita tidak
akan mengetik ulang code melainkan memanggil sub procedure event CellMouseDoubleClick seperti
berikut:
grdData_CellMouseDoubleClick(Nothing, Nothing)
End Sub
Oiya sebelum lanjut ke Saving perubahan, kita tambahkan dulu code di event tbrCancel_Click dulu yah.
Karena procedure ini akan dipanggil beberapa kali. Fungsinya adalah untuk membersihkan control input,
refresh ulang data, dan membatalkan proses input baru/edit selama belum di Save.
Code tbrEdit.Enabled = False sebagai parameter pembeda, apakah status input sedang input baru atau
sedang edit data. Karena untuk menyimpan perubahan menggunakan event yang sama yaitu
tbrSave_Click. Kita akan mengubah dan menambahkan beberapa code pada event ini. (Rani tandai
dengan highlight perubahannya yah)
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
tbrCancel_Click(Nothing, Nothing)
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Makasih yah udah betah mantengin artikel-artikel nya Rani. Artikel ini lanjutan dari Part 2.
User memilih baris mana yang akan dihapus kemudian klik tombol Delete. Jadi kita akan membuat
prosedure berikut pada event tbrDelete_Click. Sebelum menghapus data diberikan pesan konfirmasi
proses hapus terlebih dahulu.
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
MsgBox("Data terhapus")
tbrCancel_Click(Nothing, Nothing)
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Imports MySql.Data.MySqlClient
Imports System.Data
Sub Data_Load()
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
With grdData
.DataSource = myData
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.ReadOnly = True
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
tbrCancel_Click(Nothing, Nothing)
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Private Sub grdData_CellMouseDoubleClick(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) _
Handles grdData.CellMouseDoubleClick
txtCode.Text = grdData.CurrentRow.Cells(0).Value
txtName.Text = grdData.CurrentRow.Cells(1).Value
tbrEdit.Enabled = False
txtCode.ReadOnly = True
End Sub
grdData_CellMouseDoubleClick(Nothing, Nothing)
End Sub
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
MsgBox("Data terhapus")
tbrCancel_Click(Nothing, Nothing)
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
End Class
Selanjutnya kita akan mencoba menampilkan isi table kategori pada database latihan ke DataGridView di
aplikasi VB.NET
Query yang digunakan:
Isi table:
Atur tampilan form sebagai berikut, dengan menambahkan control DataGridView yang diberinama
grdData.
Kemudian atur code sebagai berikut:
Imports MySql.Data.MySqlClient
Imports System.Data
Public Class Form1
Dim conn As MySqlConnection
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
grdData.DataSource = myData
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
End Class
Cobalah untuk run/debug aplikasi. Maka data kategori akan tampil di datagridview.
============
Bagaimana cara import data dari excel ke database MySQL dengan menggunakan VB.NET?
Bicara tentang import data dari excel dengan database apapunnya, gampang-gampang susah.
Kita bisa bilang gampang kan klo udah tau cara/solusinya hehe...
Catatan penting: yang jadi riskan error adalah validasi data. Bentuk dan isi data excel harus benar-benar
sesuai, klo ngga yaaaa error. Lebih lanjut tentang validasi belakangan aja yah.
Rani juga anggap readers udah paham tentang VB.NET & MySQL, jadi tau apa aja yang harus add
reference dll. Klo belum baca dulu Tutorial nya yah.
Nah bahasan disini Rani batasi dengan asumsi kondisi data excel valid dan sesuai. Berikut struktur tabel
tblKaryawan beserta isinya sebelum proses import.
TextBox1 digunakan untuk menyimpan path dan nama file excel yang akan digunakan, Button1 untuk
browse file, dan Button 2 untuk proses import. ListBox1 untuk menyimpan nama-nama sheet. Label1
keterangan data excel dan Label2 untuk keterangan data MySQL. DataGridView1 untuk menampilkan
data tabel dari excel sementara DataGridView2 untuk menampilkan data dari MySQL.
Selesai dengan UI, lanjut ke Code. Pertama Import Class yang digunakan.
Imports System.IO
Imports System.Data
Imports System.Data.OleDb
Imports MySql.Data.MySqlClient
Kemudian deklarasikan object data untuk digunakan di Class frmImportExcel.
Dim conn As New MySqlConnection
Dim strConn As String = "server=localhost;user id=root;" & _
"password=xxxx;database=latihan"
Dim tblImport As DataTable
Try
conn.Open()
SQL = "Select nik, nama From tblkaryawan"
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
DataGridView2.DataSource = myData
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Sub procedure di atas akan dipanggil di event Form_Load. Event ini juga memuat pengaturan connection
string dan beberapa pengaturan property UI.
Private Sub frmImportExcel_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.ReadOnly = True
Button1.Text = "Browse..."
Button2.Enabled = False
Button2.Text = "Import"
Label1.Text = "Data Excel"
Label2.Text = "Data MySQL"
With DataGridView1
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
With DataGridView2
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
conn.ConnectionString = strConn
MySQLDataLoad()
End Sub
Kemudian kita siapkan juga 2 buah procedure untuk menampilkan data excel, termasuk pilihan sheet dan
isi tabel. Isi tabel excel akan disimpan dalam object DataTable dengan nama tblImport.
'Untuk menampilkan data sheet di grid
Sub LoadExcel2Grid(ByVal FileName As String, ByVal SheetName As String)
Dim exConn As OleDbConnection
Dim dt As DataSet
Dim cmd As OleDbDataAdapter
exConn.Close()
End Sub
conn.Open()
ListBox1.Items.Clear()
For Each drSheet In dtSheets.Rows
ListBox1.Items.Add(drSheet("TABLE_NAME").ToString())
Next
LoadExcel2Grid(FileName, ListBox1.Items(0).ToString)
conn.Close()
End Sub
VB.NET MySQL: Import Data dari Excel - Part 2
Posted by rani irsan | 4/22/2015 | VB.NET MySQL
Untuk mencari file (browse) kita menggunakan event Button1_Click, jika file excel terpilih maka secara
otomatis data di sheet pertama akan tampil di grid.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
With OpenFileDialog1
.FileName = String.Empty
.InitialDirectory = "C:\"
.Title = "Open Excel File"
.Filter = "Excel 97-2003|*.xls|Excel 2007|*.xlsx"
End With
End Sub
Kita juga akan memanggil procedure untuk menampilkan data di grid setiap pilihan sheet di ListBox1
berubah.
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
LoadExcel2Grid(TextBox1.Text, ListBox1.SelectedItem.ToString)
End Sub
Event TextBox1_TextChanged menjadi parameter perubahan file excel terpilih, jika terdapat file excel
yang terpilih maka Button2 akan aktif.
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Button2.Enabled = (Len(TextBox1.Text) > 0)
End Sub
Sub Procedure DoInsert kita buat untuk proses insert data, query yang digunakan di contoh ini
adalah insert ignore. Query ini akan mengabaikan proses insert jika input dengan primary key yang sama
sudah ada.
Sub DoInsert(ByVal strNIK As String, ByVal strNama As String)
Dim myCommand As New MySqlCommand
Dim myAdapter As New MySqlDataAdapter
Dim myData As New DataTable
Dim SQL As String
Try
If conn.State = ConnectionState.Closed Then conn.Open()
SQL = "INSERT IGNORE INTO tblKaryawan (nik, nama) VALUES " & _
"('" & strNIK & "', '" & strNama & "')"
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
Event Button2_Click akan menjalankan proses migrasi, insert data akan diambil dari tblImport.
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
End Sub
Artikel ini masih merupakan artikel lanjutan dari Part2, yang akan menampilkan kode lengkap yang sudah
kita susun sebelumnya.
Imports System.IO
Imports System.Data
Imports System.Data.OleDb
Imports MySql.Data.MySqlClient
Try
conn.Open()
SQL = "Select nik, nama From tblkaryawan"
myCommand.Connection = conn
myCommand.CommandText = SQL
myAdapter.SelectCommand = myCommand
myAdapter.Fill(myData)
DataGridView2.DataSource = myData
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
TextBox1.ReadOnly = True
Button1.Text = "Browse..."
Button2.Enabled = False
Button2.Text = "Import"
Label1.Text = "Data Excel"
Label2.Text = "Data MySQL"
With DataGridView1
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
With DataGridView2
.AllowUserToDeleteRows = False
.AllowUserToAddRows = False
.ReadOnly = True
End With
conn.ConnectionString = strConn
MySQLDataLoad()
End Sub
exConn.Close()
End Sub
conn.Open()
ListBox1.Items.Clear()
For Each drSheet In dtSheets.Rows
ListBox1.Items.Add(drSheet("TABLE_NAME").ToString())
Next
LoadExcel2Grid(FileName, ListBox1.Items(0).ToString)
conn.Close()
End Sub
With OpenFileDialog1
.FileName = String.Empty
.InitialDirectory = "C:\"
.Title = "Open Excel File"
.Filter = "Excel 97-2003|*.xls|Excel 2007|*.xlsx"
End With
Dim result As DialogResult = OpenFileDialog1.ShowDialog()
If result = Windows.Forms.DialogResult.OK Then
Try
TextBox1.Text = OpenFileDialog1.FileName
GetExcelSheetNames(TextBox1.Text)
Catch ex As Exception
MsgBox("Error : " & ex.Message)
End Try
End If
End Sub
End Sub
Try
If conn.State = ConnectionState.Closed Then conn.Open()
SQL = "INSERT IGNORE INTO tblKaryawan (nik, nama) VALUES " & _
"('" & strNIK & "', '" & strNama & "')"
myCommand.Connection = conn
myCommand.CommandText = SQL
myCommand.ExecuteNonQuery()
conn.Close()
Catch myerror As MySqlException
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
End Sub
End Class
VB.NET: Menyimpan Setting Koneksi di User Setting
Posted by rani irsan | 5/16/2015 | VB.NET
Dimanakah kita menyimpan setting koneksi supaya bisa lebih dinamis dan dapat disetting oleh user?
Aplikasi dengan framework .NET menyediakan fasilitas built in untuk menyimpan setting yang dapat
diakses dan diatur saat runtime. Sehingga user dapat mengubah setting tanpa harus melakukan compile
ulang aplikasi.
Untuk lebih jelas nya kita langsung saja buka Project Properties dengan cara klik menu Project -> [Nama
Project] Properties.
Saat Project Properties terbuka klik tab Setting yang ada disisi kiri. Terdapat 4 kolom isian untuk masing-
masing baris setting yaitu Name, Type, Scope, Value. Rani isikan setting-setting yang diperlukan untuk
koneksi sebagai berikut:
Name merupakan nama dari setting yang nantinya dapat dipanggil dari code.
Type adalah tipe data untuk nilai yang diisikan.
Scope terdiri dari 2 jenis User dan Application. Scope Application bersifat readonly (hanya bisa dibaca)
saat runtime sementara scope user readable dan writeble (bisa dibaca dan diganti). Karena disini kita
ingin user dapat mengatur sendiri setting maka dipilihlah Scope User. Setting ini akan tersimpan pada
level user account, karena itu jika user window login berbeda bisa memiliki setting berbeda pula.
Sementara value merupakan nilai default dari setting sebelum nanti user dapat mengubahnya.
Oke, lanjut.....
String koneksi adalah variable yang perlu diakses dari hampir seluruh bagian project karena itu mari kita
buat variable-variable public yang disimpan dalam sebuah module.
Klik Project -> Add Module...
End Module
Kemudian kita buat juga sebuah sub procedure public untung memberikan nilai pada variable-variable
tersebut yang diambil dari user setting. Bisa disimpan juga dalam module sehingga bisa dipanggil
dimanapun dalam project saat diperlukan.
Public Sub GetDatabaseSetting()
dbServer = My.Settings.dbServer
dbUser = My.Settings.dbUser
dbPassword = My.Settings.dbPassword
dbName = My.Settings.dbName
sLocalConn = "server=" & dbServer & ";user id=" & dbUser & ";" & _
"password=" & dbPassword & ";database=" & dbName
End Sub
Sub GetDatabaseSetting dipanggil saat applikasi mulai dijalankan (misal nya saat form splash load).
Tapi saat ini Rani fokus dulu ke form koneksi nya yah, jadi sub ini akan dipanggil pada load form koneksi.
Oiya kita tambahkan juga di module sebuah function untuk mengecek apakah setting database koneksi
dapat terkoneksi sengan baik.
Public Function DatabaseConnected(Optional ByVal Server As String = "", _
Optional ByVal User As String = "", _
Optional ByVal Password As String = "", _
Optional ByVal DatabaseName As String = "") As Boolean
Dim conn As MySqlConnection
conn = New MySqlConnection()
If Server = "" And User = "" And Password = "" And DatabaseName = "" Then
conn.ConnectionString = sLocalConn
Else
conn.ConnectionString = "server=" & Server & ";user id=" & _
User & ";password=" & Password & _
";database=" & DatabaseName
End If
Try
conn.Open()
conn.Close()
Return True
Catch myerror As MySqlException
Return False
MessageBox.Show("Error: " & myerror.Message)
Finally
conn.Dispose()
End Try
Return False
End Function
Nah ceritanya untuk mempercepat, kita bisa pakai template form dialog untuk membuat form ini:
End Class
Pada event OK_Button_Click kita bisa melihat bagaimana cara mengubah nilai setting.
Sekian, selamat mencoba