look at me

SELAMAT DATANG MAS, MBAK, OM, TANTE, PAKDHE,BUDHE DAN SEMUANYA

Senin, 24 Desember 2012

Contoh Aplikasi Perkawinan Visual Basic 2010 dan SQL Server 2005

       Pembahasan kali ini adalah pembahasan mengenai contoh aplikasi perkawinan antara Visual Basic 2010 dan database SQL Server 2005. Aplikasi ini saya beri nama "Data Mahasiswa STMIK Amikom Purwokerto".
Pada aplikasi ini saya berusaha semaksimal mungkin untuk membuat aplikasi ini bebas bug, berikut ini contoh fitur dan cara menggunakan aplikasi ini:

1. FITUR MEMILIH JENIS PENGGUNA
Anda bisa memilih jenis pengguna melalui combo box yang berada di pojok kanan bagian bawah aplikasi ini. Ada dua jenis pengguna yang dapat dipilih, yaitu "Admin" dan "Pengguna Biasa". Jika Anda masuk sebagai Pengguna biasa Anda hanya bisa menikmati fitur yang ada pada Group Box "Fungsi Standar" saja, tetapi jika Anda memilih sebagai Admin maka Anda bisa juga mengaktifkan fitur yang ada pada Combo Box "Kendali Admin".


2. FITUR MASUK SEBAGAI ADMIN
 
Sebelum Anda menikmati fitur sebagai Admin, maka sebelumnya Anda akan dimintai password, dalam kasus ini password yang digunakan adalah "admin". Fitur yang Anda nikmati  selain fitur Fungsi Standar Anda juga mendapatkan fitur "Tambah data", "Simpan" dan "Hapus" data.

3. FITUR MENAMBAH DATA

 Untuk menggunakan fitur ini, Anda cukup menekan tombol "Tambah data". Setelah Anda menekan tombol tersebut maka akan disediakan record baru dan kotak isian diaktifkan, selain itu tombol "Simpan" pun diaktifkan namun tombol "Tambah data" justru dinonaktifkan". Silahkan isikan data yang Anda inginkan sesuai kotalk isian yang disediakan.
 
Setelah Anda yakin tentang data yang Anda isikan, pastikan simpan datanya, Tekan tombol "Simpan" untuk melakukannya.
 Setelah Anda menekan tombol simpan, maka kotak isian dan tombol simpan akan dinonaktifkan sementara itu tombol Tambah data diaktifkan.
Perlu diperhatikan, bahwa NIM yang diisikan tidak boleh ada yang sama. Jika anda mencoba memasukkan NIM yang sama dengan record yang lain akan muncul peringatan seperti ini

4. FITUR BERPINDAH-PINDAH RECORD
 Fitur ini bekerja selayaknya seperti navigasi, di sana terdapat beberapa tombol navigasi, yaitu "Ke data sebelumnya", "Ke data berikutnya", "Ke data pertama" dan "Ke data terakhir".
Tombol "Ke data sebelumnya" dan "Ke data berikutnya" digunakan untuk maju atau mundur satu record.
Tombol "Ke data pertama" digunakan untuk menuju record paling awal.
Tombol "Ke data terakhir" digunakan untuk menuju record paling akhir.
Perlu diperhatikan, jika Anda sudah ada di posisi record paling awal tetapi Anda mencoba untuk menekan tombol "Ke data sebelumnya" maka akan muncul peringatan seperti ini
Begitu juga sebaliknya, Jika Anda sedang berada pada record paling akhir tetapi Anda mencoba mengakses tombol "Ke data berikutnya" muncul juga peringatan seperti di bawah ini



 
5. FITUR PENCARIAN NAMA
Anda bisa mengakses fitur ini dengan menekan tombol "Pencarian nama"
Anda bisa memasukkan nama yang Anda cari pada kotak isian yang disediakan tersebut, dalam kasus ini saya mencontohkan dengan nama "Lisa" yang notabene nama tersebut memang terdapat dalam database, maka yang terjadi adalah sebagai berikut


Namun jika saya memasukkan nama yang tidak terdapat pada database, dalam kasus ini saya mencoba mencari nama Agung, maka yang terjadi adalah berikut ini


6. FITUR KELUAR DARI APLIKASI
 Anda bisa menutup aplikasi ini dengan mengakses tombol "Keluar" atau bisa juga melalui tombol "x" yang ada di pojok kanan atas dari aplikasi ini.
Jika Anda menjawab Yes maka aplikasi akan ditutup, tetapi jika Anda menjawab No maka Anda akan tetap pada aplikasi ini.




       Berikutnya saya akan membahas bagaimana untuk membuat aplikasi ini. Dalam membuat aplikasi ini, pertama yang harus kita lakukan adalah mebuat data base-nya terlebih dahulu, dalam kasus ini saya membuatnya dengan nama DataBaseMahasiswa, setelah kita membuat data base, selanjutnya kita buat project-nya dalam kasus ini saya beri nama dengan "Connect DataBase". Setelah kedua objek tersebut tercipta, selanjutnya kita "kawinkan" keduanya, tetapi saya tidak akan membahas bagaimana "mengawinkannya", yang akan saya bahas hanya tentang bagaimana source code untuk membangun aplikasi ini.
      Berikut adalah source code beserta penjelasan kegunaan dari tiap baris perintahnya



==============SOURCE CODE APLIKASI “Data Mahasiswa STMIK Amikom Purwokerto”==============



Public Class Form1
    Dim pss As Integer = 1
    'pss menunjukkan nomer urut posisi record yang aktif

    Private Sub TabelMahasiswaBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabelMahasiswaBindingNavigatorSaveItem.Click
        'Coding di bawah ini digunakan untuk menyimpa/saving perubahan yang terjadi
        'Tetap dalam program ini, tombol save saya visible=false
        Me.Validate()
        Me.TabelMahasiswaBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.DataBaseMahasiswaDataSet)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Coding di bawah ini akan dilakukan jika form dimuat/dijalankan
        Me.TabelMahasiswaTableAdapter.Fill(Me.DataBaseMahasiswaDataSet.TabelMahasiswa)

        Dim control As Windows.Forms.Control

        For Each control In Me.Panel1.Controls
            If (control.GetType.Name <> "Label") Then
                control.Enabled = False
            End If
        Next
        'Kode di atas digunakan untuk mendisable kotak isian pada panel 1, tetapi label masih tetap hidup
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        'Tombol ini digunakan untuk melakukan pencarian nama dalam database yang sudah tersimpan sebelumnya
        If (TabelMahasiswaBindingSource.Count = 0) Then
            MsgBox("Belum ada data yang diisikan", vbOKOnly + vbInformation, "Peringatan")
            'Melakukan pengecekan kosong atau tidak data pada tabel gridnya, jika kosong muncul peringatan tersebut
        Else
            'Jika di dalam table sudah ada datanya maka yang dilakukan adalah kode di bawah ini
            'sintaks untuk melakukan pencarian berdasar nama
            Dim namaCari As String
            namaCari = InputBox("Masukkan Nama", "Cari Nama")
            'cara mengeluarkan input box sekaligus menempatkan valuenya pada variable namaCari

            If (TabelMahasiswaBindingSource.Find("Nama", namaCari)) > -1 Then
                'maksud dari Find("Nama", namaCari) adalah mencari namacari di kolom "Nama" pada database
                'Jika data ditemukan maka akan ada pemberitahuan sekaligus menampilkan datanya di kotak isisan yang disediakan
                MsgBox("Data Ditemukan", vbOKOnly, "Pencarian Data")
                Me.TabelMahasiswaBindingSource.Position = TabelMahasiswaBindingSource.Find("Nama", namaCari)
                pss = TabelMahasiswaBindingSource.Find("Nama", namaCari) + 1
                'menentukan posisi baris yang akti, caranya indeks dari nama+1, karena indeks mulai dari 0
            Else
                'Tetatpi jika nama yang dicari tidak ditemukan maka muncul peringatan berikut
                MsgBox("Data Tidak Ditemukan", vbOKOnly, "Pencarian Data")
            End If
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        'Tombol ini digunakan untuk berpindah ke record berikutnya
        Dim max As Integer = TabelMahasiswaBindingSource.Count
        'mengisikan nilai max dengan banyaknya record yang tersedia

        If (max = 0) Then
            'jika max=0 atau bisa diartikan jika bnyaknya record = 0 atau tidak ada data yang didimpan
            'Maka Message Box di bawah ini akan tampil
            MsgBox("Belum ada data yang diisikan", vbOKOnly + vbInformation, "Peringatan")
        Else
            'jika dalam data base sudah ada data/record
            If (pss = max) Then
                'jika pss(posisi record aktif) = banyaknya record, bisa diartikan jika pss berada di record terakhir
                'maka keluar Message berikut ini
                MsgBox("Sudah tidak ada data lagi", vbOKOnly + vbInformation, "Peringatan")
            Else
                'jika posisi record aktif tidak pada record terakhir maka record yang ditampilkan adalah record berikutnya
                TabelMahasiswaBindingSource.MoveNext()
                'setelah itu pss ditambah 1 supaya nmr urut posisi record aktif bertambah 1
                pss += 1
            End If
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'Tombol ini digunakan untuk berpindah ke record sebelumnya
        If (TabelMahasiswaBindingSource.Count = 0) Then
            'Jika banyaknya record yang tersimpan dalam database = 0, maka akan keluar Message Box berikut ini
            MsgBox("Belum ada data yang diisikan", vbOKOnly + vbInformation, "Peringatan")
        Else
            'Tetapi jika dalam database sudah terdapat record yang tersimpan maka lakukan perintah2 di bawah ini
            If (pss = 1) Then
                'Jika nomer urut posisi record yang aktif = 1, atau bisa dikatakan jika kita berada di record paling awal
                'Maka akan keluar Message box di bawah ini
                MsgBox("Sudah tidak ada data lagi", vbOKOnly + vbInformation, "Peringatan")
            Else
                'Tetapi jika kita tidak berada di record paling awal, maka record yang aktif akan berpindah ke record sebelumnya
                'Coding di bawah ini untuk berpindah ke record sebelumnya
                TabelMahasiswaBindingSource.MovePrevious()
                'Setelah itu nomer urut posisi record yang aktif dikurangi satu, karena record mundur 1 langkah
                pss -= 1
            End If
        End If
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        'Tombol ini digunkan untuk berpindah ke record paling awal
        If (TabelMahasiswaBindingSource.Count = 0) Then
            'Jika banyaknya record yang tersimpan dalam database = 0, maka akan keluar Message Box berikut ini
            MsgBox("Belum ada data yang diisikan", vbOKOnly + vbInformation, "Peringatan")
        Else
            'Tetapi jika dalam database sudah terdapat record yang tersimpan maka lakukan perintah2 di bawah ini
            'Coding di bawah ini digunakan untuk berpindah ke record paling awal
            TabelMahasiswaBindingSource.MoveFirst()
            'Setelah itu nomer urut posisi record yang aktif diisi 1, karena record aktif sekarang ada di nomer urut 1
            pss = 1
        End If
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        'Tombol ini digunkan untuk berpindah ke record paling akhir
        If (TabelMahasiswaBindingSource.Count = 0) Then
            'Jika banyaknya record yang tersimpan dalam database = 0, maka akan keluar Message Box berikut ini
            MsgBox("Belum ada data yang diisikan", vbOKOnly + vbInformation, "Peringatan")
        Else
            'Tetapi jika dalam database sudah terdapat record yang tersimpan maka lakukan perintah2 di bawah ini
            'Coding di bawah ini digunakan untuk berpindah ke record paling akhir
            TabelMahasiswaBindingSource.MoveLast()
            'Setelah itu nomer urut posisi record yang aktif diisi TabelMahasiswaBindingSource.Count<banyaknya data=nmr urut record terakhir> , karena record aktif sekarang ada di nomer urut paling akhir
            pss = TabelMahasiswaBindingSource.Count
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Tombol ini digunakan untuk menyediakan record baru untuk tempat data baru
        'Tombol ini hanya bisa diakses oleh seorang admin saja
        'Ketika tombol ini ditekan maka kotak isian untuk pengisian data akan bestatus enabled=true
        Dim control As Windows.Forms.Control

        For Each control In Me.Panel1.Controls
            If (control.GetType.Name <> "Label") Then
                control.Enabled = True
            End If
        Next
        'Coding ini untuk menyediakan record baru
        TabelMahasiswaBindingSource.AddNew()
        'Tombol "simpan" diaktifkan
        Button9.Enabled = True
        'Tombol "Tambah data dinonaktifka
        Button1.Enabled = False
        'Untuk memfokuskan kursor di kotak isian NIM
        NIMTextBox.Focus()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'Tombol ini digunakan untuk menghapus record yang sedang dipilih
        'Tombol ini hanya bisa diakses oleh seorang admin saja

        If pss = TabelMahasiswaBindingSource.Count Then
            'Logika ini hanya untuk mengetahui apakah posisi record yang akan dihapus adalah nmer urut terakhir atau bukan
            'Jika nomer urut dari record yang akan di hapus ada di nomer urut record terakhir maka nomer urut record dikurangi 1
            pss -= 1
        End If

        If (TabelMahasiswaBindingSource.Count = 0) Then
            'Jika banyaknya record yang tersimpan dalam database = 0, maka akan keluar Message Box berikut ini
            MsgBox("Belum ada data yang diisikan", vbOKOnly + vbInformation, "Peringatan")
        Else
            'Jika banyaknya record yang tersimpan >= 1 maka lakukan perintah2 di bawah ini
            'Sebelum menghapus, admin akan dikonfirmasi dulu apakah yakin menghapus record yang dimaksud, jika ya maka record yang dimaksud akan dihapus
            If (MsgBox("Anda yakin ingin menghapus record tersebut ?", vbQuestion + vbYesNo + vbDefaultButton2, "Konfirmasi")) = vbYes Then
                'coding di bawah ini digunakan untuk menghapus record yang dimaksud
                TabelMahasiswaBindingSource.RemoveCurrent()
                '3 baris coding ini digunakan untuk mengupdate/saving perubahan kepada database
                Me.Validate()
                Me.TabelMahasiswaBindingSource.EndEdit()
                Me.TableAdapterManager.UpdateAll(Me.DataBaseMahasiswaDataSet)
            End If
        End If
      
    End Sub

    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
        'Tombol ini digunakan untuk menyimpan/mengupdate data pada database
        Try
            'Jika NIM dari record baru tidak terdapat pada data base maka prosedur penyimpanan akan dilaksanakan.
            pss = TabelMahasiswaBindingSource.Count 'Digunakan untuk menyatakan "nomer urut record yang aktif = nomer urut terakhir"
            '3 baris coding ini digunakan untuk mengupdate/saving perubahan kepada database
            Me.Validate()
            Me.TabelMahasiswaBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.DataBaseMahasiswaDataSet)

            'Pendeklarasian control
            Dim control As Windows.Forms.Control
            'Perulangan ini akan menyebabkan control selain label yang ada dalam Panel1 akan di-disable
            For Each control In Me.Panel1.Controls
                If (control.GetType.Name <> "Label") Then
                    control.Enabled = False
                End If
            Next
            'Tombol "Tambah data" akan diaktifkan kembali
            Button1.Enabled = True
            'Tombol "Simpan" akan dinonaktifkan
            Button9.Enabled = False
        Catch ex As Exception
            'Jika NIM dari record baru sudah terdapat pada data base maka prosedur penyimpanan tidak akan dilaksanakan dan akan mengeluarkan Message Box di bawah ini.
            MsgBox("NIM sudah digunakan oleh orang lain", vbOKOnly + vbCritical, "Peringatan")
            'Setelah prosedur penyimpanan digagalkan maka kursor akan difokuskan pada NIMTextBox
            NIMTextBox.Focus()
            TabelMahasiswaBindingSource.RemoveCurrent()
            Me.Validate()
            Me.TabelMahasiswaBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.DataBaseMahasiswaDataSet)
            Button1.Enabled = True
            Button9.Enabled = False
            pss -= 1
        End Try
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        'Tombol ini digunakan untuk keluar dari aplikasi ini
        'Sebelum keluar, pengguna akan dikonfirmasi dulu tentang niatannya untuk keluar
        If (MsgBox("Anda yakin?", vbYesNo + vbQuestion + vbDefaultButton2, "Konfirmasi")) = vbYes Then
            'Jika jawabannya "Yes" maka aplikasi akan ditutup
            End
        End If
    End Sub

   
   
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        'Combo box ini digunakan untuk memilih pengguna sebagai seorang "Admin" atau "Pengguna Biasa"
        If (ComboBox1.Text = "Admin") Then
            'Jika user adalah seorang "Admin" maka Label1(Password) dan TextBox1(Kotak isian password) akan ditampilkan pada GroupBoX3(Group Box "Gunakan Sebagai")
            Label1.Visible = True
            TextBox1.Visible = True
        ElseIf (ComboBox1.Text = "Pengguna Biasa") Then
            'Tetapi jika user adalah seorang "Pengguna Biasa" maka Label1 dan TextBox1 akan disembunyikan/tidak ditampilkan
            Label1.Visible = False
            TextBox1.Visible = False
            'GroupBox1(Group Box "Kendali Admin") dinonaktifkan
            GroupBox1.Enabled = False
        End If
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        'Textbox ini digunakan untuk mengisikan password
        'Sebelumnya rubah dulu properti TextBox1, UseSystemPasswordChar=True, dengan properti seperti ini maka inputan text otomatis berpenampilan sebagai karakter password
        'Pastikan event dari TextBox1 ini adalah "TextChanged"
        If (TextBox1.Text = "admin") Then
            'Jika text yang diisikan pada TextBox1 adalah "admin", maka GroupBox1(Group Box "Kendali Admin") diaktifkan
            GroupBox1.Enabled = True
        Else
            'tetapi jika text yang diisikan pada TextBox1 bukan "admin", maka GroupBox1(Group Box "Kendali Admin") dinonaktifkan
            GroupBox1.Enabled = False
        End If
    End Sub
End Class