Menyimpan Data Dalam MsFelxGrid ke Database Dan Validasinya

Pada kesempatan yang lain saya telah membahas cara menyimpan data dalam listview ke database, pada kesempatan kali ini saya akan membahasa cara menyimpan data yang telah dimasukan ke dalam MsFlexGrid ke Database.

Bagi anda yang belum bisa silahkan simak/baca dengan teliti sampai akhir tulisan ini. Saya membuat alurnya seperti ini : Kita akan memasukan data yang telah di input di textbox ke dalam msflexgrid. ulang cara tersebut untuk input data lagi, jika datanya dirasa sudah cukup, lalu data yang ada dalam msflexgrid kita simpan dengan cara menekan tombol simpan.
Dalam contoh ini saya memakai database accsess dengan nama DB_MHS dan dengan nama tabel Tbl_Mhs

Untuk langkah-langkahnya silahkan buat atau desain sebuah form seperti gambar yang nampak dibawah ini :

Tampilkan Gambar



Kemudian untuk mengatur MsFlexGrid silhkan klik kanan pada msFlexGrid pilih Properties maka akan muncul jendela pengaturan dan samakan seperti yang nampak pada gambar berikut ini:

Tampilkan Gambar



Jika sudah tambahkan sebuah modul dengan cara klik menu project-add Module, kemudian ketikan koding berikut ini  di dalam module tersebut :

Option Explicit
Public Conn As New ADODB.Connection
Public RsMhs As ADODB.Recordset

Public Sub KonekDB()
    Set Conn = New ADODB.Connection
    Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB_MHS.mdb"
    Conn.CursorLocation = adUseClient
End Sub

Koding di atas digunkan untuk koneksi visual basic ke database.
Kemudian kita lanjutkan ke penulisan koding di dalam formnya. Silahkan ketikan koding berikut ini pada General Deklaration pada form :

Option Explicit
Dim i As Integer
Dim SQL As String

Sub AktifGrid()
    MSFlexGrid1.Clear
    MSFlexGrid1.Cols = 4
    MSFlexGrid1.Rows = 1
    MSFlexGrid1.RowHeightMin = 300
    '------------------------------
    MSFlexGrid1.Col = 0
    MSFlexGrid1.Row = 0
    MSFlexGrid1.ColWidth(0) = 1220
    MSFlexGrid1.Text = "NIM"
    MSFlexGrid1.CellFontBold = True
    MSFlexGrid1.AllowUserResizing = flexResizeColumns
    MSFlexGrid1.CellAlignment = flexAlignCenterCenter
    '-------------------------------------------------
    MSFlexGrid1.Col = 1
    MSFlexGrid1.Row = 0
    MSFlexGrid1.Text = "NAMA"
    MSFlexGrid1.CellFontBold = True
    MSFlexGrid1.ColWidth(1) = 2440
    MSFlexGrid1.AllowUserResizing = flexResizeColumns
    MSFlexGrid1.CellAlignment = flexAlignCenterCenter
    '-------------------------------------------------
    MSFlexGrid1.Col = 2
    MSFlexGrid1.Row = 0
    MSFlexGrid1.Text = "ALAMAT"
    MSFlexGrid1.CellFontBold = True
    MSFlexGrid1.ColWidth(2) = 2650
    MSFlexGrid1.AllowUserResizing = flexResizeColumns
    MSFlexGrid1.CellAlignment = flexAlignCenterCenter
    '-------------------------------------------------
    MSFlexGrid1.Col = 3
    MSFlexGrid1.Row = 0
    MSFlexGrid1.Text = "JURUSAN"
    MSFlexGrid1.CellFontBold = True
    MSFlexGrid1.ColWidth(3) = 2430
    MSFlexGrid1.AllowUserResizing = flexResizeColumns
    MSFlexGrid1.CellAlignment = flexAlignCenterCenter
End Sub

Koding di atas berfungsi untuk mengatur tampilan msflexgrid.
Selanjutnya ketikan koding berikut ini pada Form Load :

Private Sub Form_Load()
    'Memanggil Koneksi database
    Call KonekDB
    
    'Memanggil pengaturan msflexgrid
    Call AktifGrid
End Sub

Jika sudah silahkan double klik tombol cmdMasuk, kemudian ketikan koding berikut ini :

Private Sub cmdMasuk_Click()
    'Untuk mencegah Data kosong
    If TxtNim.Text = "" Or TxtNama.Text = "" Or TxtAlamat.Text = "" Or TxtJurusan.Text = "" Then
        MsgBox "Masih Ada Data Yang Kosong .....!", vbCritical, "Perhatian ..!"
        Exit Sub
    End If

    Set RsMhs = New ADODB.Recordset
    RsMhs.Open "SELECT NIM FROM tbl_Mhs WHERE NIM='" & TxtNim.Text & "'", Conn, adOpenForwardOnly, adLockReadOnly
    'Jika Jika dlm database tdk ditemukan dan di listvie msh kosong
    If RsMhs.EOF And MSFlexGrid1.Rows = 1 Then
        i = MSFlexGrid1.Rows
        MSFlexGrid1.Rows = i + 1
        MSFlexGrid1.TextMatrix(i, 0) = TxtNim.Text
        MSFlexGrid1.TextMatrix(i, 1) = TxtNama.Text
        MSFlexGrid1.TextMatrix(i, 2) = TxtAlamat.Text
        MSFlexGrid1.TextMatrix(i, 3) = TxtJurusan.Text

        TxtNim.Text = ""
        TxtNama.Text = ""
        TxtAlamat.Text = ""
        TxtJurusan.Text = ""
        TxtNim.SetFocus

    'Jika dlm database tdk ditemukan dan dlm Grid sudah ada datannya
    ElseIf RsMhs.EOF And MSFlexGrid1.Rows > 1 Then
        For i = 1 To MSFlexGrid1.Rows
            'mencegah data yang sama
            If MSFlexGrid1.TextMatrix(i, 0) = TxtNim.Text Then
                MsgBox "NIM " & MSFlexGrid1.TextMatrix(i, 0) & " Sudah Ada Dalam Daftar Grid, Silahkan Dicek", vbInformation, "Informasi"
                TxtNim.SetFocus
                Exit Sub
            End If
        Next i
        'Jika dlm Grid Belum ada NIM yang sama
        'maka Memasukan Datanya
            i = MSFlexGrid1.Rows
            MSFlexGrid1.Rows = i + 1
            MSFlexGrid1.TextMatrix(i, 0) = TxtNim.Text
            MSFlexGrid1.TextMatrix(i, 1) = TxtNama.Text
            MSFlexGrid1.TextMatrix(i, 2) = TxtAlamat.Text
            MSFlexGrid1.TextMatrix(i, 3) = TxtJurusan.Text

        'Membersihkan textbox
            TxtNim.Text = ""
            TxtNama.Text = ""
            TxtAlamat.Text = ""
            TxtJurusan.Text = ""
            TxtNim.SetFocus
    Else
        'Jika dlm database sudah ada data yang sama
        MsgBox "NIM " & TxtNim.Text & " Sudah Ada Dalam Database, Silahkan Dicek", vbInformation, "Informasi"
        Exit Sub
    End If
    RsMhs.Close
End Sub

Koding diatas digunakan untuk memasukan data dari textbo ke dalam msflexgrid.

Selanjutnya silahkan double klik tombol cmdSimpan dan ketikan koding berikut ini yang berfungsi untuk menyimpan data yang ada dalam msflexgrid ke database.

Private Sub cmdSimpan_Click()
    If MSFlexGrid1.Rows > 1 Then
        For i = 1 To MSFlexGrid1.Rows - 1
            Set RsMhs = New ADODB.Recordset
            RsMhs.Open "SELECT NIM FROM tbl_Mhs WHERE NIM='" & MSFlexGrid1.TextMatrix(i, 0) & "'", Conn, adOpenDynamic, adLockReadOnly
            If RsMhs.EOF Then
                SQL = ""
                SQL = "INSERT INTO TBL_MHS(NIM,NAMA,ALAMAT,JURUSAN)VALUES " _
                    & "('" & MSFlexGrid1.TextMatrix(i, 0) & "'," _
                    & "'" & MSFlexGrid1.TextMatrix(i, 1) & "'," _
                    & "'" & MSFlexGrid1.TextMatrix(i, 2) & "'," _
                    & "'" & MSFlexGrid1.TextMatrix(i, 3) & "')"
                Conn.Execute SQL
            Else
                MsgBox "NIM " & MSFlexGrid1.TextMatrix(i, 0) & " Sudah Ada Dalam Database, Silahkan Dicek", vbInformation, "Informasi"
                Exit Sub
            End If
        Next i
        Call AktifGrid
        RsMhs.Close
        MsgBox "Data Berhasil Disimpan...", vbInformation, "Informasi..."
        TxtNim.SetFocus
    End If
End Sub

Jika sudah semua silahkan disimpan terlebih dahulu, selanjutkan silahkan untuk dijalankan. Demikain tutorial dari saya semoga dapat bermanfaat. Silahkan download source code dari tutorial ini di bawah ini.


 Download :

Keywords:
Menyimpan Data Dalam Grid Ke Database, Memasukan Data Dalam Grid Ke Database, Bagaimana Menyimpan Data Dalam Grid Ke Database, Bagaimana Memasukan Data Dalam Grid Ke Database, Cara Memasukan Data Dalam Grid Ke Database, Cara Menyimpan Data Dalam Grid Ke Database

2 comments:

  1. maaf mau tanya, kok di saya keluar subscript out of range yaa.. terima kasih

    ReplyDelete
  2. Sama ditempat saya juga muncul out of range. Dimananya yang harus diperbaiki?? Trima kasih

    ReplyDelete