Friday, 22 May 2015

Mengambil Nilai Datagridview Dari Form Berbeda

Dalam memahami isi dari tutorial ini, diasumsikan sudah memahami langkah - langkah dalam membuat aplikasi dari VB. Net dan Database Acces 2007.
Step 1 : Membuat database
Buat lah database baru dengan nama DevDb.accdb, lalu buat sebuah tabel dengan nama Pengguna.
Struktur Tabel Pengguna :
Field
Type
Size
Keterangan
Kd_User
Text
10
PK (Primary Key)
Nm_User
Text
20

Passw
Text
20

Status
Text
30

Isi lah tabel pengguna tersebut dengan field –field seperti dibawah ini :


Step 2 : Membuat Project VB. Net
            Buat lah project  baru, lalu tambahkan dua buah form dengan nama Form User dan Tabel Data User serta sebuah Module dengan  nama ModKoneksi.

a.      Membuat Module
ModKoneksi ini adalah sebagai koneksi antara aplikasi yang akan dibuat dengan database Access 2007. Ketikan kode berikut pada ModKonek :
Imports System.Data.OleDb
Module ModKoneksi
    Public cnn As OleDbConnection
    Public da As OleDbDataAdapter
    Public ds As DataSet
    Public cmmd As OleDbCommand
    Public dr As OleDbDataReader
    Public Str As String
    Public Sub Koneksi()
        Str = "Provider= Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\DevDb.accdb"
        cnn = New OleDbConnection(Str)
        If cnn.State = ConnectionState.Closed Then
            cnn.Open()
        End If
    End Sub
End Module

b.      Form User
Form User ini digunakan sebagai input data user.
             Property Setting :
Object
Name
Text
Form 1
Form_User
Form User
Label 1
LblKdUser
USR001
Label 2
Label 2
Kode Pengguna
Label 3
Label 3
Nama Pengguna
Label 4
Label 4
Password
Label 5
Label 5
Status
TextBox 1
TxtNm_User
USR001
TextBox 2
Kunci
-
ComboBox 1
CbStatus
-
Button 1
BtnCari
Cari
Button 2
BtnSimpan
Simpan
Button 3
BtnUbah
Ubah
Button 4
BtnBatal
Batal
Button 5
BtnHapus
Hapus
Button 6
BtnKeluar
Keluar
GroupBox 1
GroupBox 1
Data Pengguna
GroupBox 2
GroupBox 2
Navigasi

Klik 2x pada masing – masing object pada Form User, lalu ketikan kode berikut :
Imports System.Data
Imports System.Data.OleDb
Public Class FormUser

    Private Sub FormUser_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call Koneksi()
        Call HapusText()
        Call NOOTOMAT()
        Call buttonBaru()
        Call tidakisi()
        Call kosong()
    End Sub

    Sub NOOTOMAT()
        cmmd = New OleDbCommand("select * From Pengguna order by Kd_User desc", cnn)
        dr = cmmd.ExecuteReader
        dr.Read()
        If Not dr.HasRows Then
            LblKdUser.Text = "USR001"
        Else
       LblKdUser.Text = Val(Microsoft.VisualBasic.Mid(dr.Item("Kd_User").ToString, 5, 3)) + 1
            If Len(LblKdUser.Text) = 1 Then
                LblKdUser.Text = "USR00" & LblKdUser.Text & ""
            ElseIf Len(LblKdUser.Text) = 2 Then
                LblKdUser.Text = "USR0" & LblKdUser.Text & ""
            ElseIf Len(LblKdUser.Text) = 3 Then
                LblKdUser.Text = "USR" & LblKdUser.Text & ""
            End If
        End If
        dr.Close()
    End Sub

    Sub status()
        CbStatus.Items.Add("Admin")
        CbStatus.Items.Add("User")
    End Sub

    Sub kosong()
        CbStatus.Items.Clear()
        CbStatus.Items.Clear()
    End Sub

    Sub HapusText()
        LblKdUser.Focus()
        TxtNm_User.Text = ""
        TxtKunci.Text = ""
        BtnSimpan.Text = "Tambah"
    End Sub

    Sub bisaisi()
        TxtNm_User.Enabled = True
        TxtKunci.Enabled = True
        CbStatus.Enabled = True
    End Sub

    Sub tidakisi()
        TxtNm_User.Enabled = False
        TxtKunci.Enabled = False
        CbStatus.Enabled = False
    End Sub

    Sub buttonBaru()
        BtnSimpan.Enabled = True
        BtnUbah.Enabled = False
        BtnHapus.Enabled = False
        BtnBatal.Enabled = False
        BtnKeluar.Enabled = True
    End Sub

    Sub buttonEdit()
        btnSimpan.Enabled = False
        BtnUbah.Enabled = True
        btnHapus.Enabled = True
        BtnBatal.Enabled = True
        BtnKeluar.Enabled = False
    End Sub

    Sub buttonSimpan()
        btnSimpan.Enabled = True
        BtnUbah.Enabled = False
        BtnHapus.Enabled = False
        BtnBatal.Enabled = True
        BtnKeluar.Enabled = True
    End Sub

    Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSimpan.Click
        Dim simpan As String
        If BtnSimpan.Text = "Tambah" Then
            BtnSimpan.Text = "Simpan"
            Call bisaisi()
            Call NOOTOMAT()
            Call buttonSimpan()
            Call status()
            TxtNm_User.Focus()
        Else
            If TxtNm_User.Text = "" Then
                MsgBox("Isi Username Pengguna", MsgBoxStyle.Critical, "Pemberitahuan")
                TxtNm_User.Focus()
                Exit Sub
            End If
            If TxtKunci.Text = "" Then
                MsgBox("Isi Password Pengguna", MsgBoxStyle.Critical, "Pemberitahuan")
                TxtKunci.Focus()
                Exit Sub
            End If
            If CbStatus.Text = "" Then
                MsgBox("Isi Status Pengguna", MsgBoxStyle.Critical, "Pemberitahuan")
                CbStatus.Focus()
                Exit Sub
            End If
            Try
                simpan = "Insert Into Pengguna(Kd_User, Nm_User, Passw, Status)Values " & _
                    "('" & LblKdUser.Text & "','" & TxtNm_User.Text & "','" & TxtKunci.Text & "','" & CbStatus.Text & "')"
                cmmd = New OleDbCommand(simpan, cnn)
                Dim x As Integer = cmmd.ExecuteNonQuery()
                If x = 1 Then
                    Call HapusText()
                    Call tidakisi()
                    Call NOOTOMAT()
                    Call buttonBaru()
                    Call kosong()
                  MessageBox.Show("Data User Sudah Disimpan ", "Simpan Data Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If
    End Sub

    Private Sub BtnUbah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnUbah.Click
        Dim ubah As String
        If TxtNm_User.Text = "" Or TxtKunci.Text = "" Or CbStatus.Text = "" Then
            MsgBox("Tidak Ada Data Yang Diubah", MsgBoxStyle.Critical, "Pemberitahuan")
            Exit Sub
        Else
            Try
                ubah = "Update Pengguna set " & _
                "Nm_User='" & TxtNm_User.Text & "'," & _
                "Passw='" & TxtKunci.Text & "'," & _
                "Status='" & CbStatus.Text & "' " & _
                "where Kd_User='" & LblKdUser.Text & "'"
                cmmd = New OleDbCommand(ubah, cnn)
                Dim x As Integer = cmmd.ExecuteNonQuery()
                If x = 1 Then
                    Call HapusText()
                    MessageBox.Show("Data User Berhasil Diubah ", "Ubah Data Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Call tidakisi()
                    Call buttonBaru()
                    Call kosong()
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If
    End Sub

    Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click
        Call HapusText()
        Call tidakisi()
        Call NOOTOMAT()
        Call buttonBaru()
        Call kosong()
    End Sub

    Private Sub BtnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHapus.Click
        Dim hapus As String
        Try
            hapus = "DELETE FROM Pengguna WHERE Kd_User = '" & LblKdUser.Text & "'"
            cmmd = New OleDbCommand(hapus, cnn)
            Dim X As Integer = cmmd.ExecuteNonQuery()
            If X = 1 Then
                Dim popload As New Loading
                popload.ShowDialog()
                Call HapusText()
                MessageBox.Show("Data User Sudah Dihapus ", "Hapus Data Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Call buttonBaru()
                Call tidakisi()
                Call kosong()
            Else
                MsgBox("Gagal Hapus Data User", MsgBoxStyle.Critical, "Pemberitahuan")
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    Private Sub BtnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnKeluar.Click
        Me.Close()
    End Sub
End Class

Sampai disini Form User selesai dibuat. Jalan kan lalu isi data Form User sesuai dengan data yang diinginkan lalu klik tombol simpan, Seperti pada gambar berikut.


c.        Tabel Data User
Selanjutnya kita akan membuat tabel data user, untuk menampilkan data user yang sudah diinput pada Form User.

                      Property Setting :
Object
Name
Text
Form 1
Tabel_User
Tabel Data User
Label 1
Label 1
Tabel Data User
Label 2
Label 2
Kriteria
Label 3
Label 3
Kata Kunci
TextBox 1
TxtKey
-
TextBox 2
Counter
-
ComboBox 1
ComboBox 1
Username
Button 1
BtnKeluar
Keluar
DataGridView 1
DataGridView 1
-

Klik 2x pada masing – masing object pada Tabel Data User, lalu ketikan kode berikut :
Imports System.Data
Imports System.Data.OleDb
Public Class TabelUser
    Public sqlx, retKode, retUser, retPass, retStat As String

    Private Sub TabelUser_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        txtKey.Focus()
        Call Koneksi()
        Call ListData()
        ComboBox1.Items.Add("Username")
        ComboBox1.Items.Add("Status")
    End Sub

    Sub ListData()
        Dim x As Integer
        If ComboBox1.Text = "Username" Then
            cmmd = New OleDbCommand("select * from Pengguna where Nm_User like '%" & txtKey.Text & "%'", cnn)
            dr = cmmd.ExecuteReader
            dr.Read()
            If dr.HasRows = True Then
                da = New OleDbDataAdapter("select * from Pengguna where Nm_User like '%" & txtKey.Text & "%'", cnn)
                ds = New DataSet
                da.Fill(ds, "Pengguna")
                DataGridView1.DataSource = ds.Tables("Pengguna")
                x = DataGridView1.Rows.Count()
                counter.Text = x
            Else
                MessageBox.Show("Data User Tidak Ada ", "Info Pencarian Data", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                txtKey.Text = ""
                txtKey.Focus()
            End If
        ElseIf ComboBox1.Text = "Status" Then
            cmmd = New OleDbCommand("select * from Pengguna where Status like '%" & txtKey.Text & "%'", cnn)
            dr = cmmd.ExecuteReader
            dr.Read()
            If dr.HasRows = True Then
                da = New OleDbDataAdapter("select * from Pengguna where Status like '%" & txtKey.Text & "%'", cnn)
                ds = New DataSet
                da.Fill(ds, "Pengguna")
                DataGridView1.DataSource = ds.Tables("Pengguna")
                x = DataGridView1.Rows.Count()
                counter.Text = x
            Else
                MessageBox.Show("Data User Tidak Ada ", "Info Pencarian Data", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                txtKey.Text = ""
                txtKey.Focus()
            End If
        End If
    End Sub

    Private Sub txtKey_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtKey.TextChanged
        If ComboBox1.Text = "" Then
            ComboBox1.Text = "Username"
            txtKey.Focus()
        End If
        Call ListData()
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        txtKey.Focus()
    End Sub

    Private Sub Pilih()
        Dim i As Integer
        i = Me.DataGridView1.CurrentRow.Index
        Try
            With DataGridView1.Rows.Item(i)
                retKode = .Cells(0).Value.ToString
                retUser = .Cells(1).Value.ToString
                retPass = .Cells(2).Value.ToString
                retStat = .Cells(3).Value.ToString
            End With
            Me.Close()
        Catch ex As Exception
            MsgBox("Pilih Salah Satu Data", MsgBoxStyle.Critical)
        End Try
    End Sub

    Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
        Call Pilih()
    End Sub

    Private Sub DataGridView1_RowPostPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs) Handles DataGridView1.RowPostPaint
        Dim dg As DataGridView = DirectCast(sender, DataGridView)
        Dim rowNumber As String = (e.RowIndex + 1).ToString()
        While rowNumber.Length < dg.RowCount.ToString().Length
            rowNumber = "0" & rowNumber
        End While
        Dim size As SizeF = e.Graphics.MeasureString(rowNumber, Me.Font)
        If dg.RowHeadersWidth < CInt(size.Width + 20) Then
            dg.RowHeadersWidth = CInt(size.Width + 20)
        End If
        Dim b As Brush = SystemBrushes.ControlText
        e.Graphics.DrawString(rowNumber, dg.Font, b, e.RowBounds.Location.X + 15, _
       e.RowBounds.Location.Y + ((e.RowBounds.Height - size.Height) / 2))
    End Sub

    Private Sub BtnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnKeluar.Click
        Me.Close()
    End Sub
End Class

Step 3 : Membuat Header Field Column ( Judul Kolom ) DataGridView 1


Untuk merubah Header Field Columns (Judul Kolom, ex : Kode, Username, Password, Status) pada DataGridView 1 langkah - langkahnya seperti pada gambar berikut :
            
Setelah dilakukan langkah No. 3 (Klik Add Columns), lalu akan tampil menu Add Column.
(langkah ini dilakukan untuk merubah judul header setiap kolom DataGridView 1) .


Klik Add pada menu Add Column, lalu akan muncul Edit Columns untuk ubah judul kolom DataGridView 1 (langkah ini dilakukan untuk merubah judul header setiap kolom DataGridView 1) .


Penjelasan :
1.      Header Text (Colum1) diedit lalu isi dengan “Kode” (sesuai judul header yang diinginkan)
2.      Data Property Name diisi sesuai field Name Database yang terdapat pada tabel “Pengguna”
3.      Setelah selesai edit header perkolom klik ok
Selanjutnya kembali pada Form User, lalu klik 2X pada Button Cari. Ketikan kode dibawah berikut pada object Button Cari, Kode ini untuk mengambil nilai DataGridView 1 pada Form Tabel Data User.


    Private Sub BtnCari_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCari.Click
        Dim Tabel As New TabelUser
        Tabel.ShowDialog()
        Call status()
        If Tabel.retKode <> "" Then
            LblKdUser.Text = Tabel.retKode
            TxtNm_User.Text = Tabel.retUser
            TxtKunci.Text = Tabel.retPass
            CbStatus.Text = Tabel.retStat
            Call bisaisi()
            Call buttonEdit()
        End If
    End Sub

Sampai disini semua tahapan yang dilakukan sudah selesai, jalankan aplikasi yang sudah dibuat.
Lalu klik tombol cari pada form user untuk memanggil form tabel data user. Setelah tampil form tabel data user, lalu Double Klik Baris DataGridView 1 (Baris warna kuning) untuk mengisi nilai DataGridView 1 kedalam form user.




Tutorial bisa diDownload Disini 




3 comments:

  1. gan..ini kan pake vb.. kalo pake asp.net gmana ya gan? soalnya kasus yang saya buat menggunakan asp.net..terima kasih

    balas..

    ReplyDelete
    Replies
    1. Mohon maaf gan, saya tidak mendalami bahasa pemrograman ASP. Net. tapi paling tidak logika yang dipakai sama. terima kasih telah berkunjung.

      Delete
  2. keren,mas punya email ggak? bls

    ReplyDelete

Kunjungan Sobat

Popular Posts

Enter your email address:

Delivered by FeedBurner