Showing posts with label VB.NET MySQL. Show all posts
Showing posts with label VB.NET MySQL. Show all posts

Friday, September 25, 2020

Vb.Net Mysql: Create, Read, Update, Delete (Crud) - Part 1

Part 4

Setelah terbengkalai sekian usang menanti mood hehe... mari kita mulai membicarakan bagaimana proses CRUD pada VB.NET dan MySQL.
Pastikan udah baca dahulu artikel sebelumnya yah No 1 s/d 3.

Kita akan menciptakan CRUD untuk tabel berikut:
 Pertama-tama kita siapkan tombol-tombol pendukungnya, yakni Save, Edit, Delete, Cancel, dan Exit.
Pada acuan di sini Rani buat tombol nya pakai ToolStrip Control.

Detail cara membuatnya lihat disini yah...
Tambahkan juga beberapa label, textbox dan datagridview mirip pada gambar berikut:
Tambahkan panel untuk menyimpan label dan textbox untuk input data, lalu set property Dock = Top. Terakhir tambahkan datagridview dan set property Dock = Fill. Beri nama control-control seperti pada gambar.
Beres dengan UI, mari kita mulai dengan code behind.
Import MySqlClient dan System.Data:
Imports MySql.Data.MySqlClient
Imports System.Data


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 menciptakan sub procedure bernama Data_Load untuk memperlihatkan 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

    conn = New MySqlConnection()
    conn.ConnectionString = "server=localhost;user id=root;" & _
                            "password=;database=datapos"
    Try
        If conn.State = ConnectionState.Closed Then conn.Open()
        SQL = "Select classcode, classname From class"

        myCommand.Connection = conn
        myCommand.CommandText = SQL

        myAdapter.SelectCommand = myCommand
        myAdapter.Fill(myData)
        With grdData
            .DataSource = myData
            .AllowUserToAddRows = False
            .AllowUserToDeleteRows = False
            .ReadOnly = True

            .Columns(0).HeaderText = "Kode Kelas"
            .Columns(1).HeaderText = "Nama Kelas"
            .Columns(0).Width = 100
            .Columns(1).Width = 250
        End With

        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 ketika 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 menciptakan data baru. User akan memasukan data pada textbox instruksi dan nama, lalu 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

    Dim myCommand As New MySqlCommand

    conn = New MySqlConnection()
    conn.ConnectionString = "server=localhost;user id=root;" & _
                            "password=;database=datapos"
    Try
        conn.Open()
        SQL = "INSERT INTO class (classcode, classname) VALUES " & _
              "('" & txtCode.Text & "', '" & txtName.Text & "')"

        myCommand.Connection = conn
        myCommand.CommandText = SQL
        myCommand.ExecuteNonQuery()

        MsgBox("Data gres tersimpan")
        

        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 selaku penanda jikalau proses input data baru sudah sukses. Procedure Data_Load dipanggil lagi lalu biar pergeseran dapat ditampilkan di grid.
Mari kita coba dahulu menjalankan form dan menginput suatu data gres.

Belum beres, lanjut ke Part 2 yaa...

Tutorial VB.NET dan MySQL Lainnya

Click here if you like this article.



Sumber http://rani-irsan.blogspot.com

Vb.Net Mysql: Create, Read, Update, Delete (Crud) - Part 2

Part 4

Artikel ini lanjutan dari Part 1 ini yah.

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 melaksanakan double klik untuk menampilkan data yang akan di edit di control input (textbox). Maka kita akan membuat code berikut pada event grdData_CellMouseDoubleClick.

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


Kita menambahkan txtCode.ReadOnly = True, untuk mengunci aba-aba agar tidak dapat diedit alasannya ialah 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:

Private Sub tbrEdit_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles tbrEdit.Click

    grdData_CellMouseDoubleClick(Nothing, Nothing)

End Sub


Oiya sebelum lanjut ke Saving pergeseran, kita tambahkan dahulu 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.

Private Sub tbrCancel_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles tbrCancel.Click
    txtCode.Text = String.Empty
    txtName.Text = String.Empty
    tbrEdit.Enabled = True
    txtCode.ReadOnly = False
    Data_Load()
End Sub


Code tbrEdit.Enabled = False selaku parameter pembeda, apakah status input sedang input gres atau sedang edit data. Karena untuk menyimpan pergantian memakai event yang serupa yakni tbrSave_Click. Kita akan mengganti dan menyertakan beberapa code pada event ini. (Rani tandai dengan highlight perubahannya yah)

Private Sub tbrSave_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles tbrSave.Click

    Dim myCommand As New MySqlCommand

    conn = New MySqlConnection()
    conn.ConnectionString = "server=localhost;user id=root;" & _
                            "password=;database=datapos"
    Try
        conn.Open()
        If tbrEdit.Enabled = True Then
            SQL = "INSERT INTO class (classcode, classname) VALUES " & _
                  "('" & txtCode.Text & "', '" & txtName.Text & "')"
        Else
            SQL = "UPDATE class SET classname = '" & txtName.Text & "' " & _
                  "WHERE classcode = '" & txtCode.Text & "'"
        End If

        myCommand.Connection = conn
        myCommand.CommandText = SQL
        myCommand.ExecuteNonQuery()

        If tbrEdit.Enabled = True Then
            MsgBox("Data gres tersimpan")
        Else
            MsgBox("Perubahan tersimpan")
        End If

        tbrCancel_Click(Nothing, Nothing)

        conn.Close()
    Catch myerror As MySqlException
        MessageBox.Show("Error: " & myerror.Message)
    Finally
        conn.Dispose()
    End Try

End Sub

Sekarang mari kita coba lagi.

Jangan kemana-mana dulu, Part 3 masih lanjut membahas soal Delete dan Close Form.

Tutorial VB.NET dan MySQL Lainnya 

Click here if you like this article.



Sumber http://rani-irsan.blogspot.com

Thursday, September 24, 2020

Vb.Net Mysql: Create, Read, Update, Delete (Crud) - Part 3

Vb.Net Mysql: Create, Read, Update, Delete (Crud) - Part 4

Sunday, September 20, 2020

Vb.Net Mysql: Import Data Dari Excel - Part 1


Bagaimana cara import data dari excel ke database MySQL dengan menggunakan VB.NET?
Bicara ihwal import data dari excel dengan database apapunnya, gampang-gampang sukar.
Kita mampu bilang gampang kan klo udah tau cara/solusinya hehe...

Catatan penting: yang jadi beresiko error adalah validasi data. Bentuk dan isi data excel harus betul-betul 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 dahulu 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.
Atur UI seperti gambar berikut:
TextBox1 digunakan untuk menyimpan path dan nama file excel yang hendak dipakai, Button1 untuk browse file, dan Button 2 untuk proses import. ListBox1 untuk menyimpan nama-nama sheet. Label1 keterangan data excel dan Label2 untuk informasi data MySQL. DataGridView1 untuk memperlihatkan data tabel dari excel sementara DataGridView2 untuk menampilkan data dari MySQL.

Selesai dengan UI, lanjut ke Code. Pertama Import Class yang dipakai.
Imports System.IO 
Imports System.Data 
Imports System.Data.OleDb 
Imports MySql.Data.MySqlClient

Kemudian deklarasikan object data untuk dipakai 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

Sub Procedure berikut untuk memperlihatkan data dari tabel MySQL.
Sub MySQLDataLoad()
    Dim myCommand As New MySqlCommand
   
Dim myAdapter As New MySqlDataAdapter
   
Dim myData As New DataTable
   
Dim SQL As String

    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 memperlihatkan data excel, termasuk pilihan sheet dan isi tabel. Isi tabel excel akan disimpan dalam object DataTable dengan nama tblImport.
'Untuk memperlihatkan 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

    Dim sConn As String
    sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
            FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

    exConn = New System.Data.OleDb.OleDbConnection(sConn)
    cmd = New System.Data.OleDb.OleDbDataAdapter( _
          "select * from [" & SheetName & "]", exConn)
    cmd.TableMappings.Add("Table", SheetName)
    dt = New System.Data.DataSet
    cmd.Fill(dt)
    tblImport = dt.Tables(0)
    DataGridView1.DataSource = tblImport

    exConn.Close()
End Sub

 'Untuk menampilkan nama sheet di listbox
Sub GetExcelSheetNames(ByVal FileName As String)
    Dim sConn As String
    sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
            FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

    Dim conn As New OleDbConnection(sConn)

    conn.Open()

    Dim dtSheets As DataTable = _
    conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
    Dim drSheet As DataRow

    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

Lanjut di Part 2 ...

Click here if you like this article.



Sumber http://rani-irsan.blogspot.com

Saturday, September 19, 2020

Vb.Net Mysql: Import Data Dari Excel - Part 2

*.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

Kita juga akan mengundang procedure untuk menampilkan data di grid setiap opsi sheet di ListBox1 berganti.
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 pergantian file excel terpilih, jikalau 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 acuan ini yakni insert ignore. Query ini akan mengabaikan proses insert jikalau 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()

        MsgBox("Data baru tersimpan")

        conn.Close()
    Catch myerror As MySqlException
        MessageBox.Show("Error: " & myerror.Message)
    Finally
        conn.Dispose()
    End Try
End Sub

Event Button2_Click akan melaksanakan 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

    For i As Integer = 0 To tblImport.Rows.Count - 1
        DoInsert(tblImport.Rows(i).Item(0).ToString, _
                 tblImport.Rows(i).Item(1).ToString)
    Next
    MsgBox("Proses Import Selesai!")
    MySQLDataLoad()

End Sub

Oke tamat dengan code, mari kita coba run.
Data MySQL akan ditampilkan saat form pertama kali diundang, klik tombol Browse... untuk menentukan file excel.
Pilih file excel lalu klik Open.
Pilihan sheet akan ditampilkan di ListBox dan Data Excel dari sheet terpilih ditampilkan di grid. Klik tombol Import untuk mengawali proses import.
Ketika proses import simpulan, maka akan muncul pesan konfirmasi:
Hasil yang sudah di import pun ditampilkan di grid Data MySQL

Dan ini isi tabel di MySQL sesudah proses import.

Kode selengkapnya di Part 3 yah.



Click here if you like this article.



Sumber http://rani-irsan.blogspot.com

Vb.Net Mysql: Import Data Dari Excel - Part 3

*.xls