P. 1
Membuat Aplikasi Interaktif Dengan VB 2010 Dan Access 2010

Membuat Aplikasi Interaktif Dengan VB 2010 Dan Access 2010

|Views: 445|Likes:
Dipublikasikan oleh Riza Ajah

More info:

Published by: Riza Ajah on Jun 14, 2013
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/15/2014

pdf

text

original

Sections

  • KATA PENGANTAR
  • BAB I
  • MS ACCESS 2010
  • 1. 1 Fitur - Fitur Ms 2010
  • Gambar 1.1
  • Gambar 1.2
  • Gambar 1.3
  • Gambar 1.4
  • Gambar 1.6
  • Gambar 1.7
  • Gambar 1.8
  • Gambar 1.9
  • Gambar 1.11
  • Gambar 1.12
  • Gambar 1.13
  • Gambar 1.15
  • 1. 2 Membuat Database dan Table
  • Gambar 1.16
  • Gambar 1.18
  • Gambar 1.19
  • Gambar 1.20
  • Gambar 1.21
  • 1. 3 Membuat Query
  • Gambar 1.22
  • Gambar 1.23
  • Gambar 1.24
  • Gambar 1.26
  • BAB II
  • VISUAL STUDIO & VISUAL BASIC 2010
  • 2. 1 Visual Studio 2010 IDE
  • 2. 2 Fitur-Fitur Baru pada VS 2010
  • Multi windows
  • Gambar 2.2
  • Multi targeting
  • Add References
  • Gambar 2.4
  • Zoom
  • Navigate To
  • Gambar 2.5
  • Generate Sequence Diagram
  • Gambar 2.6
  • Generate From Usage
  • Gambar 2.8
  • 2. 3 Fitur – fitur baru pada Visual Basic 10
  • Collection Initializer
  • Array Literals
  • Implicit Line Continuation
  • Gambar 2.9
  • Auto-implemented Properties
  • Multiline Lambdas
  • Gambar 2.11
  • Sub Lambdas
  • Single line Sub Lambdas
  • 2. 4 Membuat Project Baru
  • Gambar 2.14
  • Gambar 2.15
  • Gambar 2.16
  • Gambar 2.17
  • 2. 5 Menambah Control Pada Form ToolBox
  • Gambar 2.19
  • Gambar 2.20
  • Gambar 2.22
  • Gambar 2.24
  • Gambar 2.25
  • Gambar 2.26
  • BAB III
  • ANALISA PROGRAM
  • 3.1. Analisa Proses
  • BAB IV PEMBUATAN APLIKASI
  • 4.1.Membuat Database
  • Gambar 4.1
  • Gambar 4.2
  • Gambar 4.4
  • Gambar 4.5
  • Gambar 4.6
  • Gambar 4.7
  • 4.2. Bekerja dengan VB 10 (Management User)
  • Gambar 4.8
  • Gambar 4.9
  • Gambar 4.10
  • Gambar 4.11
  • Gambar 4.12
  • Timer1
  • Textbox1
  • Textbox2
  • Button1
  • Gambar 4.13
  • Gambar 4.14
  • Gambar 4.16
  • Text Tag
  • Gambar 4.17
  • Gambar 4.18
  • GroupBox1
  • Label1
  • DataGridView1
  • Gambar 4.19
  • Gambar 4.20
  • GroupBox2
  • RadioButon1
  • RadioButon2
  • ListBox1
  • Gambar 4.22
  • Gambar 4.23
  • Gambar 4.24
  • Gambar 4.26
  • TextBox1
  • TextBox2
  • TextBox3
  • Gambar 4.27
  • TextBox4
  • ComboBox1
  • CheckBox1
  • Gambar 4.28
  • Groupbox1
  • Gambar 4.30
  • Gambar 4.31
  • 4.3 Membuat Form Group
  • TextBox5
  • Button4
  • Button5
  • Gambar 4.33
  • Gambar 4.34
  • DataGridView
  • 4.4 Membuat Form Genre
  • Button6
  • Gambar 4.38
  • 4.5 Membuat Form Customer
  • Textbox6
  • TextBox7
  • TextBox8
  • DateTimePicker1
  • PictureBox1
  • Gambar 4.39
  • Gambar 4.41
  • 4.6 Membuat Form DVD
  • Gambar 4.43
  • TextBox9
  • TextBox10
  • TextBox11
  • ComboBox2
  • OpenFileDialog1
  • Gambar 4.44
  • Gambar 4.45
  • Gambar 4.46
  • 4.7 Membuat Form Rental DVD
  • Gambar 4.49
  • TextBox6
  • ListView1
  • Gambar 4.51
  • Button3
  • Button2
  • Gambar 3.52
  • Gambar 3.53
  • Gambar 3.54
  • 4.7 Membuat Form Return DVD
  • ListView2
  • Gambar 3.55

1

KATA PENGANTAR

Visual Basic merupakan salah satu bahasa pemograman yang popular sejak pertama kali di rilis tahun 1991. Karena kehandalannya maka Microsoft selalu membuat perbaikan disana-sini untuk setiap versi terbarunya. Pada bulan April yang lalu Microsoft telah merilis Visual Studio 2010 yang didalamnya terdapat Visual Basic terbaru yaitu Visual Basic 10. Pada versi ini banyak sekali fitur-fitur yang memudahkan programmer dalam develop aplikasi. Dan untuk mengetahui fitur-fitur apa saja yang terdapat pada VB 10 dan VS 2010 buku ini dapat dijadikan salah satu referensi karena di kemas dengan gamblang dan mudah dimengerti, sekaligus di sertakan dengan contoh pembuatan aplikasi. Selain membahas Visual Basic buku ini juga membahas tentang fitur-fitur baru pada Ms Access 2010, dimana Ms Access 2010 dapat dijadikan sebaga database pada suatu aplikasi. Penulis menyarankan sebelumnya mengunduh (download) terlebih dahulu project yang dibahas pada buku ini disini (http://geeks.netindonesia.net/files/folders/source_codes_vb/default.aspx). Salah satu kelebihan buku ini adalah, bagaimana pembaca dibimbing untuk membuat aplikasi dengan VB 10 dan Ms Access 2010. Walaupun sebelumnya pembaca tidak memiliki pengetahuan dengan 2 (dua) produk ini, tapi dengan bimbingan buku ini pembaca dapat mengikuti dengan baik. Tetapi penulis juga manusia, jadi buku ini masih jauh dari sempurna dan untuk itu penulis menantikan saran dan usulan dari para pembaca untuk perbaikan penulisan di masa yang akan datang. Saran dan usulan para pembaca dapat dilayangkan ke alamat email penulis junindar@gmail.com.

2

Penulis panjatkan puja-puji syukur kehadirat Allah SWT, yang telah melimpahkan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan penulisan buku ini. Buku special penulis persembahkan untuk “Si Kecil ,sibuah hati” Syifa Afrah Syafira, yang baru berumur 5 bulan.

Sebulan Sebelum Bulan Kelahiran Ku,

Junindar, MVP VB.NET

3

4 .

com 5 . Simulation / Modeling Packages: Visio Enterprise. Mempunyai moto hidup : “Jauh lebih baik menjadi Orang Bodoh yang giat belajar. Kritik dan saran kirim ke : junindar@gmail. Rational Rose dan Power Designer. Junindar mendapatkan Microsoft MVP VB pertanggal 1 oktober 2009. Penulis merupakan Ketua Microsoft User Group Indonesia Regional Batam (MUGI – Batam). VBA. Junindar Lahir di Tanjung Pinang.Biografi Penulis.blogspot. Dan senang bermain gitar. sedikit mengerti beberapa pemrograman seperti : VB. karena untuk bisa menjadi pemain gitar dan seorang programmer sama-sama membutuhkan seni. dari pada orang Pintar yang tidak pernah mengimplementasikan ilmunya”. 21 Juni 1982. Menyelesaikan Program S1 pada jurusan Teknik Informatika di Sekolah Tinggi Sains dan Teknologi Indonesia (ST-INTEN-Bandung).Net. Senang mengutak-atik computer yang berkaitan dengan bahasa pemrograman. Database : Access dan SQL Server 00/05. LINQ.com http://junindar. Pada saat ini bekerja di salah satu Perusahaan Swasta di BATAM sebagai Software Development. Keahlian.

Semoga ini menjadi Ilmu yang bermanfaat. terputuslah amalannya kecuali dari tiga perkara : Shadaqah jariyah.Ketika anak Adam meninggal. ilmu yang bermanfaat bagi orang sesudahnya dan anak shalih yang mendo'akannya. Amin 6 .

..................................40 BAB III....16 1...............DAFTAR ISI Halaman KATA PENGANTAR .....................................................3 DAFTAR ISI........................................................................................................................................1 Fitur – Fitur Ms 2010 ...........1 TENTANG PENULIS .................3 Membuat Query ..................................................7 1..................20 BAB II...............................................................5 Menambah Control Pada Form .............................23 2................ MS ACCESS 2010 1..............................................................................................2 Fitur – Fitur Baru pada VS 2010 ................. VISUAL STUDIO & VISUAL BASIC 2010 2....................................................................................24 2.........................2 Membuat Database dan Table ...................3 Fitur – Fitur Baru pada Visual Basic 10 ..............................................................4 Membuat Project Baru..................................................................................................28 2..........................................1 Visual Studio 2010 IDE ......... ANALISIS PROGRAM 7 ...37 2........................................................................................................5 BAB I.........................

................................................................................................................................104 4............................53 4....118 4......................................7 Membuat Form Rental DVD ........173 8 ......................................................................................................................................................1 Analisa Proses…………………………………………………………………..........2 Bekerja dengan VB 10 (Membuat Management User).........................................................45 3....................2 Analisa Pengguna.47 4.................................157 4...8 Membuat Form Return DVD .....4 Membuat Form Genre .................................3.............125 4..........138 4............................................................................................3 Membuat Form Group ...................6 Membuat Form DVD ........................................................................................5 Membuat Form Customer ............1 Membuat Database............. PEMBUATAN APLIKASI 4...............45 BAB IV........

kita biasanya terlebih dahulu kita selalu mencari tau bagaimana kelebihan produk baru ini di banding dengan produk sebelumnya. Windows Server 2003 R2 dengan SP2 (32 atau 64 bit) dan Windows Server 2008 dengan SP1 (32 atau 64 bit) 1. Sebelum kita masuk ke penjelasan penggunaan MS Access 2010. dan untuk menginstall Ms Office 2010 di butuhkan system requirements sebagai berikut :       Processor 500 MHZ atau lebih RAM 256 MB atau lebih Hard disk 2 GB CD atau DVD drive Display 1024 x 768 atau lebih OS : Windows Xp SP3. seperti membuat table.Fitur Ms 2010 Sebelum kita menggunakan suatu produk.BAB I MS ACCESS 2010 Pada bab ini akan dijelaskan tentang fitur-fitur baru pada Ms Access 2010. Untuk Ms Office 2010 ini terdapat 7 versi yang tersedia seperti dibawah. query maupun relationships. 1 Fitur . Windows 7 (32 atau 64 bit).        Office Professional Plus 2010 Office Professional 2010 Office Standard 2010 Office Home and Business 2010 Office Home and Student 2010 Office Professional Academic 2010 Office Starter 2010 Ms Office 2010 dapat berjalan pada office 2007. 9 . Windows Vista SP1 (32 atau 64 bit). terlebih dahulu kita membahas tentang Ms Office 2010 pada umumnya. dan cara pengunaan dasar pada Ms Access 2010.

10 . Zip dan Country) kita melakukan nya satu persatu. State. Tapi dengan Ms Access 2010 ini kita cukup hanya sekali klik. Cara nya buka table yang ingin ditambahkan field nya lalu pada Table Tool Fields Tab klik More Fields pada Add & Delete Grop. yaitu dengan menggunakan Quick Start. City. Lalu Scroll ke bawah dan pada Quick Start pilih Address.1  Quick Start Fields Pada versi sebelumnya untuk membuat field seperti berikut (Address.Oleh karena disini penulis akan menjelelaskan beberapa fitur-fitur terbaru untuk Ms Access 2010. Contextual tabs Ribbon Record Navigation Database search View Control Gambar 1.

dan kita dapat mengganti options pada field. Sebagai contoh. maka secara otomatis akan terdapat beberapa pilihan (Cahs. jika kita memilih Payment. Check dan In Kind) kita dapat 11 .Gambar 1.2 Gambar 1. Credit Card.3 Terdapat beberapa field didalam Quick start.

5 12 . Recent. Lalu ganti sesuai yang dinginkan . New dan lainnya. dan fitur ini telah dihilangkan pada ms Access 2010. Gambar 1. dengan cara klik kanan pada field. Gambar 1.mengubah pilihan ini. Seperti kita ketahui pada Ms Access 2007 terdapat “Office Button” pada pojok kiri atas. Dan pada Menu File terdapat beberapa item seperti Info.4  Menu dan Ribbon Untuk fitur ini terdapat pada aplikasi Ms Office lain nya. maka akan muncul jendela seperti dibawah. lalu pilih Edit List Item. Pada Ms Access 2010 terdapat menu “File” sebagai ganti nya.

lalu pada Contextual > Design pilih themes pada Themes group. Dimana kita dapat memilih theme yang kita suka. Application Part Untuk menggunakan application part. click Create Tab dan klik Application Part maka list dari application part akan tampil seperti dibawah. Klik Form/Report yang mau diubah. 13 . Seperti gambar dibawah.6  Office Themes Untuk Ms Access 2010 ini ada fitur yang memudahkan kita untuk mendesign form atau report dengan sekali klik. Lalu pilih application part yang dinginkan. Theme ini sudah mengatur dari warna dan font pada form maupun report. Gambar 1.

14 . buka table yang di inginkan. pilih More Fields pada Add & Delete Group. dengan menggunaka fitur ini kita dapat mengkalkulasi 2 field tersebut.8 Lalu akan tampil Expression Builder seperti dibawah.7  Calculate Fields Pada fitur ini kita bisa membuat sebuah field uang otomatis mengkalkulasi antara field.Gambar 1. Seperti contoh kita memilki field A yang bernilai 2 dan Field B bernilai 5. Gambar 1. Untuk penggunaannya. Dan klik Calculate Fields dan pilih type dari field yang dinginkan. lalu secara otomatis kita ingin membuat sebuah field untuk menampung jumlah dari Field A dan B. masukkan formula untuk hasil dari expression value nya. lalu pada Contextual Tools > Fields.

. Gambar 1. Dengan adanya data bars membatu secara visualisasi.9  Data Bars dan Conditional Formating Data Bars membantu kita dalam membaca sebuah laporan.10 15 . seperti melakukan perbandingan data. kadang tidak setiap orang mengerti maksud dari laporan tersebut.Gambar 1. Fitur ini sekarang sudah tersedia pada Ms Access 2010.

Report Layout Tools > Format. 16 . fitur ini memudahkan kita dalam membuat navigasi dari form/report. lalu klik Navigation Forms pada group forms. pilih compare to other records. Pilih Field yang dinginkan pada Show Formatting rules for : Gambar 1. Pada Tab Create.Buka Report yang dinginkan. Gambar 1. pada Select a rule type.11 Pilih New Rule. Navigation Forms berfungsi untuk memudahkan dalam mencari form atau Report yang dinginkan. Maka akan muncul tampilan seperti dibawah. lalu pilih Conditional Formatting. Untuk membuat Navigation Forms ikuti langkah-langkah sebagai berikut.12  Navigation Forms Sesuai dengan namanya navigation forms. dan klik OK. Dan ganti warna dari Bar. Maka akan muncul layout dari Navigation forms. hanya dengan menarik form kedalam Navigation Forms.

Gambar 1.Gambar 1. Drag dan Drop form atau report kedalam Navigation Forms.14 17 .13 Pilih layout yang dinginkan.

Oleh karena itu pada bab ini juga penulis menjelaskan bagaimana cara membuat Database dan Table.15 1. 18 . 2 Membuat Database dan Table Penulis bersumsi bahwa tidak semua pembaca sudah bisa atau pernah menggunakan Ms Access. Pada Start > All Programs > Ms Office > Ms Access 2010. Dimana dapat dilakukan dengan Drag dan Drop saja. yang nanti nya pada bab kedepan penulis tidak menjelaskan secara detail tentang membuat database dan table kembali. maka akan muncul tampilan seperti dibawah. Gambar 1. Macro Untuk Ms Access 2010 ini dalam penggunaan macro menjadi lebih mudah.

Dengan default Table1. Gambar 1.Gambar 1.16 Lalu pilih Blank database.17 19 . kemudian ganti nama database dan browse dimana file akan disimpan. Dan tampilan dari Ms Access pun akan berganti menjadi seperti gambar dibawah. Kemudian teka button Create.

19 Setelah menekan button OK. Klik Tab Create. maka kita akan masuk pada tampilan Design untuk Table. Gambar 1. lalu klik Table pada Tables group.18 Gambar 1. ketikkan nama table yang dinginkan. Maka akan muncul dialog Save As. 20 . seperti gambar dibawah. klik View pada Views Group dan pilih Design View. Langkah selanjutnya adalah membuat table.Dengan melakukan langkah-langkah dibawah maka kita telah memiliki sebuah database. Lalu Contextual Table Tools > Fields.

DataType : Tempat untuk mengganti Tipe Data dari Field. Description : Tempat untuk mendeskripsikan field 4. format. field size. General : Merupakan Properties dari field Disinilah merupakan tempat untuk mengganti properties seperti. 3.20 Keterangan : 1. Field Name : Merupakan tempat menambah menghapus dan mengganti Nama Field dai table.1 2 3 4 Gambar 1. Lalu tekan button Save atau Ctrl + Save untuk menyimpan hasil dari perubahan table. 21 . Input Mask dan lain-lain. 2.

seperti gambar dibawah. 3 Membuat Query Setelah selesai dengan membuat table.21 1. Untuk membuat Query (Select table) ikuti langkah-langkah seperti berikut : Klik Tab Create. mungkin masih banyak pembaca tidak mengetahui dari fungsi query. Query dapat berfungsi untuk menampilkan data dari 1 table atau lebih. seperti Visual Basic 10. atau untuk proses insert.22 Selanjutnya akan tampil jendela Show Table. pilih table yang ingin di tampilkan lalu tekan button “Add”. 22 . Lalu klik ganda field yang ingin ditampilkan. yang bisa diakses diluar Ms Access 2010. selanjutnya klik Query Design pada Queries group. Gambar 1. delete maupun update. lalu klik button “Close” untuk menutup tampilan show table.Save Gambar 1. kita lanjutkan dengan membuat query.

23 Untuk menampilkan hasil dari query pada Query Design Tools.Gambar 1. klik View pada Result Group dan pilih DatasheetView Gambar 1.25 23 .24 Gambar 1.

Untuk melihat sintaks SQL nya pilih SQL View. Pembaca dapat copy paste sintaks SQL dan modifikasi pada jendela SQL View.26 Untuk kedepan penulis hanya memberikan sintaks dari SQL pada setiap query tanpa menjelaskan secara detail pembuatanya. Kita dapat memodifikasi sintaks SQL seperti dibawah ini.first_name.telp.last_name. t_cust. SELECT t_cust.email FROM t_cust WHERE (((t_cust. 24 .refer_cust. contoh jika kita ingin menampilkan dengan menggunakan criteria (parameter). Lalu pada View pilih DatasheetView. t_cust. Gambar 1.refer_cust)=[@refer_cust])). t_cust. t_cust. maka akan tampil dialog seperti dibawah.

yang dimana akan membantu pembaca untuk membuat aplikasi pada bab berikut nya. 2.1 25 . 1 Visual Studio 2010 IDE Untuk membuat aplikasi sebenarnya kita tidak harus menggunakan Visual Studio 2010.BAB II VISUAL STUDIO & VISUAL BASIC 2010 Pada bab ini akan di jelaskan dasar-dasar Visual Studio dan Visual Basic 2010. Tetapi dengan Visual Studio 2010 IDE akan memudahkan kita dalam membuat aplikasi karena didukung dengan fitur-fitur yang memudahkan seorang programmer. Untuk Visual Studio 2010 terdapat 5 versi yang tersedia :      Express Professional Professional with MSDN Premium with MSDN Ultimate with MSDN Gambar 2. kita dapat menuliskan semua code dengan menggunakan text editor seperti notepad.

net framework yang dipilih. Gambar 2. Cuma yang membedakan dengan VS 2010.2  Multi targeting Sebenarnya fitur ini sudah ada pada Visual Studio versi sebelumnya. 2 Fitur-Fitur Baru pada VS 2010 Berikut beberapa penjelasan tentang improvement yang ada pada VS 2010. Gambar 2. VS 2010 akan menampilkan ToolBox dan properties sesuai dengan .3 26 .2.  Multi windows Pada fitur ini kita dapat menarik windows keluar dari IDE dengan cara Ctrl + Klik ganda.

untuk versi 2010 ini waktu yang dibutukan sangat cepat. Kita dapat memperbesar dan memperkecil pada Code Editor dengan menekan Ctrl + Mouse Scroll.4  Zoom Fungsi ini sangat membantu sekali pada saat kita di code editor. Gambar 2. Add References Pada Visual Studio versi sebelumnya jika kita melakukan Add References pada project itu membutuhkan waktu yang cukup “mengganggu”. dan focus pada jendela Add References pada tab Projects. Gambar 2.4 27 .

Fungsi ini hanya bisa dilakukan pada Versi Premium dan Ultimate.5  Generate Sequence Diagram. Navigate To Biasanya pada saat melakukan pemograman sering sekali kita melakukan pencarian kata-kata. Fungsi ini adalah untuk membuat diagram pada method. Dengan mengetikkan kata yang dicari maka secara otomatis pada Result Found akan memfilter kata yang dicari. Gambar 2. Pada versi 2010 ini kita dapat menggunakan fungsi Navigate To dengan cara menekan Ctrl + . (koma) atau Edit > Navigate To. dan cukup meng-klik pada list maka secara otomatis akan menuju ke lokasi. Dengan cara klik kanan pada function dan pilih “Generate Sequence Diagram”. 28 . dan untuk VS versi sebelumnya kita menggunakan fungsi search.

Tekan Ctrl + .Gambar 2. Seperti kita ketahui jika suatu class belum dibuat maka tidak bisa kita melakukan deklarasi terhadap class tersebut.6  Generate From Usage Pada fitur ini kita dapat menggunakan Class dan member sebelum kita membuatnya. Gambar 2. (titik) pada error list. maka akan tampil tooltip seperti dibawah.7 29 . Untuk VS 2010 kita dapat menggenerate Class tersebut dengan cara.

3 Fitur – fitur baru pada Visual Basic 10 Untuk fitur-fitur baru ini di ambil dari blog Erick Kurniawan.Add("Erick") 3: objNama. Pada VB9 untuk menginisialisasi object Collection anda harus menuliskan kode: 1: Dim objNama As New List(Of String) 2: objNama.Add("Ridi") 6: 7: For Each nama In objNama 30 .Add("Lutfie") 5: objNama. sehingga mempermudah penulisan kode.Add("Wely") 4: objNama.or.id/blogs/erick)  Collection Initializer Collection Initializer digunakan untuk menginisialisasi object collection dalam sebuah baris kode saja.8 2. Gambar 2.Lalu pilih Generate New Type untuk bisa memodifikasi class yang dinginkan. MVP VB (http://mugi.

Runtime. "erick"}. 4: {"23080010". . 6: ByVal nim As String. "Erick Kurniawan".Nama = nama.WriteLine(nama) 9: Next Pada VB10 dengan menggunakan Collection Initializer anda dapat menggunakan keyword „from‟ untuk mempersingkat penulisan kode diatas. 3. .Nim = nim.CompilerServices 2: Module Module1 3: 'menggunakan extension method 4: <Extension()> 5: Sub Add(ByVal lstMhs As List(Of Mahasiswa). "lutfie". "budi"}. "wely".Key & "Nama :" & mhs. String) From { 2: {"23080008".Value) 7: Next Jika anda ingin menginisialisasi list of class maka anda dapat menggunakan extension method untuk mengoverride method „add‟ yang ada pada object collection.4}.WriteLine("Nim :" & mhs. 3: {"23080009". 8: ByVal ipk As Double) 9: lstMhs. 7: ByVal nama As String.8: Console. 15: {"22080009".Nama & " Ipk :" & mhs. 1: Imports System.Add(New Mahasiswa With {. "anton"}} 5: For Each mhs In dictMahasiswa 6: Console. "Budi Anduk". 1: Dim objNama As New List(Of String) From {"erick".3} 16: } 17: 18: For Each mhs In list 19: Console. 3. "ridi"} 2: For Each nama In objNama 3: Console.Nim & " Nama :" & mhs.WriteLine(nama) 4: Next Anda juga dapat menggunakannya untuk object Dictionary 1: Dim dictMahasiswa As New Dictionary(Of String.IPK = ipk}) 10: End Sub 11: 12: Sub Main() 13: Dim list As New List(Of Mahasiswa) From { 14: {"23080008".WriteLine("Nim :" & mhs.IPK) 20: Next 21: End Sub 22: 31 .

Dengan menggunakan implicit line continuation maka developer tidak perlu lagi menuliskan underscore pada sebagain besar baris code yang ditulis (ini sangat membantu terutama ketika anda menggunakan LINQ). Compiler VB akan secara implicit menggunakan line continuation pada kodisi-kondisi berikut:        Setelah Attribute Setelah karakter koma (. compiler akan secara otomatis meng-infers tipe datanya. 45. or <%= Sebelum karakter ).5. or %> 32 . {. 2. "erick"} 'infers ke tipe object (dengan catatan Option Strict On) 5: 6: 'untuk array multidimensi 7: Dim matrix1 = {{1. 4. 5} 'infers ke tipe double 3: Dim arr3 = {"erick". 12}.) Setelah karakter dot (. Pada VB10 compiler VB akan menambahkan underscore secaraimplicit jadi anda tidak perlu menuliskannya.5. 2. }. {23. 5. 6} 'infers ke tipe integer 2: Dim arr2 = {1. Namun pada beberapa kasus tertentu anda masih perlu menggunakan underscore. 3.23: End Module  Array Literals ArrayLiteral memberi kemudahan kepada kita untuk memberi nilai ke object array secara langsung.)  ImplicitLineContinuation Pada bahasa VB kita biasanya menggunakan underscore untuk memisahkan satu baris logic code menjadi dua baris code atau lebih. 1: Dim arr1 = {1. 32. 67}} 'infers ke tipe int(. Underscore mengindikasikan bahwa code yang dipisahkan menjadi beberapa baris tersebut sebenarnya masih satu logic code. "budi"} 'infers ke tipe string 4: Dim arr4 = {1.) Setelah binary operator Setelah LINQ Query Clause Setelah karakter (.

Daftar karakter yang mendukung implicit line continuation dapat anda lihat pada table berikut: 33 .

Gambar 2.9 Contoh penggunaan implicit line continuation pada VB10: Gambar 2.10 34 .

contohnya: 1: Public Class Mahasiswa 35 . Pada VB9 untuk membuat property anda harus menuliskan kode berikut: 1: Public Class Mahasiswa 2: Private _nim As String 3: Public Property Nim() As String 4: Get 5: Return _nim 6: End Get 7: Set(ByVal value As String) 8: _nim = value 9: End Set 10: End Property 11: 12: Private _nama As String 13: Public Property Nama() As String 14: Get 15: Return _nama 16: End Get 17: Set(ByVal value As String) 18: _nama = value 19: End Set 20: End Property 21: End Class dengan menggunakan auto-implemented properties maka anda dapat menuliskan: 1: Public Class Mahasiswa 2: 3: Public Property Nim As String Public Property Nama As String 4: End Class maka secara otomatis compiler akan menggenerate field dengan nama yang sama dengan property tapi dengan ditambahkan underscore didepannya.0. property getter dan setter juga akan digenerate otomatis. pada VB fitur ini baru ditambahkan pada VB10. Auto-implementedProperties Fitur ini sebenarnya telah dimiliki oleh C# sejak versi 3.anda juga dapat menginisialisasi auto-implemented properties yang anda buat.

34.NET 4.2: 3: 4: Property Nim As String = "23082321" Property Nama As String = "Erick Kurniawan" Property Angkatan As New List(Of Integer) From {12. 56} 5: Property Ambil As New Matakuliah With {.Nama) 4: For Each ang In objMhs.WriteLine(objMhs.Kode = "IM2043". Function(n) 3: Console. 2. Fitur yang akan kita bahas kali ini adalah Multiline Lambdas. 7} 2: bil = Array. Pada VB10 anda dapat menggunakan Multiline Lambdas sebagai berikut: 1: Dim bil() As Integer = {1.0).Nama = "Web Database"} 6: End Class kemudian pada main class cara mengaksesnya: 1: Sub Main() 2: Dim objMhs As New Mahasiswa 3: Console.Nim & " " & objMhs. 3. sebenarnya fitur ini sudah disupport di C# 3.Ambil.Kode & " " & objMhs.WriteLine("Array ke-" & n) 4: If n Mod 2 = 0 Then 5: Return n 6: End If 7: End Function) 8: For Each num In bil 9: Console. . 5.WriteLine(num) 10: Next outputnya : 36 . tapi VB baru menambahkan fitur ini pada VB10.Angkatan 5: Console.Ambil.Nama) 8: End Sub  MultilineLambdas Pada blog series kali ini saya ingin mengeksplorasi fitur-fitur baru dari VB10 (VB10 akan dirilis bersama dengan VS2010 dan .0.FindAll(bil.WriteLine(objMhs.WriteLine(ang) 6: Next 7: Console. 6. 4.

Gambar 2. Dengan menggunakan Multiline Lambda anda dapat membuat anonymous delegate dengan mudah contohnya: 1: Dim cthDelegate = Function(n As Integer) 2: Dim count = 0 3: For i = 1 To n 4: If n Mod i = 0 Then 5: count += 1 6: End If 7: Next 8: If count = 2 Then 9: Return "Bilangan Prima" 10: Else 11: Return "Bukan Bilangan Prima" 12: End If 13: End Function 14: 15: Console.WriteLine(cthDelegate(17)) outputnya : Gambar 2.12 37 .11 Sama seperti Lambda Expression pada VB9 maka parameter dari Lambda tersebut akan diinfer secara otomatis oleh compiler (pada contoh diatas n akan diinfer menjadi tipe integer).

Anda juga dapat secara eksplisit menentukan tipe kembalian dari function diatas sehingga compiler tidak akan meng-infer tipenya secara otomatis. "joni"} 2: Array. "ricky".Jika anda cermati dari kode diatas maka nilai kembalian dari function tersebut adalah tipe “String” (compiler juga secara otomatis akan meng-infer tipenya). 1: Dim cthDelegate = Function(n As Integer) as String 2: Dim count = 0 3: For i = 1 To n 4: If n Mod i = 0 Then 5: count += 1 6: End If 7: Next 8: If count = 2 Then 9: Return "Bilangan Prima" 10: Else 11: Return "Bukan Bilangan Prima" 12: End If 13: End Function  Sub Lambdas Selain menggunakan “Function” keyword untuk membuat multiline lambda yang mengembalikan nilai. 1: Dim arrNama() As String = {"erick".1 To 0 Step -1 5: balik &= n(i) 6: Next 7: Console.Length .ForEach(arrNama. anda juga dapat menggunakan multiline lambda yang tidak mengembalikan nilai menggunakan “sub” keyword . Sub(n As String) 3: Dim balik = "" 4: For i = n.13 38 .WriteLine(balik) 8: End Sub) outputnya: Gambar 2.

pada textbox Name.WriteLine(If(n Mod 2 = 0. Sub(n) Console. dan klik OK. 10} 2: Dim query = bil. pilih Visual Basic pada Installed Templates kemudian pilih Windows pada node Visual Basic. 5. 3. "Ganjil :" & n))) 2.Where(Function(n) n Mod 2 = 0) 3: For Each num In query 4: Console. 3. 5. 3.WriteLine(n)) Pada VB10.WriteLine(num) 5: Next Akan error jika anda tuliskan kode berikut pada VB9: 1: Dim bil() As Integer = {1. 4. 5. "Genap :" & n. misal: 1: Dim bil() As Integer = {1. 8. 10} 2: Array. 4. 8. 8.ForEach(bil. Dan terakhir ketikkan “Belajar VB”. Single line Sub Lambdas Pada VB9 anda hanya dapat menggunakan single expression lambda jika ada return valuenya. 4 Membuat Project Baru  Klik New Project pada Toolbar atau File > New Project  Pada New Project Dialog. Sub(n) Console. lalu pada Template Pane sebelah kiri pilih Windows Form Application template. 39 . anda dapat menggunakan keyword “sub” untuk membuat single expression yang tidak mengembalikan nilai 1: Dim bil() As Integer = {1.ForEach(bil. 4. 10} 2: Array.

lalu pada properties ganti “BelajarVB.17) kemudian tekan enter atau klik property yang lain untuk melihat perubahannya.15  Ubah nama form.Gambar 2.16). dengan cara klik Form1 pada Solution Explorer (gambar 2. 40 .14 Gambar 2.vb” (gambar 2.

Gambar 2.18 41 . Gambar 2.16 Gambar 2.17  Sekarang kita akan mengubah title (text property) dari form. Klik Form1 dan ubah properties Text menjadi “Selamat Belajar”.

19 Kita dapat menambahkan control pada ToolBox dengan cara klik kanan pada ToolBox > Choose Item. Untuk menampilkan Toolbox cuku dengan menekan Ctrl + Alt + X.2. 42 . Gambar 2. 5 Menambah Control Pada Form  ToolBox ToolBox merupakan tempat dimana terdapat control-control yang digunakan untuk mendesign form.

dan text menjadi “OK”. Atau dengan Drag dan Drop control dari textbox ke form.21 43 . Klik ganda Control TextBox pada Toolbox maka secara otomatis textbox akan tampil pada form.20  Tambahkan control TextBox pada form dengan cara.Gambar 2. lalu susun seperti gambar dibawah. Lakukan hal sama untuk control label dan 2 Button. Ubah properties Name untuk TextBox menjadi “txtNama”. Gambar 2. untuk label ubah properties Text menjadi “Masukkan Nama anda” dan untuk button ubah properties Name menjadi “btnOK”.

 Sekarang kita akan membuat event handler.22 Atau melalui jendela code editor. Gambar 2. Gambar 2. pada jendela properties pilih icon “event” lalu akan tampil event handler untuk control tersebut.23 44 . untuk membuat event handler ada beberapa cara yang pertama. pada combobox sebelah kiri pilih control yang dinginkan lalu pada combobox sebelah kanan pilih event handler.

Show("Hiii. ini dimaksudkan control txtNama dengan event Handler KeyUp. " & txtNama. 45 .EventArgs) Handles btnOK. Atau untuk membuat event handler bisa di lakukan dengan klik ganda. Lalu ketikkan sintaks ini didalam event handler btnOk_Click Private Sub btnOK_Click(ByVal sender As System.Object. jika di klik ganda maka akan terbentuk event hanlder Click.Text & " Selamat mempelajari Visual Basic 10") End Sub  Simpan project dengan menekan Ctrl + Shift + S. lalu masukkan nama anda dan klik button OK. seperti contoh untuk button. ByVal e As System.24 Pada bab setelah ini penulis hanya menyebutkan nama event handler nya saja.Click 'Ini Cuma Comment MessageBox.25  Jalankan program (tekan F5). Gambar 2. Sebagai contoh penulis menyebutkan event handler txtNama_KeyUp. maka Save Project Dialog akan muncul. tanpa menjelaskan cara pembuatan nya.  Buat event handler btnOk_Click (klik ganda button OK).Gambar 2.

27 46 .26 Gambar 2.Gambar 2.

Jika pengembalian melewati batas yang telah di tentukan maka akan di kenakan denda. Lalu kita berikan hak akses terhadap masing-masing pengguna. kita membutuhkan suatu tahap untuk menganalisa suatu proses. b. Staff 47 . Administrator Pengguna ini memiliki hak akses yang paling tinggi (dapat mengakses seluruh fasilitas pada aplikasi) 2. dimana proses ini merupakan proses utama pada aplikasi yang akan kita buat. Analisa Proses Sebelum membuat suatu aplikasi. Analisa ini berfungsi untuk mengetahui ada berapa pengguna yang akan menggunakan aplikasi yang akan kita buat. Pengguna pada aplikasi ini sebagai berikut : 1. Analisa Pengguna Setelah selesai menganalisa proses. apa saja yang di butuhkan oleh aplikasi. Aplikasi yang akan kita buat adalah “Aplikasi Rental DVD” dimana aplikasi ini berguna untuk memudahkan dalam mengolah data barang (DVD Rental) dan transaksi rental pada suatu rental DVD. 3. Return Proses ini merupakan tahap pengembalian DVD oleh customer.BAB III ANALISA PROGRAM Pada bab ini akan dibahas bagaimana menganalisa proses dalam pembuatan suatu aplikasi.t proses yang paling menonjol adalah proses Rental DVD dan Return DVD. Secara umum dapat dikategorikan sebagai berikut : a. Jika DVD yang di pinjam akan merubah status DVD menjadi Out. kita bisa memperluas proses-proses apa saja yang nantinya akan kita gunakan pada program ini. 3.1. Dari proses ini tersebut. Rental Proses ini menangani tentang peminjaman DVD yang dilakukan oleh customer.2. selanjutnya adalah melakukan analisa pengguna. Untuk aplikasi yang akan kita bua. Dan juga merubah status DVD menjadi In.

3. 48 . hanya manajamen user saja yang tidak bias dilakukan oleh pengguna ini. User Pengguna yang memilki hak akses paling kecil. yaitu proses Rental dan Return DVD. 4.Staff merupakan pengguna yang memiliki hak akses dibawah admin. Hanya dapat melihat daftar DVD. Kasir Kasir merupakan pengguna yang paling sering menggunakan aplikasi ini.

c. klik kanan table tersebut dan klik Design. Ikuti langkah-langkah dibawah ini untuk membuat database dan tabletabel yang akan di butuhkan pada aplikasi. maka akan muncul form Save As dan ketikkan “T_Menu” 49 .Membuat Database Sebelum masuk ke pemograman (Coding) pertama-tama kita buat terlebih dahulu database untuk aplikasi ini. Buka MS Access 2010 Gambar 4.accdb pada File Name . Lalu klik “Create”. a. Selanjutnya secara otomatis akan ada sebuah table dengan nama Table1. Untuk mengubah lokasi penyimpanan klik gambar folder dan pilih lokasi yang di inginkan.1.BAB IV PEMBUATAN APLIKASI Setelah selesai menganalisa.1 b. Pada bab ini akan dibahas bagaimana membuat aplikasi dengan menggunakan VB 10 dan MS Access 2010. 4. kita masuk ke tahap pembuatan aplikasi. Ketik DVD. Pada tahap ini kita akan melihat bagaimana mudah nya membangun suatu aplikasi dengan dua program tersebut. dan untuk sementara simpan terlebih dahulu ke My documents.

MenuID M1 M1-01 M1-02 M2 M2-01 M2-01-01 M2-01-02 M2-01-03 M2-02 M2-02-01 M2-02-02 M2-02-03 M2-03 M2-04 M3 M3-01 MenuName File Logout Exit Data DVD Add Edit DVD List Customer Add Edit Customer List Group Genre Tools Rental MenuAction Header Menu Menu Header Menu SubMenu SubMenu SubMenu Menu SubMenu SubMenu SubMenu Menu Menu Header Menu 50 . Lalu masukkan data dibawah pada table T_Menu. selanjutnya untuk MenuAction merupakan identitas apakah posisi Menu Item pada Header.Gambar 4. Field Name MenuID MenuName MenuAction Data Type Text Text Text Field size 10 25 25 Primary Key PK (*) Table ini merupakan representasi dari Menu pada aplikasi yang akan kita buat nantinya.2 d. Sedangkan MenuName digunakan pada Text untuk MenuStrip. untuk membuka table klik ganda pada table. Lalu ubah nama field pada table tersebut seperti gambar dibawah. Menu atau SubMenu. Field MenuID nantinya akan kita gunakan pada MenuStrip properties “Tag”.

dengan field-field nya sebagai berikut Field Name RoleID RoleName Data Type Number Text Field size Integer 50 Primary Key PK (*) Dan isikan data pada table T_Role seperti dibawah RoleID 1 2 3 4 RoleName Admin Staff Kasir User Table ini berfungsi untuk memetakan hak akses pada pengguna f.M3-02 M4 M4-01 M4-02 M4-03 M5 M5-01 M5-01-01 M5-01-02 M5-01-03 M5-02 M5-03 M6 M6-01 Return Report Rental Return Rekap Utility Users Add Edit User List Change Password Form Access Help About Menu Header Menu Menu Menu Header Menu SubMenu SubMenu SubMenu Menu Menu Header Menu e. Selanjutnya buat table baru dengan nama T_Role. Tambahkan sebuah table lagi dengan nama T_RoleMenu. Field Name RoleID MenuID Data Type Number Text Field size Integer 10 Primary Key PK (*) PK (*) 51 . dengan format seperti dibawah.

Field Name Data Type Field size Primary Key 52 . Return.Untuk table ini merupakan gabungan antara table T_Menu dan T_Role dan berfungsi untuk menampung hak akses setiap Role. Dan isikan data seperti dibawah. Customer data-data tersebut akan disimpan pada table ini. Dan tambahkan sebuah table dengan nama T_User dengan format seperti dibawah. Contoh nya user dengan Role Admin dapat mengakses menu item Rental. RoleID 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 MenuID M1 M1-01 M1-02 M2 M2-01 M2-01-01 M2-01-02 M2-01-03 M2-02 M2-02-01 M2-02-02 M2-02-03 M2-03 M2-04 M3 M3-01 M3-02 M4 M4-01 M4-02 M4-03 M5 M5-01 M5-01-01 M5-01-02 M5-01-03 M5-02 M5-03 M6 M6-01 g.

3 53 . Pada jendela MS Access. Klik Tab “Database Tools” lalu klik “Relationships” 1 2 Gambar 4.UserName Password First_Name Last_Name RoleID Actived Text Text Text Text Number Yes/No 15 15 50 50 Integer PK (*) InputMask=Password Untuk pertama kali isikan data user seperti dibawah : Username : administrator Password= password First_Name : Admin RoleID=1 Actived=Yes (True) Selanjutnya adalah membuat relasi antar table. ikuti langkah-langkah seperti dibawah.

4 Gambar 4.5 Selanjutnya klik field “RoleID” pada table T_Role. klik kanan > “Show Table”. dan drag ke field RoleID pada table T_RoleMenu. Klik Add untuk semua table didalam list. seperti dibawah. Maka akan muncul jendela “Edit Relationships” seperti dibawah. 54 .Lalu pada jendela Relationships. Gambar 4. maka akan tampil jendela Show Table.

yaitu bekerja dengan VB 10.7 4. 55 .Gambar 4. Lakukan hal sama pada field MenuID pada table T_Menu ke fied MenuID pada table T_RoleMenu. Gambar 4. Bekerja dengan VB 10 (Management User) Sekarang adalah waktunya yang paling ditunggu-tunggu oleh pembaca.2.6 Klik checkbox “Enforce Rerential Integrity” lalu klik button “Create”. Lalu field RoleID pada table T_Role ke field RoleID pada table T_User. dengan cara Start > All programs > Microsoft Visual Studio 2010 > Microsoft Visual Studi 2010.. Untuk pertama kali kita buat terlebih dahulu project untuk aplikasi yang kita buat. sehingga kita memiliki diagram relationships seperti dibawah.

8 Gambar 4. Pada “Installed Templates” > Visual Basic > Windows dan pilih “Windows Forms Application”.Gambar 4. klik button OK.9 Klik File > New Project. maka akan muncul jendela New Project. 56 . Lalu ubah Nama project menjadi “DVD Rental”.

11 Pada Solution Explorer.Gambar 4.vb” 57 . klik kanan “DVD Rental” > Add > New Item. pilih “Splash Screen” dan ubah namanya menjadi “Startup.10 Gambar 4. maka akan tampil jendela Add New Item.

2 button lalu ubah properties control-control tersebut seperti dibawah. Timer1 Name timerSplash Lalu buka Form1 yang ada pada saat kita membuat project. 2 textbox. 58 .12 Tambahkan control Timer dan ubah properties nya seperti dibawah. Name ShowInTaksbar Text StartPosition ControlBox FormBorderStyle BackColor F_Login False Login CenterScreen False FixedSingle White Serta tambahkan control 2 label. dan ganti properties pada Form1 seperti dibawah.Gambar 4.

Dim opacityRate As Double = 0. Gambar 4. Lalu ketikkan variable class seperti dibawah.Textbox1 Name Textbox2 Name UseSystemPasswordChar Button1 Name Text Button2 Name Text btnCancel Cancel btnLogin Login txtPassword True txtUser Dan atur control-control diatas seperti gambar dibawah.0 Dim maximizeRate As Boolean = True Dim minimizeRate As Boolean = False Pada form startup ini kita akan menggunakan fungsi Opacity pada form. Yaitu fungsi untuk membuat form menjadi trasnparan.13 Selanjutnya pada form Startup. tekan tombol F7 untuk menampilkan jendela Code. oleh 59 . jika nilai nya 1 maka form akan tampil normal.

If opacityRate >= 1. yang berfungsi untuk mengaktifkan timer. Lalu pada event handler Startup_Load ketikkan sintaks dibawah.Opacity = opacityRate If opacityRate >= 1.Show() End If Maksud dari sintaks diatas adalah.Dispose() Me. nilai opacityRate akan bertambah 0.025 Me.Enabled = False timerSplash.Opacity = opacityRate End If ElseIf maximizeRate Then opacityRate = opacityRate + 0.99 Me.Opacity = 0.0 If opacityRate >= 20.025 If opacityRate < 0 Then opacityRate = 0 End If Me.0 Then minimizeRate = False maximizeRate = False End If Else timerSplash. Me.Interval = 60 timerSplash.Enabled = True timerSplash. dan memasukkan nilai Opacity menjadi 0 (Nol) atau hilang. lalu klik ganda control Timer dan ketikan sintaks dibawah.025 perdetiknya.0 Then maximizeRate = False minimizeRate = True End If ElseIf minimizeRate Then opacityRate = opacityRate . dan akan mengakibatkan form startup akan mulai kelihatan seiring dengan bertambahnya 60 .karena itu dengan variable “opacityRate” kita akan menggunakan untuk memasukkan nilai opacity.Opacity = opacityRate If Opacity <= 0.Start() Serta mengisi nilai interval timer menjadi 60 (1 detik).0 Then opacityRate = 0.0 Then opacityRate = opacityRate + 1.Stop() timerSplash.0 timerSplash.Visible = False Dim Login As New F_Login Login.0.

Klik Application lalu pada Startup Form pilih StartUp.14 Sekarang jalankan program dengan menekan F5. Jika nilai opacity sudah lebih besa dari 1 (form kembali normal).opacityrate.15 61 . Klik Project > DVD Rental Properties. Gambar 4. maka form login akan tampil.025. Gambar 4. maka secara perlahan (perdetik) nilai opacityrate akan dikurangi 0. dan jika nilai opacityrate sudah kembali menjadi 0. Sebelum menjalankan program terlebih dahulu kita ubah Startup dari project ini (form mana yang akan tampil terlebih dahulu).

OLEDB.accdb Dan tambahkan sebuah form pada project dan ubah propertiesnya seperti dibawah. klik setting dan isikan datadata berikut Name : DVDConnection.16 Setelah berhasil membuat form startup.ACE.Data Source=|DataDirectory|\dvd.12. Type : Connection String. Lalu pada jendela project klik Project > DVD Rental properties. Name ShowInTaksbar Text StartPosition FormBorderStyle F_Main True Main Neu CenterScreen FixedSingle Lalu tambahkan control menuStrip . Text &File &Logout E&xit &Data DVD Tag M1 M1-01 M1-02 M2 M2-01 62 . maka selanjutnya adalah membuat login user. Scope : Application.Gambar 4.accdb) kedalam project (~>DVD Rental\DVD Rental\bin\Debug). Terlebih dahulu adalah dengan memindahkan file MS Access (DVD.0. tambahkan menuItem dan ubah properties nya seperti dibawah seperti dibawah. Dan untuk Value : Provider=Microsoft.

Add Edit DVD List Customer Add Edit Customer List Group Genre &Tools Rental Return &Report Return Rental Rekap &Utility Users Add Edit User List Change Password Form Access &Help About M2-01-01 M2-01-02 M2-01-03 M2-02 M2-02-01 M2-02-02 M2-02-03 M2-03 M2-04 M3 M3-01 M3-02 M4 M4-01 M4-02 M4-03 M5 M5-01 M5-01-01 M5-01-02 M5-01-03 M5-02 M5-03 M6 M6-01 Sehingga memilki susunan MenuItem seperti gambar dibawah. 63 .

Gambar 4. Dan ubah properties Name StatusLabel menjadi ToolName.Gambar 4. Lalu klik button OK. ToolRole dan ToolTime.17 Tambahkan control StatusStrip. agar memudahkan dalam pemberian ilustrasi untuk pengaturan control pada form. lalu klik button Add. Sebelumnya penulis akan menunjukkan design dari Form Utama (F_Main) ini.18 64 . Pada combobox select item. pilih Statuslabel. lalu pada properties Items klik button (…) maka akan tampil jendela ItemCollectionEditor. Lakukan sebanyak 3 kali.

dan letakkan kedalam SplitContainer. Lalu tambahkan sebuah panel dang anti propertiesnya. BackColor : HighLight Selanjutnya Tambahkan sebuah Treeview dan letakkan kedalam pnlNavigationBackground. Dock : Top. BackColor : HighLight dan Text : Transaction. Tambah sebuah control panel.Panel2. Dan ubah propertiesnya.18 Selanjutnya kita akan mengatur pada SplitContainer. Dock : Fill dan BackColor : white. Name : pnlCurrentScreen . Sehingga kita memiliki design form seperti gambar dibawah.Panel1 dan SplitContainer. Tambahkan panel dan letakkan kedalam SplitContainer. Dan ubah properties panel tersebut. Dock : Fill. Lalu tambahkan sebuah Panel kembali dan letakkan kedalam pnlNavigationBackground. Name : pnlNavigationBackground. Ubah ptopertiesnya .Name : TvTransaction. Name : pnlNavUsers.Panel2. Dock : Bottom. BackColor : White. Dock : Fill. Lalu tambah panel dan letakkan kedalam pnlProjects dengan properties sebagai berikut Name : pnlProjectsTitle. dengan control ini form akan terbagi menjadi bagian yaitu SplitContainer. BackColor :HighLight dan Text : DVD 65 . dan ubah properties BorderStyle : FixedSingle dan dock : Fill. Gambar 4.Panel1.Tambahkan sebuah control SplitContainer pada form.Panel2. Dan ubah propertiesnya Name : pnlProjects. Dock : Top.

1TextBox dan 1 GridView letakkan pada pnlProjects. Gambar 4.19 Masih pada jendela F_Main tekan F8 untuk masuk jendela code. GroupBox1 Text Textbox1 Name Label1 Text DataGridView1 Name DgView Title txtSearch Search criteria Dan atur letaknya seperti pada gambar dibawah.OleDb 66 . Imports System.List. 1 Label. Dan ubah propertiesnya seperti dibawah. Dan tambahkan 1 Groupbox.Data. sebelumnya import NameSpace OleDB dengan cara ketikkan sintaks berikut pada baris paling atas Class.

dimana MenuItem menjadi referensi nya.Lalu ketikan sintaks berikut.Nodes(0) End Sub #End Region 67 .com) #Region "PopulateTree" Private Sub AddMenuToTree(ByVal YourNodeTree As TreeNode.DropDownItems(i) Dim aNode As New TreeNode(Replace(currentItem.Items If aItem.DropDownItems.Tag = currentItem.Text. "&".1 '//jika sub menu itemnya bukan merupakan toolstripmenuitem (bisa saja '//merupakan toolstripseparator) maka item tsb tdk ditambahkan ke treeview : If Not (TypeOf YourToolStripMenuItem.Tag.Nodes.Count .yulianmf. (Sintaks ini di ambil dari blog mas Rully.ToString.ToString TvTransaction.DropDownItems.MVP www.ExpandAll() TvTransaction.Tag = aItem.Tag = "" Then Continue For Dim currentItem As ToolStripMenuItem = YourToolStripMenuItem.Text. ByVal YourToolStripMenuItem As ToolStripMenuItem) '//cek apakah toolstripmenuitem tsb mempunyai sub menuitem '//yang merupakan DropDownItem : If YourToolStripMenuItem.Add(aNode) '//cek jika ada sub menu item lagi dengan method recursive AddMenuToTree(aNode.Visible = False Then Continue For '//buat node baru utk ditambahkan ke treeview node : Dim aNode As New TreeNode(Replace(aItem. aItem) Next TvTransaction.DropDownItems(i) Is ToolStripMenuItem) OrElse YourToolStripMenuItem. "&".Add(aNode) '//tambahkan node baru ke treeview jika '//node tersebut memiliki node child (DropDownItem): AddMenuToTree(aNode.ToString. "")) aNode.DropDownItems(i). "")) aNode.SelectedNode = TvTransaction. yang berfungsi untuk membuat Node pada TreeView secara otomatis.Tag.Nodes. currentItem) Next End If End Sub Private Sub PopulateToolStripMenuItem(ByVal YourMainMenuStrip As MenuStrip) '//iterate toolstripmenuitem yang ada di MainMenuStrip : For Each aItem As ToolStripMenuItem In YourMainMenuStrip. iterate : For i As Int32 = 0 To YourToolStripMenuItem.Count > 0 Then '//jika ada sub menu item.ToString YourNodeTree.

vb.Information. buka class Role dan ketikkan sintaks berikut. MsgBoxStyle.Message.ToString = "" Then Throw New Exception("Masukkan RoleID") End If m_roleid = value End Set End Property Public Property RoleName() As String End Class End Namespace Dan pada class Users ketikkan sintaks berikut : Namespace Entity Public Class Users Private m_username As String Public Property Username() As String Get Return m_username End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan username") End If m_username = value End Set End Property 68 .Vb dan Users. "DVD Rental") End Try Selanjutnya sebelum masuk ke F_Login. ketikkan sintaks berikut. Try PopulateToolStripMenuItem(MenuStrip1) Catch ex As Exception MsgBox(ex. Namespace Entity Public Class Role Private m_roleid As Int16 Public Property RoleID() As Int16 Get Return m_roleid End Get Set(ByVal value As Int16) If value.Lalu pada event handler F_Main_Load. terlebih dahulu adalah membuat beberapa Class yang dibutuhkan. Pertama Tambahkan sebuah folder pada project dan ubah namanya menjadi Entity. Dan tambahkan 2 buah class pada folder tersebut masing-masing Role.

Role Public Property Actived() As Boolean End Class End Namespace Sebagai catatan bahwa Class yang berada dalam folder entity merupakan representasi dari Table.Generic System. Selanjutnya adalah tambahkan sebuah Module pada folder AccessData dan ubah namanya menjadi DVDModule. Imports Imports Imports Imports System.vb.OleDb System.Private m_password As String Public Property Password() As String Get Return m_password End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan Password") End If m_password = value End Set End Property Private m_firstname As String Public Property First_Name() As String Get Return m_firstname End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan First Name") End If m_firstname = value End Set End Property Public Property Last_Name() As String Public Property Role As New Entity. 69 . ketikkan sintaks berikut untuk mengimport NameSpace yang dibutuhkan pada Module.CompilerServices Lalu membuat Public Variable seperti dibawah. Tambahkan sebuah Folder dalam project dan ubah namanya menjadi “AccessData”.Runtime.Data System.Data. dan masuk kedalam NameSpace Entity.Collections.

Add("@username".Open() Using rdr As OleDbDataReader = mycommand. .DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_selectlogin".Data Imports System.Users) Dim User As New List(Of Entity. ByVal RoleID As String.Role = New Entity.Role With {.Actived = Actived. Password.Last_Name = Last_Name.Public Operate.Add(New Entity.Role).OleDb Namespace AccessData Public Class AccessUse Public Function Login(ByVal username As String) As List(Of Entity. dan ganti namanya menjadi AccessUser.Parameters. Imports System.Username = Username. .RoleID = RoleID. .RoleName = RoleName}}) End Sub <Extension()> Sub Add(ByVal RoleList As List(Of Entity.Users)() Try Using connect As New OleDbConnection(My. . Ketikkan sintaks berikut yang digunakan untuk proses Login nantinya. FormShow. ByVal Actived As Boolean.VarChar).Role With {. .ExecuteReader 70 .Users). .Value = username connect.Password = Password. RoleID As String Dan buat Extension Method untuk Class User dan Role seperti dibawah.Settings.CommandType = CommandType. . ByVal Username As String.First_Name = First_Name. OleDbType.RoleName = RoleName}) End Sub Tambahkan Class pada folder AccessData.Users With {. ByVal First_Name As String. UserName. ByVal RoleName As String) UserList.RoleID = RoleID. Pada Class yang ada pada folder AccessData merupakan class yang menyimpan fungsi-fungsi seperti Insert.Data. ByVal RoleID As Int16.Add(New Entity. ByVal Password As String.StoredProcedure mycommand. connect) mycommand.Delete dan lain-lain. <Extension()> Sub Add(ByVal UserList As List(Of Entity. ByVal Last_Name As String. Class-class ini masuk kedalam NameSpace AccessData. ByVal RoleName As String) RoleList.

ToString().ToString(). rdr("Actived").RoleID=T_User. T_Role. 71 .accdb) dan buat query dengan nama “usp_selectlogin” dengan SQL sebagai berikut.ToString().UserName)=[@username])).ToString().Message. rdr("RoleName").ToString()) End While End Using End Using End Using Catch sqlex As OleDbException Throw New Exception(sqlex.While rdr.RoleName FROM T_Role INNER JOIN T_User ON T_Role. Buka F_Login. SELECT T_User. rdr("Last_Name"). klik ganda button Cancel lalu ketikkan sintaks berikut. End Jika user meng-klik button cancel ini makan aplikasi ini akan ditutup. rdr("First_Name").RoleID WHERE (((T_User. rdr("RoleID"). Selanjutnya klik ganda button OK.ToString().ToString()) End Try Return User End Function End Class End Namespace Selanjutnya buka MS Access (DVD. rdr("Password"). dan ketikkan sintaks berikut.Add(rdr("username").Read User.*.

Count = 0 Then MsgBox("Username Salah".Date f_utama.ToolName. maka aplikasi ini akan mengecek dengan cara melakukan pencarian data user berdasarkan username yang dimasukkan.Focus() txtPassword.Role. "DVD Rental") txtPassword.ToolRole. apakah sama dengan hasil pencarian. Lalu akan disimpan kedalam Generic List of Class.Username Password = list.First.Text = list.Information. "DVD Rental") txtUser.First. "DVD Rental") End Try Pada saat user melakukan login. MsgBoxStyle.Try Dim AccessUser As New AccessData.Focus() txtUser.Password Me. "". jika tidak sama aka nada pesan 72 .Text = list.Text Dim list As List(Of Entity.First.Password If txtPassword.First.Users) = AccessUser. Jika isi dari List ini kosong makan username salah.ToolTime. MsgBoxStyle.Information.Password = txtPassword.Last_Name) f_utama.Information. MsgBoxStyle.SelectAll() Exit Sub End If UserName = list.AccessUser Dim user As New Entity.SelectAll() Exit Sub End If RoleID = list.Username = txtUser.Message. "DVD Rental") txtUser. MsgBoxStyle.Last_Name = "".SelectAll() Exit Sub End If If list.Users user.Show() Catch ex As Exception MsgBox(ex.Actived = False Then MsgBox("User sudah tidak aktif".Text <> Password Then MsgBox("Password Salah". " " & list.Login(txtUser.RoleName f_utama.Close() Me.First_Name & If(list. selanjutnya mengecek password yang dimasukkan.Exclamation.First.Dispose() Dim f_utama As New F_Main f_utama.First.Focus() txtUser.First.RoleID Password = list.Text) 'jika isi list kosong If list.Role.First.Text user.Text = Now.First.

Enter Then btnLogin. If e.PerformClick() End If Pada F_Main buat event handler F_Main_Closing dan Menu Item File > Exit ketikkan End. Buat event handler txtPassword_Keyup dan ketikkan sintaks berikut yang berfungsi jika user menekan Enter pada text box Password makan proses pada button login akan di jalankan.Dispose() My.21 73 .error nya. Dan pada Menu Item File > Logout ketikkan sintaks berikut. Me. Dan mengecek apakah user tersebut masih aktif atau tidak.F_Login.20 Gambar 4. Gambar 4. untuk menampilkan form login.Forms.Show() Jalankan Program dengan menekan F5 lalu login dengan username : administrator dan password : password.KeyCode = Keys.

RoleID. usp_DeleteRoleMenu dan usp_InsertRoleMenu.RoleID)=[@RoleID])).RoleName FROM T_Role ORDER BY T_Role. 74 .RoleID. seperti dibawah.accdb seperti berikut usp_SelectRole. T_Role. SELECT T_Menu. Selanjutnya adalah membuat Form Access yang dimana berfungsi untuk memberi hak akses suatu Role Menu apa saja yang bias di akses oleh role tersebut. Dengan sintaks SQL sebagai berikut : SELECT T_Role.MenuID WHERE (((T_RoleMenu.RoleID)=[@RoleID])). usp_SelectMenuRole. MenuID ) VALUES ([@RoleId]. T_Menu.MenuID = T_RoleMenu.MenuName.MenuID. Yaitu TreeView secara otomatis akan menggenerate Node sesuai dengan MenuItem diatas. maka akan mendapatkan hasil seperti gambar diatas. Ikuti Langkah-langkah dibawah. [MenuId]). kita akan membuat fungsi untuk mengahapus dan manambah data pada table T_MenuRole. T_RoleMenu. Buat Query pada DVD. Buka Class AccessUser.RoleID FROM T_Menu INNER JOIN T_RoleMenu ON T_Menu. DELETE * FROM T_RoleMenu WHERE (((T_RoleMenu. INSERT INTO T_RoleMenu ( RoleId.Jika pembaca dengan benar mengikuti langkah-langkah diatas.

DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_InsertRoleMenu".Role.Add(parameterRoleID) End With connect. OleDbType.CommandType = CommandType.Public Function DeleteRoleMenu(ByVal MenuRole As Entity. 10) parameterMenuID.MenuID With mycommand.ExecuteReader(CommandBehavior. OleDbType.Value = MenuRole.Settings.StoredProcedure Dim parameterRoleID As OleDbParameter = New OleDbParameter("@RoleID".CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.ToString()) End Try End Function Public Function InsertRoleMenu(ByVal MenuRole As Entity.MenuRole) As OleDbDataReader Try Using connect As New OleDbConnection(My.Message.Parameters . OleDbType.CommandType = CommandType.Add(parameterRoleID) .ExecuteReader(CommandBehavior.Add(parameterMenuID) End With connect.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Role.MenuRole) As OleDbDataReader Try Using connect As New OleDbConnection(My. connect) mycommand.VarChar.Value = MenuRole.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_DeleteRoleMenu".Parameters .Menu.Open() Using result As OleDbDataReader = mycommand.RoleID Dim parameterMenuID As OleDbParameter = New OleDbParameter("@MenuID".StoredProcedure Dim parameterRoleID As OleDbParameter = New OleDbParameter("@RoleID".Integer) parameterRoleID.Settings.RoleID With mycommand.Open() Using result As OleDbDataReader = mycommand.Message.Value = MenuRole.ToString()) End Try End Function 75 .Integer) parameterRoleID. connect) mycommand.

Untuk method dibawah ini hanya berfungsi untuk mencari data yang berdiri sendiri atau tidak berelasi dengan yang lain.Exception(OleDbExceptionErr. #Region "Process" Public Function GetLeftRightItemFromControl(ByVal Teks As String) As String() '//cari item kiri dari teks Dim intPanjangString As Integer Dim intPosisiDash As Integer intPanjangString = Strings. Dimana kita gunakan ini untuk mengambil RoleID pada Form Access yang akan kita buat nantinya.Left(Teks. _ OleDbExceptionErr. Selanjutnya kita akan membuat method dimana akan membantu kita dalam mencari suatu data dan dimasukkan kedalam Generic List. Ketikkan sintaks dibawah ini. _ ByVal Size As Integer.intPosisiDash + 2)) Dim arrString As String() = {strID.Mid(Teks. ByVal Value As Object.InnerException) End Try End Sub #End Region Pada fungsi GetLeftRightItemFromControl berfungsi untuk mengambil text setelah tanda “>”.Len(Teks) intPosisiDash = Teks.vb dan ketikkan sintaks dibawah. sehingga ini sangat memudahkan kita dalam membuat program. intPosisiDash .Parameters. strNama} Return arrString End Function Public Sub AddParameter(ByVal Name As String.1)) Dim strNama As String = Trim(Strings. Size).Buka DVDModule. 76 . Type.Message. Dengan method dibawah ini kita tidak perlu lagi membuat secara satupersatu. ByVal Type As OleDbType. Biasanya kita selalu membuat suatu method untuk mencari data tertentu.Add(Name.Value = Value Catch OleDbExceptionErr As OleDbException Throw New System. intPanjangString . Sedangkan AddParameter berfungsi untuk membantu dalam pembuatan Paramater dinamis untuk suatu fungsi. intPosisiDash + 2. ByVal myCommand As OleDbCommand) Try myCommand.IndexOf(">") Dim strID As String = Trim(Strings.

GetProperties() 'Dim MyType As Type = type.Add(item) End While End Sub 77 .GetName(i))). Nothing) End If Next End If ' add the item to the list list.GetName(i)).FieldCount .#Region "Fill" Private Sub Fill(Of T)(ByVal reader As IDataReader.ToString b = "" If index <> -1 Then properties(index). Type).1 index = FindProperyIndexByColumnName(reader. reader(fields(j))).SetValue(item.CreateInstance(type).ToString = "".Length <> 0 Then For j As Integer = 0 To fields. If(reader(reader. "".GetType("Myproperty") If fields. T) ' get all the properties of the type Dim properties As Reflection. reader(reader. ByVal fields As String()) Dim index As Integer = 0 ' run the reader While reader.ToString = "". ByVal list As IList(Of T). _ ByVal type As Type.1 ' get the index of the property index = FindProperyIndexByColumnName(fields(j). properties) Dim a. b As String a = reader(reader. If(reader(fields(j)).GetName(i).GetAccessors( If index <> -1 Then properties(index). properties) ' set the value of the property ' properties(index). "".GetName(i)).GetType().PropertyInfo() = DirectCast(item.Length . Nothing) End If Next Else For i As Integer = 0 To reader.Read() ' create an instance of the type Dim item As T = DirectCast(Activator.SetValue(item.

ByVal Size As Integer(). Size(i). ByVal Value As Object()) Using connect As New OleDbConnection(My.Open() Using reader As OleDbDataReader = mycommand.ExecuteReader() Fill(reader.1 DVDModule.CommandType = CommandType. ByVal Name As String(). mycommand) Next End If connect.CommandType = CommandType.StoredProcedure If Name.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand(Query. ByVal type As Type. ByVal fields As String().Name) = UCase(columnName) Then index = i Exit For End If Next Return index End Function Public Sub FillListWithParam(Of T)(ByVal list As IList(Of T).Open() Using reader As OleDbDataReader = mycommand.1 If UCase(prop(i).AddParameter(Name(i).StoredProcedure connect.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand(Query. list. ByVal type As Type) Using connect As New OleDbConnection(My.Length > 0 Then For i = 0 To Name. fields) End Using End Using End Using End Sub #End Region 78 . ByVal Query As String. connect) mycommand.Length .Settings.ExecuteReader() Fill(reader. ByVal fields As String().Settings. ByVal prop As Reflection. connect) mycommand. type.Private Function FindProperyIndexByColumnName(ByVal columnName As String.Length . ByVal Query As String.PropertyInfo()) As Integer Dim index As Integer = -1 For i As Integer = 0 To prop. OleType(i). Value(i). type. list. fields) End Using End Using End Using End Sub Public Sub FillListWithoutParam(Of T)(ByVal list As IList(Of T). ByVal OleType As OleDbType().

(Form ini diambil dari blog mas rully). Name ShowInTaksbar Text StartPosition MaximizeBox MinimizeBox FormBorderStyle BackColor F_FormAccess False Form Access CenterScreen False False FixedSingle White Tambahkan sebuah Panel kedalam form dan ubah properties Dock : Fill dan BackColor : White. 1 Button. Name : pnlLeft.Untuk penggunaan method akan di jelaskan dibawah. Lalu tarik sebuah panel lagi dan ubah propertiesnya Dock : Left. Tambahkan 2 Groupbox. Selanjutnya tambahkan sebuah Form pada project dan ubah properties nya seperti dibawah. Dan ubah properties seperti dibawah. GroupBox1 Text GroupBox2 Text RadioButon1 Text Name Checked RadioButon2 Text Name Checked ListBox1 Name Button1 LstRoles Checked All Node rbCheckedAll False Unchecked All Node rbUncheckedAll True Roles 79 . BackColor : white . 1 ListBox. 2 RadioButton.

22 Selanjutnya tambahkan control ImageList. SelectedImageIndex : 0. Gambar 4. Dim AccessUser As New AccessData. dan pada properties Images klik button browse (.) lalu Add sebuah image yang diinginkan (ukuran 16 x 16). ImageList : ImageList1 dan ImageIndex : 0. Gambar 4. Lalu tambahkan sebuah TreeView dan ubah properties Name : tvUserRights. CheckBoxes : True.AccessUser Dim columns As String() = {} 80 ..Name Text btnUpdate Update Dan atur posisi control-control diatas seperti gambar dibawah.23 Buatlah variable Class seperti dibawah. Lalu letakkan pada Panel1 sesuai dengan gambar dibawah.

"usp_SelectRole".Tag. "&".ToString tvUserRights. Pada procedure ini kita akan DVDModule yang telah kita buat sebelumnya.Text.Nodes. columns.ToString.Role)) For Each items In RoleList lstRoles.Tag = aItem.Items.1 '//jika sub menu itemnya bukan merupakan toolstripmenuitem (bisa saja '//merupakan toolstripseparator) maka item tsb tdk ditambahkan ke treeview : If Not (TypeOf YourToolStripMenuItem.Items '//buat node baru utk ditambahkan ke treeview node : Dim aNode As New TreeNode(Replace(aItem. Private Sub AddMenuToTree(ByVal YourNodeTree As TreeNode.Add(items.DropDownItems(i) Dim aNode As New TreeNode(Replace(currentItem.DropDownItems(i) Is ToolStripMenuItem) Then Continue For Dim currentItem As ToolStripMenuItem = YourToolStripMenuItem.Add(aNode) '//tambahkan node baru ke treeview jika '//node tersebut memiliki node child (DropDownItem): AddMenuToTree(aNode.Text. ByVal YourToolStripMenuItem As ToolStripMenuItem) '//cek apakah toolstripmenuitem tsb mempunyai sub menuitem '//yang merupakan DropDownItem : If YourToolStripMenuItem. _ GetType(Entity.Ketikkan sintaks berikut yang berfungsi untuk generate Node pada TreeView yang mengambil data dari MenuItem pada F_Main.DropDownItems.Fill(dsFormActions.Nodes(0) End Sub Dan selanjutnya adalah membuat procedure untuk mengambil data pada table T_Role dan dimasukkan kedalam LstRoles.Role) DVDModule.Nodes. Private Sub PopulateRolesToListBox() lstRoles. "")) aNode.RoleID & " > " & items.Count > 0 Then '//jika ada sub menu item.RoleName) Next End Sub menggunakan method pada 81 .Tag.Add(aNode) '//cek jika ada sub menu item lagi dengan method recursive AddMenuToTree(aNode.ToString.SelectedNode = tvUserRights.Items.ExpandAll() tvUserRights.Tag = currentItem.ToString YourNodeTree. "formActions") '//iterate toolstripmenuitem yang ada di MainMenuStrip : For Each aItem As ToolStripMenuItem In YourMainMenuStrip. "")) aNode.FillListWithoutParam(RoleList.Clear() Dim RoleList As New List(Of Entity. currentItem) Next End If End Sub Private Sub PopulateToolStripMenuItem(ByVal YourMainMenuStrip As MenuStrip) ' daFormActions. iterate : For i As Int32 = 0 To YourToolStripMenuItem.DropDownItems.Count . "&". aItem) Next tvUserRights.

Try Dim frm_access As New F_FormAccess frm_access.Items Dim str As String = TvTransaction. dan ketikkan sintaks dibawah. yang berfungsi untuk memanggil event handler click pada MenuItem.ShowDialog() Catch ex As Exception MsgBox(ex.PerformClick() Exit Sub Else If currentItem. yang akan kita gunakan pada form-form berikut nya.Count > 0 Then For i As Int32 = 0 To aItem.Message. MsgBoxStyle.F_Main.DropDownItems(i) Is ToolStripMenuItem) Then Continue For Dim currentItem As ToolStripMenuItem = aItem. Selanjutnya pada event handler F_FormAccess_Load ketikkan sintaks dibawah.DropDownItems. dan ketikkan sintaks dibawah.Forms. Kita tidak perlu lagi membuat satu-persatu fungsi untuk mengambil data.Tag. klik menu item Utility > Form Access.SelectedNode.ToString If aItem. "DVD Rental") End Try Lalu buka F_Main (Main Menu). "DVD Rental") End Try Buatlah event handler TvTransaction_DoubleClick. Sebagai contoh.Message.Count 1 If Not (TypeOf currentItem. jika pengguna meng-klik text Group pada TreeView maka secara otomatis program akan memanggil event handler cick untuk Menu Item Group.ToString Then currentItem.Information. Try PopulateToolStripMenuItem(My.MenuStrip1) PopulateRolesToListBox() Catch ex As Exception MsgBox(ex.DropDownItems.DropDownItems(i) If str = currentItem.1 If Not (TypeOf aItem. MsgBoxStyle. hanya cukup dengan memanggil method FillListWithoutParam (pencarian tanpa parameter) dan FilllistWithParam (pencarian dengan parameter).DropDownItems(x) Is ToolStripMenuItem) Then Continue For 82 .DropDownItems. Try For Each aItem As ToolStripMenuItem In MenuStrip1.DropDownItems.Dengan menggunakan method pada DVDModule akan mempermudah kita dalam membuat aplikasi ini.Count .Count > 0 Then For x As Int32 = 0 To currentItem.Tag.Information.

Current. maka Form Access akan muncul seperti gambar dibawah ini. dengan sintaks seperti dibawah.Nodes.Checked = Checked AddRecursiveNode(aNode. Gambar 4.GetEnumerator While IEnum.PerformClick() Exit Sub End If Next End If End If Next End If Next Catch ex As Exception MsgBox(ex. TreeNode) aNode.24 Selanjutnya buatlah procedure untuk mengaktifkan atau non aktifkan checkbox pada node.Message.Information.DropDownItems(x) If str = currentItem2.tvUserRights. MsgBoxStyle. Private Sub CheckedTreeNode(ByVal Checked As Boolean) Dim IEnum As IEnumerator = Me.MoveNext Dim aNode As TreeNode = DirectCast(IEnum.Dim currentItem2 As ToolStripMenuItem = currentItem. pada Main Menu double click text Form Access. "DVD Rental") End Try Dan jalankan program.Tag. Checked) End While End Sub 83 .ToString Then currentItem2.

Integer).CheckedChanged Select Case sender.name.Tables("data").Parameters.CheckedChanged.OleDb Dan ketikkan procedure untuk mengambil data pada table T_MenuRole dengan criteria RoleID.Nodes aNode.StoredProcedure ObjCommand. Selanjutnya adalah kita akan membuat proses dimana jika Role pada list di klik maka hak akses pada suatu role akan di tampilkan pada TreeView dengan tanda checkbox akan aktif.Settings. Private Sub PopulateRoleDetails(ByVal RoleIDs As String) Dim mydata As New DataSet Using connect As New OleDbConnection(My. ByVal Checked As Boolean) For Each aNode As TreeNode In NodeRef.SelectCommand = ObjCommand objDataAdapter. dan sebaliknya untuk UnChecked. jika di klik Radio Button checked maka seluruh check box pada Node akan aktif.DVDConnection) Using ObjCommand As New OleDbCommand("usp_SelectMenuRole". lalu coba klik Radio Button Checked dan UnChecked apakah berfungsi.ToUpper Case "RBCHECKEDALL" CheckedTreeNode(True) Case "RBUNCHECKEDALL" CheckedTreeNode(False) End Select End Sub Jalankan program lalu masuk kedalam Form Access.Object.Count = 0 Then For Each aNode As TreeNode In tvUserRights. rbCheckedAll.Data.Fill(mydata.Private Sub AddRecursiveNode(ByVal NodeRef As TreeNode. "data") End Using End Using End Using If mydata.Nodes aNode.Checked = Checked AddRecursiveNode(aNode.Value = RoleIDs Using objDataAdapter As New OleDbDataAdapter objDataAdapter. ByVal e As System.Checked = False AddRecursiveNode(aNode. Pertamatama adalah dengan mengimports name space OleDB seperti dibawah. False) Next 84 . Imports System.EventArgs) Handles rbUncheckedAll.ToString. Private Sub CheckhedRadioButton(ByVal sender As System. Checked) Next End Sub Dan ketikkan sintaks berikut untuk menggunakan procedure diatas.Rows. OleDbType. connect) ObjCommand.Add("@RoleID".CommandType = CommandType.

Nodes. aNode) End Sub Next End Sub Lalu klik ganda LstRoles dan ketikkan sintaks dibawah.Count > 0 Then Else aNode. dikarenakan kita belum memasukkan data 85 . TreeNode) While IEnum.GetEnumerator Dim aNode As TreeNode = DirectCast(IEnum.Tag.SelectedItem.tvUserRights.MoveNext Dim IEnum As IEnumerator = Me.Checked = True aNode.SelectedIndex <> -1 Then Dim arrItems As String() = DVDModule. aNode) End If End While AddRecursiveNodeTree(YourView. MsgBoxStyle.Checked = True If YourView. aNode) End Sub End While End Sub Private Sub AddRecursiveNodeTree(ByVal YourView As DataView.tvUserRights.RowFilter = "MenuID = '" & aNode.Tag.RowFilter = "MenuID = '" & aNode.Tag.Current. aNode) End If Next AddRecursiveNodeTree(YourView.DefaultView) End If End Sub Private Sub PopulateItemCheckedToTheTree(ByVal YourView As DataView) Dim IEnum As IEnumerator = Me.RowFilter = "MenuID = '" & aNode.Count > 0 Then Else aNode.Checked = True aNode. Try If lstRoles.Tag.Nodes.ToString & "'" aNode. "DVD Rental") End Try Sintaks diatas berfungsi untuk memanggil proses PopulateRoleDetails dengan kriteria Role yang di klik pada LstRoles.ToString & "'" aNode.Count > 0 Then YourView.Tables("data").Checked = False AddRecursiveNodeTree(YourView. lalu pada Form Access klik Role pada LstRoles.MoveNext YourView.ToString & "'" For Each aNode As TreeNode In NodeRef. dengan menggunakan fungsi GetLeftRightItemFromControl yang telah kita buat sebelumnya pada DVDModule.Count > 0 Then YourView.Checked = False Else End If aNode.Message.ToString) PopulateRoleDetails(arrItems(0)) End If Catch ex As Exception MsgBox(ex. ByVal NodeRef As TreeNode) Private Sub AddRecursiveNodeTree(ByVal YourView As DataView.Checked = True If YourView. tapi jika Role yang lain maka tidak aktif.Checked = False AddRecursiveNodeTree(YourView.Nodes TreeNode) YourView. jika pada saat pembaca klik Role Admin maka checkbox pada Node akan aktif semua.Nodes If YourView. TreeNode) If YourView. Dan jalankan program.GetEnumerator Private Sub PopulateItemCheckedToTheTree(ByVal YourView As DataView) While IEnum.Information.Checked = False Else End If aNode.Current. ByVal NodeRef As For Each aNode As TreeNode In NodeRef.Else PopulateItemCheckedToTheTree(mydata.GetLeftRightItemFromControl(lstRoles.RowFilter = "MenuID = '" & aNode.ToString & "'" Dim aNode As TreeNode = DirectCast(IEnum.

ByVal NodeRef As TreeNode) For Each aNode As TreeNode In NodeRef. FormAction.MenuID = aNode. Tag) : If aNode. aNode) Next End Sub Klik ganda button Update dan ketikkan sintaks berikut : Try If lstRoles. FormAction. Dan sekarang kita lanjutkan untuk menginput data pada table. Private Sub InsertItemCheckedOnTheTreeToDatabase(ByVal RoleID As String. vbYesNo.GetLeftRightItemFromControl(lstRoles.Role.RoleID = RoleID MenuRole.MenuRole MenuRole. MsgBoxStyle.Role.Tag.RoleID = arrItems(0) AccessUser.Current.InsertRoleMenu(MenuRole) End If AddRecursiveTreeNode(RoleID.MenuID = aNode.Menu.Checked Then Dim MenuRole As New Entity. ByVal RoleName As String) Dim IEnum As IEnumerator = Me. MenuName. dengan cara mengaktifkan Checkbox pada Node di TreeView.SelectedItem.InsertRoleMenu(MenuRole) AddRecursiveTreeNode(RoleID.GetEnumerator While IEnum. MenuName. "DVD Rental") Exit Sub Else Dim arrItems As String() = DVDModule.Menu.Information.SelectedIndex = -1 Then MsgBox("Pilih dahulu RoleID yang akan diupdate dari List Roles". aNode) End If End While End Sub Private Sub AddRecursiveTreeNode(ByVal RoleID As String. arrItems(1)) lstRoles. Tag) : If aNode.tvUserRights. Ketikkan sintaks dibawah ini.MoveNext Dim aNode As TreeNode = DirectCast(IEnum.kedalam table. MsgBoxStyle.SelectedIndex = -1 End If End If Catch ex As Exception MsgBox(ex.DeleteRoleMenu(MenuRole) InsertItemCheckedOnTheTreeToDatabase(arrItems(0).Nodes '//insert ke tabel RoleDetails (RoleID. "DVD Rental") If mYes_No = vbYes Then Dim MenuRole As New Entity.MenuRole MenuRole.ToString) Dim mYes_No As String = MsgBox("Apakah kamu ingin menyimpan data ?".Role.RoleID = RoleID MenuRole.Checked Then Dim MenuRole As New Entity.Message. TreeNode) '//insert ke tabel RoleDetails (RoleID.Nodes.MenuRole MenuRole. "DVD Rental") End Try 86 .ToString AccessUser.ToString AccessUser.Tag.Information.

Integer). ToolMenu.DropDownItems(i).Items.RowFilter = "MenuID = '" & ToolMenu. ToolMenu) End While End Sub Private Sub CreateMenuItem(ByVal dtView As DataView.Count > 0 Then ToolMenu.1 If Not (TypeOf ToolMenu.RowFilter = "MenuID = '" & ToolMenu.Parameters.Fill(mydata.CommandType = CommandType.DropDownItems(i).Tag.DropDownItems(i).Tag = "" End If CreateMenuItem(dtView.Tag.ToString & "'" If dtView.DropDownItems(i) Is ToolStripMenuItem) Then Continue For dtView.DefaultView) End Sub Private Sub CreateMenu(ByVal dtView As DataView) Dim Num As IEnumerator = MenuStrip1.GetEnumerator While Num. yang berfungsi untuk menampilkan Menu Item sesuai dengan hak akses yang diberikan.DVDConnection) Using ObjCommand As New OleDbCommand("usp_SelectMenuRole". #Region "PopulateMenu" Private Sub PopulateRoleDetails() Dim mydata As New DataSet Using connect As New OleDbConnection(My. connect) ObjCommand.ToString & "'" If dtView.Visible = True Else ToolMenu.Add("@RoleID".DropDownItems. "data") End Using End Using End Using CreateMenu(mydata.Visible = False ToolMenu. pada Form Access. ToolStripMenuItem) dtView.Current.Tables("data").Value = RoleID Using objDataAdapter As New OleDbDataAdapter objDataAdapter. lalu ketikkan sintaks berikut. OleDbType.DropDownItems(i)) Next End Sub #End Region 87 .Visible = True Else ToolMenu.MoveNext Dim ToolMenu As ToolStripMenuItem = DirectCast(Num. ByVal ToolMenu As ToolStripMenuItem) For i As Integer = 0 To ToolMenu.Count > 0 Then ToolMenu.Buka F_Main (Main Menu).Settings.Count .SelectCommand = ObjCommand objDataAdapter.StoredProcedure ObjCommand.Visible = False End If CreateMenuItem(dtView.DropDownItems(i).

lalu masukkan data seperti dibawah. RoleID : 4 dan Actived = True (Yes).25 88 .accdb) buka T_User. lalu klik button update. Username : anam.Lalu aktifkan F_Main dan pada event handler F_Main_Load tambahkan sintaks berikut PopulateRoleDetails() Pada Ms Access (DVD. maka tampilan pada Main Menu akan seperti gambar dibawah. First Name : Khoirul. Last Name : Anam. Gambar 4. Selanjutnya jalankan program (gunakan user administrator). lalu klik Role Kasir dan aktifkan checkbox pada TreeView seperti gambar dibawah. Lalu Logout dan login menggunakan username : anam (seperti diatas). Password: 123.

26 Pada setiap aplikasi umumnya selalu menyediakan fasilitas untuk mengubah password.Gambar 4. Untuk aplikasi yang kita buat ini kita juga akan meneyediakan fasilitas ini. 3 label dan 2 button lalu ubah masing-masing control seperti dibawah. untuk mengantisipasi jika password dari pengguna telah di ketahui oleh orang lain. TextBox1 Name txtOld 89 . Tambahkan sebuah form pada project dan ubah properties nya seperti dibawah. Name ShowInTaksbar Text StartPosition ControlBox FormBorderStyle BackColor F_Change False Form Access CenterScreen False FixedSingle White Dan tambahkan 3 textbox. Ikuti langkah-langkah dibawah ini untuk membuat form ubah password.

UserName)=[@Username])).Parameters .Users) As OleDbDataReader Try Using connect As New OleDbConnection(My. Public Function ChangePassword(ByVal User As Entity.Value = User.Value = User.accdb) lalu buat Query dengan namanya “usp_changepassword” dan dengan sintaks SQL nya seperti dibawah. OleDbType. Lalu pada project kita buka AccessUser dan ketikkan sintaks berikut untuk mengubah password pengguna.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_changepassword".CommandType = CommandType.StoredProcedure Dim parameterPassword As OleDbParameter = New OleDbParameter("@Password". connect) mycommand.[Password] = [@password] WHERE (((T_User. OleDbType.Password Dim parameterUserName As OleDbParameter = New OleDbParameter("@genre_id". UPDATE T_User SET T_User.Add(parameterUserName) End With 90 .TextBox2 Name TextBox3 Name Button1 Text Name Button2 Text Name Close btnCancel Save btnSave txtConfirm txtNew Buka MS Access (DVD. 15) parameterPassword.VarChar.Username With mycommand.VarChar. 15) parameterUserName.Settings.Add(parameterPassword) .

ini untuk menjaga jika yang mengganti password adalah benar-benar pengguna yang benar. "DVD Rental") Exit Sub End If If Password <> txtOld.Message.Information.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Text = "" txtNew. "DVD Rental") Exit Sub End If Dim User As New Entity. Lalu klik ganda button OK dan ketikkan sintaks berikut. "DVD Rental") Exit Sub ElseIf txtNew.Text <> txtConfirm.Text Then MsgBox("Password lama salah".ToString()) End Try End Function Kembali ke F_Change.Text = "" Or txtNew.Password = txtNew. "DVD Rental") End Try Pada sintaks diatas sebelum mengubah password terlebih dahulu aplikasi ini mengecek apakah password lama yang kita masukkan benar atau salah. klik ganda button Close dan ketikkan sintaks berikut :Me.Information. "DVD Rental") Catch ex As Exception MsgBox(ex.Text = "" Or txtConfirm.ExecuteReader(CommandBehavior.Text.ChangePassword(User) txtOld. ini untuk memastikan bahwa password yang dimasukkan emang benar.Open() Using result As OleDbDataReader = mycommand.Message.Information.connect.Information. Try Dim AccessUser As New AccessData. MsgBoxStyle. Lalu setelah itu dengan menggunakan fungsi ChangePassword aplikasi mengubah password 91 .Close.Username = UserName} AccessUser. Lalu mengecek password baru dan konfirmasi apakah sama.Users With {.Text Then MsgBox("Password baru dan confirm password tidak sama".Text = "" Then MsgBox("Isi seluruh data terlebih dahulu". MsgBoxStyle.Exclamation. MsgBoxStyle.AccessUser If txtOld. .Text = "" MsgBox("Ganti password sukses". MsgBoxStyle.Text = "" txtConfirm. MsgBoxStyle.

lama dengan yang baru. MsgBoxStyle. Form ini berguna untuk memasukkan data pengguna baik lama atau baru.ShowDialog() Catch ex As Exception MsgBox(ex. "DVD Rental") End Try Jalankan program dan masuk ke Form Change Password lalu ganti passwordnya. 4 TextBox. klik ganda dan ketikkan sintaks dibawah. Buka F_Main dan pada MenuItem Utility > Change Password . maka selanjutnya kita akan membuat form untuk pengolahan data pengguna.Information. Tambahkan sebuah form dan ganti properties nya seperti dibawah: Name ShowInTaksbar Text StartPosition MaximizeBox MinimizeBox FormBorderStyle BackColor F_User False Form Access CenterScreen False False FixedSingle White Dan tambahkan 1 GroupBox. Try Dim frm_access As New F_FormAccess frm_access.Message.27 Setelah selesai membuat Form Change Password. Gambar 4. 1 comboBox. 92 . 5 Label. 1 Checkbox dan 2 button selanjutnya ganti properties seperti dibawah.

28 93 . btnCancel &Cancel btnSave &Save cbStatus cbRole txtLast txtfirst txtPassword txtUser User Detail Gambar 4.GroupBox1 Text TextBox1 Name TextBox2 Name TextBox3 Name TextBox4 Name ComboBox1 Name CheckBox1 Name Button1 Name Text Button2 Name Text Dan atur posisi control seperti gambar dibawah.

OleDbType.RoleID FROM T_User.Add(parameterUserName) . SELECT T_User. [@RoleID]. T_User.VarChar.Value = User.Add(parameterFirstName) . OleDbType.VarChar. OleDbType. 50) parameterLastName. Actived ) VALUES ([@UserName]. 50) parameterFirstName. [@Last_Name]. RoleID. First_Name.Value = User. T_User. Last_Name.StoredProcedure Dim parameterUserName As OleDbParameter = New OleDbParameter("@UserName".username. T_User. OleDbType. [@First_Name]. T_User.Integer) parameterRoleID.Password Dim parameterFirstName As OleDbParameter = New OleDbParameter("@first_name".First_Name = [@First_Name].RoleID = [@RoleID]. Buka AccessUser dan ketikkan sintaks dibawah ini.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_InsertUser".VarChar.Value = User. 15) parameterUserName.Last_Name = [@Last_Name].Last_Name.Lalu pada DVD.Users) As OleDbDataReader Try Using connect As New OleDbConnection(My.Settings. 1).Add(parameterPassword) . T_User.[Password] = [@Password].Role.accdb buat Query dengan nama masing-masing seperti berikut : usp_SelectUserList.CommandType = CommandType.First_Name Dim parameterLastName As OleDbParameter = New OleDbParameter("@last_name".First_Name. INSERT INTO T_User ( UserName. Public Function UserInsert(ByVal User As Entity. 15) parameterPassword. T_User. Dan dengan sintkas SQL seperti dibawah. connect) mycommand. T_User.actived. usp_InsertUser.VarChar.Add(parameterRoleID) End With 94 .Parameters .Value = User. UPDATE T_User SET T_User.UserName)=[@UserName])). [@Password].Username Dim parameterPassword As OleDbParameter = New OleDbParameter("@Password". OleDbType. T_User. usp_UpdateUser. Dan selanjutnya kita akan membuat 2 fungsi untuk insert dan update user.Actived = [@Actived] WHERE (((T_User. [Password].Value = User.Last_Name Dim parameterRoleID As OleDbParameter = New OleDbParameter("@RoleID".RoleID With mycommand.Add(parameterLastName) .

Message.Add(parameterFirstName) . 50) parameterFirstName. 50) parameterLastName.Settings.Value = User.VarChar. OleDbType.Username With mycommand.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.ToString()) End Try End Function Public Function UserUpdate(ByVal User As Entity.Last_Name Dim parameterRoleID As OleDbParameter = New OleDbParameter("@RoleID". OleDbType.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateUser".Add(parameterLastName) .connect.Value = User. 15) parameterPassword.CommandType = CommandType.VarChar. OleDbType. connect) mycommand.Add(parameterUserName) End With connect.Value = User.ToString()) End Try End Function 95 .Value = User. OleDbType.Message.Actived Dim parameterUserName As OleDbParameter = New OleDbParameter("@UserName".Add(parameterActived) .Boolean) parameterActived.Open() Using result As OleDbDataReader = mycommand.ExecuteReader(CommandBehavior.RoleID Dim parameterActived As OleDbParameter = New OleDbParameter("@Actived".Role.VarChar.Open() Using result As OleDbDataReader = mycommand.ExecuteReader(CommandBehavior.Add(parameterRoleID) .Users) As OleDbDataReader Try Using connect As New OleDbConnection(My.StoredProcedure Dim parameterPassword As OleDbParameter = New OleDbParameter("@Password". OleDbType. OleDbType.First_Name Dim parameterLastName As OleDbParameter = New OleDbParameter("@last_name".Integer) parameterRoleID.VarChar.Value = User.Value = User. 15) parameterUserName.Add(parameterPassword) .Parameters .Password Dim parameterFirstName As OleDbParameter = New OleDbParameter("@first_name".

Text = list. _ GetType(Entity.Controls If TypeOf C Is TextBox Then T = CType(C. ".First.FindStringExact(list.Dan pada F_User tekan F7 untuk masuk ke jendela Code buat variable Class seperti dibawah.GbDetail.SelectedIndex = 0 End Sub Lalu ketikkan sintaks dibawah untuk menampilkan data user dengan menggunakan fungsi login yang telah kita buat sebelumnya pada Class AccessUser.DisplayMember = "RoleName" CbRole.FillListWithoutParam(RoleList.Text = list. columns.Role. False) End Sub Lalu klik ganda F_User dan ketikkan sintaks berikut.Login(txtUser.Password txtFirst.First.Users) = AccessUser.First.Text = list.First_Name txtLast.RoleName) CbStatus.Checked = If(list.Role)) CbRole. membalikkan posisi CbRole seperti semula).Text = list.SelectedIndex = CbRole.Role) From {{"0". Private Sub Dim Dim For Clear() C As Control T As TextBox Each C In Me. "usp_SelectRole".ValueMember = "RoleID" End Sub Dan sintaks dibawah ini berfungsi untuk merefresh form (meng.Actived = "True".First. Private Sub SortRole() Dim RoleList As New List(Of Entity. Dim AccessUser As New AccessData.Username txtPassword.clearkan textbox.Last_Name CbRole.First.First. seperti dibawah.AccessUser Dim columns As String() = {} Selanjutnya kita akan membuat procedure untuk menampilkan data pada CbRole.Choice -"}} DVDModule. 96 .Text = "" End If Next CbRole.DataSource = RoleList CbRole.Text) txtUser. Private Sub ViewUser() Dim list As List(Of Entity. True. TextBox) T.

Message.Try SortRole() If Operate = "Add" Then CbStatus. False)} Dim mYes_No As String = MsgBox("Apakah kamu ingin menyimpan data ?".Visible = False Else CbStatus.Users With {. . .Checked = True.Text.Role With {. maka proses yang dilakukan adalah hany merefresh form sedangkan Operate <> Add maka form akan di tutup. .SelectedIndex = 0 Then MsgBox("Pilih Role terlebih dahulu". . MsgBoxStyle.UserUpdate(User) End If End If 97 .Text. "DVD Rental") If mYes_No = vbYes Then If Operate = "Add" Then AccessUser. "DVD Rental") Exit Sub End If Dim User As New Entity. yang berfungsi untuk menyimpan data baru maupun mengubah data lama.Visible = True ViewUser() End If Catch ex As Exception MsgBox(ex.Exclamation.Role = New Entity. "DVD Rental") End Try Pada sintaks diatas jika Operate (Global Variable) tidak sama dengan “Add” maka pada form ini akan menampilkan data user dengan menggunakan procedure ViewUser. vbYesNo.Checked = True CbStatus. Klik ganda button Cancel dan ketikkan sintaks dibawah.RoleID = CbRole. Try If CbRole. True.Actived = If(CbStatus.Close() End If Sintaks diatas memiliki dua fungsi sama seperti pada F_Main_Load yaitu jika pada Operate=Add. Dan mengaktifkan CbStatus.Last_Name = txtLast.Information.UserInsert(User) Clear() Else AccessUser.SelectedValue}. Lalu klik ganda button Save dan ketikkan sintaks dibawah ini. If Operate = "Add" Then Clear() Else Operate = Nothing Me.Username = txtUser. MsgBoxStyle.First_Name = txtFirst. .Text.Password = txtPassword.Text.

seperti dibawah.28 Lalu bagaimanakah cara mengubah data user?? Mungkin pertanyaan itu ada di benak para pembaca. pada menu Item Utility > Users > Add. buka form Add user dan masukkan data user pada form.Message. Untuk lebih jelasnya ikuti langkah dibawah ini. yang pertama untuk mencari data user dan kedua menampilkan daftar user. 98 . MsgBoxStyle. Gambar 4. Pada Form ini untuk mengubah data user sebelumnya adalah kita membutuhkan 2 buah form. Try Operate = "Add" Dim frm_user As New F_User frm_user. ketikkan sintaks berikut.Exclamation. Tambahkan sebuah form pada project dan ubah properties nya seperti dibawah.Catch ex As Exception MsgBox(ex.Message) End Try Dan jalankan program dengan menekan F5. "DVD Rental") End Try Sekarang buka F_Main.ShowDialog() Operate = Nothing Catch ex As Exception MsgBox(ex.

btnCancel &Cancel btnCancel Cancel btnSave &Save btnSearch Search btnOK OK txtUsername Gambar 4. TextBox1 Name Button1 Name Text Button2 Name Text Button3 Name Text Name Text Button2 Name Text Dan atur posisinya seperti gambar dibawah. 1 Label dan 3 button lalu ubah propertiesnya seperti dibawah.29 99 .Name ShowInTaksbar Text StartPosition ControlBox FormBorderStyle BackColor F_UserBox False Form Access CenterScreen False FixedSingle White Dan tambahkan 1 TextBox.

Dan ubah propertiesnya seperti dibawah. TextBox1 Name Groupbox1 Text Button1 Name Text Button2 Name Text Button3 Name Text Name Text Button2 Name Text btnCancel &Cancel btnCancel Cancel btnSave &Save btnSearch Search btnCancel Cancel Search Criteria by Username txtSearch 100 .Selanjutnya tambahkan sebuah form lagi dan ubah properties seperti dibawah. Name ShowInTaksbar Text StartPosition MaximizeBox MinimizeBox FormBorderStyle BackColor H_User False User List CenterScreen False False FixedSingle White Dan tambahkan beberapa control 1 Groupbox. 1 GriView dan 1 Button. 1 TextBox.

DataGridView1 Name DgView Dan atur posisi control diatas seperti gambar dibawah.DataPropertyName = "last_name" LastColumn.Blue Me.HeaderText = "Last Name" LastColumn.Fixed3D DgView.Width = 80 Dim FirstColumn As New DataGridViewTextBoxColumn() FirstColumn.Fixed3D Me. pada jendela Code H_User buat variable Class seperti dibawah.DgView.DgView.RowHeadersBorderStyle = BorderStyle.30 Tekan F7.DefaultCellStyle. Dim UserList As New List(Of Entity.Width = 100 101 .HeaderText = "Username" UserColumn.DataPropertyName = "Username" UserColumn.Users) Dan buat procedure untuk mengatur format DgView seperti dibawah.GridColor = Color.DataPropertyName = "first_name" FirstColumn.AutoGenerateColumns = False Dim UserColumn As New DataGridViewTextBoxColumn() UserColumn.Navy Me.BackColor = Color. Gambar 4.Width = 100 Dim LastColumn As New DataGridViewTextBoxColumn() LastColumn.DgView.RowsDefaultCellStyle.DgView.ForeColor = Color.DgView.AliceBlue Me. Private Sub FormatGridWithBothTableAndColumnStyles() Me.BorderStyle = BorderStyle.HeaderText = "First Name" FirstColumn.

Information. MsgBoxStyle.DataSource = query Catch ex As Exception MsgBox(ex.Add(ActColumn) End Sub Klik ganda button cancel dan ketikkan sintaks berikut . "DVD Rental") End Try Sintaks ini menggunakan LINQ to Object yang berfungsi untuk mencari data pada List (Of User).FillListWithoutParam(UserList. me.HeaderText = "Actived" ActColumn.Contains(txtSearch. Try Dim columns As String() = {"username".Columns. dan hasil perncarian tersebut akan ditampilkan pada DgView. columns.Information. "last_name".Width = 150 DgView. Lalu buatlah event Handler txtSearch_KeyUp dan ketikkan sintaks berikut : Try Dim query = (From a In UserList Where a.Username.Message.Message.Dim ActColumn As New DataGridViewTextBoxColumn() ActColumn.Users)) FormatGridWithBothTableAndColumnStyles() DgView. "usp_SelectUserList". "actived"} DVDModule.Columns.Columns.Add(LastColumn) DgView. "DVD Rental") End Try Sintaks diatas berfungsi untuk menampilkan data kedalam DgView yang sebelumnya disimpan terlebih dahulu kedalam Generic List (of User).Columns. _ GetType(Entity. selanjutnya buatlah Event Handler H_User_FormClosing dan ketikkan sintaks berikut : Operate=Nothing.close. 102 . dan ketikkan sintaks dibawah ini.Add(FirstColumn) DgView. "first_name".DataSource = UserList txtSearch.Add(UserColumn) DgView.DataPropertyName = "actived" ActColumn. Dan terakhir buat event handler DgView_CellDoubleClick dan ketikkan sintaks berikut.ToList DgView. MsgBoxStyle. Lalu klik ganda H_User (Event Handler H_User_Load).Focus() Catch ex As Exception MsgBox(ex.Text) Select a).

Text = frm_HUser.Information. FieldName.RowIndex) txtSearch. klik ganda button Cancel dan ketikkan sintaks berikut : Operate = Nothing Me.OleDbType. Dan langsung menutup form ini.Users) Dim Coltype As System.FillListWithParam(RoleList. _ Coltype.Text} Dim columns As String() = {"username"} DVDModule. "usp_selectlogin". "DVD Rental") Exit Sub End If Dim RoleList As New List(Of Entity. Size.Users). untuk baris yang di klik akan di ambil datanya untuk kolom pertama.Text = row. dan masuk ke jendela Code.If Operate <> Nothing Then Dim row As DataGridViewRow = DgView.ShowDialog() txtUsername.Close() Lalu klik ganda button Search dan ketikkan sintaks dibawah ini. Operate = "Edit" Dim frm_HUser As New H_User frm_HUser. Selanjutnya aktifkan form F_USerBox. _ GetType(Entity.OleDbType() = {System. MsgBoxStyle. Dan klik ganda button OK. Value) If RoleList. columns.Text Sintaks ini berfungsi untuk menampilkan Form H_User yang telah kita buat sebelumnya.txtSearch.Data.OleDb.Close() End If Sintaks ini berfungsi jika user melakukan klik ganda pada cell di DgView maka.VarChar} Dim FieldName As String() = {"@username"} Dim Size As Integer() = {15} Dim Value As String() = {txtUsername.Count = 0 Then MsgBox("Username Salah") Exit Sub End If 103 . lalu ketikkan sintaks berikut : Try If txtUsername.OleDb.Cells(0).Value Operate = Nothing Me.Text = "" Then MsgBox("Masukkan Username".Rows(e.Data.

jika tidak mengetahui username yang dicari tekan tombol search.30 104 .txtUser.Exclamation.Text frm_User. Jika username yang dimasukkan benar maka F_User akan ditampilkan berserta data-data user yang dicari.ShowDialog() Me. maka daftar pengguna akan tampil.Dim frm_User As New F_User frm_User.Close() Catch ex As Exception MsgBox(ex.Text = txtUsername. lalu masukkan username.Message) End Try Jalankan program dan klik menu utility > User > Edit.ShowDialog() Catch ex As Exception End Try Utility > User > User List lalu klik ganda dan ketikkan sintaks berikut : Try Dim frm_HUser As New H_User frm_HUser. jika username tidak ada pada table maka akan ada pesan error. Lalu buka F_Main (Main Menu) pada Menu Item Utilty > Users > Edit ketikkan sintaks berikut : Try Dim frm_UserBox As New F_UserBox frm_UserBox.ShowDialog() Catch ex As Exception MsgBox(ex. "DVD Rental") End Try Sintaks diatas berfungsi untuk memvalidasi username yang dimasukkan kedalam textbox. Dan selanjutnya ubah data user pada form User. Gambar 4.Message. MsgBoxStyle.

32 105 .Gambar 4.31 Gambar 4.

6 button dan 1groupbox dan ubah properties seperti dibawah. Table ini digunakan untuk pengelompokan DVD baik biaya Rental. jadi idak kita atur semua itu pada data DVD. Penulis akan menjelaskan kegunaan dari table group ini. Terlebih dahulu buatlah table Group dengan nama T_Group dan strukturnya sebagai berikut : Field Name ids group_id Group_name days price fee Data Type AutoNumber Text Text Number Currency Currency 4 25 Integer PK (*) Field size Primary Key Tambahkan sebuah form ubah properties nya seperti dibawah Name ShowInTaksbar Text StartPosition MaximizedBox MinimizedBox FormBorderStyle BackColor F_Group False Add/Edit Group CenterScreen False False FixedSingle White Selanjutnya tambahkan control 5 textbox. 106 .3 Membuat Form Group Setelah selesai membuat beberapa form untuk management user sekarang kita lanjutkan membuat form untuk pengolahan data Group.4. 5 label. biaya kelambatan atau jumlah hari Rental untuk suatu DVD.

Textbox1 Name Enabled Textbox2 Name TextBox3 Name TextBox4 Name TextBox5 Name GroupBox1 Name Text Button1 Name Text Button2 Name Text Button3 Name Text Button4 Name Text Button5 Name Text Button6 btnDelete &Delete btnEdit &Edit btnAdd &Add btnCancel &Cancel btnSave &Save GbDetail Item Detail txtFee txtPrice txtDays txtName txtID False 107 .

Gambar 4. lalu ketikkan sintaks berikut pada Class Group.Name Text btnFind &Find Dan atur posisi nya seperti gambar dibawah.33 Tambahkan Class pada folder entity dan ubah namanya menjadi Group. Namespace Entity Public Class Group Private m_groupid As String Public Property Group_ID() As String Get Return m_groupid End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan Group ID") End If m_groupid = value End Set End Property Private m_groupname As String Public Property Group_Name() As String Get Return m_groupname End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan Group Name") End If m_groupname = value End Set End Property 108 .

usp_InsertGroup. DELETE * FROM t_group WHERE (((t_group.Price = price.Days = days. SELECT TOP 1 t_group. ByVal price As Decimal. [@fee]).group_id)=[@group_id])).ids DESC. usp_selectgroup. ByVal fee As Decimal) GroupList. .* FROM t_group ORDER BY t_group. <Extension()> Sub Add(ByVal GroupList As List(Of Entity.ids. price. ByVal groupname As String. t_group. t_group.Add(New Entity. SELECT t_group.group_name = [@group_name].price = [@price]. [@days]. t_group. ByVal days As Int16. INSERT INTO T_Group ( group_id. usp_DeleteGroup Dengan masing-masing sintaks SQL seperti dibawah.fee = [@fee] WHERE (((t_group. group_name. .Fee = fee}) End Sub Lalu buatlah 5 buah query pada database dengan nama masing sebagai berikut : usp_SelectGroupTop1.Group With {. [@group_name]. 109 .Group). usp_UpdateGroup.Lalu buka DVDModule dan ketikkan sintaks dibawah pada Region Extension Method yang kita buat sebelumnya. .Group_ID = groupid.Group_Name = groupname. [@price]. .* FROM t_group ORDER BY t_group. ByVal groupid As String. UPDATE t_group SET t_group.days = [@days]. fee ) VALUES ([@group_id]. days.group_id)=[@grup_id])).

CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Data.Serta tambahkan class pada folder AccessData dan ubah namanya menjadi AccessGroup.ExecuteReader(CommandBehavior. 4) parameterGroupID.Add(parameterFee) End With connect.Add(parameterDays) .Price Dim parameterFee As OleDbParameter = New OleDbParameter("@fee". OleDbType.Value = Group.VarChar.CommandType = CommandType.Message.Value = Group.Currency) parameterPrice.Group) As OleDbDataReader Try Using connect As New OleDbConnection(My.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_InsertGroup".Group_ID Dim parameterGroupName As OleDbParameter = New OleDbParameter("@group_name".Fee With mycommand.Add(parameterGroupID) .ToString()) End Try End Function 110 .Add(parameterGroupName) .Integer) parameterDays. dan ketikkan sintaks dibawah didalam NameSpace AccessData Public Function GroupInsert(ByVal Group As Entity. OleDbType. OleDbType.Value = Group. lalu import terlebih dahulu Name Space OleDB (Imports System. OleDbType. connect) mycommand.Add(parameterPrice) .Open() Using result As OleDbDataReader = mycommand.Value = Group.Parameters .Group_Name Dim parameterDays As OleDbParameter = New OleDbParameter("@Days".Settings. 25) parameterGroupName.Value = Group. selanjutnya buat NameSpace AccessData.Days Dim parameterPrice As OleDbParameter = New OleDbParameter("@Price". OleDbType.OleDb).VarChar.StoredProcedure Dim parameterGroupID As OleDbParameter = New OleDbParameter("@group_id".Currency) parameterFee.

Fungsi diatas digunakan untuk menambah data group, dengan menggunakan query usp_InsertGroup. Selanjutnya ketikkan sintaks untuk mengubah data group seperti dibawah.
Public Function GroupUpdate(ByVal Group As Entity.Group) As OleDbDataReader Try Using connect As New OleDbConnection(My.Settings.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateGroup", connect) mycommand.CommandType = CommandType.StoredProcedure Dim parameterGroupName As OleDbParameter = New OleDbParameter("@group_name", OleDbType.VarChar, 25) parameterGroupName.Value = Group.Group_Name Dim parameterDays As OleDbParameter = New OleDbParameter("@Days", OleDbType.Integer) parameterDays.Value = Group.Days Dim parameterPrice As OleDbParameter = New OleDbParameter("@Price", OleDbType.Currency) parameterPrice.Value = Group.Price Dim parameterFee As OleDbParameter = New OleDbParameter("@fee", OleDbType.Currency)

parameterFee.Value = Group.Fee

Dim parameterGroupID As OleDbParameter = New OleDbParameter("@group_id", OleDbType.VarChar, 4) parameterGroupID.Value = Group.Group_ID

With mycommand.Parameters .Add(parameterGroupName) .Add(parameterDays) .Add(parameterPrice) .Add(parameterFee) .Add(parameterGroupID) End With connect.Open() Using result As OleDbDataReader = mycommand.ExecuteReader(CommandBehavior.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Message.ToString()) End Try End Function

111

Dan terakhir tambah kan sintaks untuk menghapus data group pada table.
Public Function GroupDelete(ByVal Group As Entity.Group) As OleDbDataReader Try Using connect As New OleDbConnection(My.Settings.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_DeleteGroup", connect) mycommand.CommandType = CommandType.StoredProcedure

Dim parameterGroupID As OleDbParameter = New OleDbParameter("@group_id", OleDbType.VarChar, 4) parameterGroupID.Value = Group.Group_ID

With mycommand.Parameters .Add(parameterGroupID) End With connect.Open() Using result As OleDbDataReader = mycommand.ExecuteReader(CommandBehavior.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Message.ToString()) End Try End Function

Kembali pada F_Group, buat variable class seperti dibawah
#Region "Deklarasi" Public Proses As String Protected AccessGroup As New AccessData.AccessGroup Dim columns As String() = {} #End Region

Selanjutnya kita akan membuat procedure untuk mengahapus data pada form dan disable inputan pada form, seperti dibawah.

112

Private Sub Aktif_Inputan(ByVal Bol As Boolean, ByVal pros As String) Dim C As Control For Each C In Me.Controls If C.HasChildren Then For Each hChild As Control In C.Controls If TypeOf hChild Is TextBox AndAlso UCase(hChild.Name) <> UCase("txtID") Then hChild.Enabled = Bol If UCase(pros) = "ADD" AndAlso UCase(hChild.Name) <> UCase("txtname") Then hChild.Text = "0" End If End If If TypeOf hChild Is TextBox AndAlso UCase(pros) = UCase("clear") Then hChild.Text = "" End If Next ElseIf TypeOf C Is Button AndAlso UCase(C.Name) = UCase("btnsave") Then C.Enabled = Bol End If Next End Sub

Pada procedure ini kita telah membuat 1 prosedure untuk 3 keperluan, pertama untuk merefresh form, disable inputan dan terakhir adalah enabled inputan. Sesuai inputan yang kita masukkan pada procedure. Selanjutnya adalah membuat fungsi penomoran otomatis seperti dibawah.
Private Function IDNo() As String Dim GroupList As New List(Of Entity.Group) DVDModule.FillListWithoutParam(GroupList, columns, "usp_SelectGroupTop1", GetType(Entity.Group)) If GroupList.Count = 0 Then txtID.Text = "GR01" Else txtID.Text = "GR" & Format(Val(CInt(Microsoft.VisualBasic.Right(GroupList.First.Group_ID, GroupList.First.Group_ID.Length - 2)) + 1), "00") End If Return txtID.Text End Function

Pada fungsi diatas, pertama-tama adalah mencari nilai record awal dengan menggunakan sorting descending pada query yang kita buat sebelumnya, dan disimpan didalam List. Jika list kosong (table kosong), maka secara otomatis nilai kembaliannya adalah “GR01” sedangkan jika ada maka akan dimabil nilai terakhir dengan menggunakan fungsi Right, lalu di tambah 1. Selanjutnya pada event handler txtPrice_Keypress ubah sintaks nya seperti berikut :
113

Dan buat event handler txtFee_Keyup lalu ketikkan sintaks berikut : If e. MsgBoxStyle.KeyPressEventArgs) Handles txtPrice. Lalu klik Button Add.KeyChar = vbBack) Then e. proses pada button save agar dijalankan. yang berfungsi untuk melakukan penambahan data dengan sintaks seperti dibawah.Forms. ByVal e As System. 114 . jika pada txtFee (textbox terakhir dari form) pengguna menekan Enter maka. txtFee.KeyPress Try If Not ((e. "DVD Rental") End Try Klik ganda button Cancel dan ketikkan sintaks dibawah : Proses = Nothing Aktif_Inputan(False.KeyChar <= "9") Or e.Private Sub txtPrice_KeyPress(ByVal sender As Object.KeyCode = Keys. dimana menggunakan procedure “Aktif_Inputan”. "clear") Button cancel berfungsi untuk merefresh form dan mendisabled seluruh textbox pada form.Message) End Try End Sub Fungsi diatas di maksudkan agar karakter yang diketikkan hanya boleh/bisa dari 0-9.Enter Then btnSave.KeyPress.Escape Then btnCancel.KeyChar >= "0" And e. sedangkan jika Esc maka button cancel akan dijalankan.KeyCode = Keys.Information. yang akan kita buat proses nya dibawah. Klik ganda F_Group dan ketikkan sintak dibawah.Message.PerformClick() End If Sedangkan sintaks di atas berfungsi.KeyPress.Windows. selebihnya tidak bisa. Try Aktif_Inputan(False. "") Catch ex As Exception MsgBox(ex.Handled() = True End If Catch ex As Exception MsgBox(ex.PerformClick() ElseIf e. txtDays.

Group With {.Message.Fee = txtFee. vbYesNo. MsgBoxStyle.Group_ID = txtID. apakah “ADD” atau “EDIT”. form akan mengaktifkan seluruh textbox.Text.Message. Buka F_Main (Main Menu) pada menu strip Data > Group kemudian klik ganda ketikkan sintaks dibawah.Text} Dim mYes_No As String = MsgBox("Apakah kamu ingin menyimpan data ?".Try Proses = "add" Aktif_Inputan(True.Text.GroupInsert(Group) ElseIf UCase(Proses) = "EDIT" Then AccessGroup. Dengan cara menekan tombol Add terlebih dahulu setelah itu tekan tombol Save.GroupUpdate(Group) End If btnCancel. .ShowDialog() Catch ex As Exception MsgBox(ex.Focus() Catch ex As Exception MsgBox(ex. 115 . kemudian coba masukkan data pada form Group.Information.Days = txtDays.Text.Information.Message.PerformClick() End If Catch ex As Exception MsgBox(ex.Price = txtPrice. "DVD Rental") If mYes_No = vbYes Then If UCase(Proses) = "ADD" Then AccessGroup. klik ganda button Save lalu ketikkan sintaks berikut : Try Dim Group As New Entity. MsgBoxStyle. "DVD Rental") End Try Pada button save ini menyimpan 2 proses yaitu Save dan Update tergantung pada variable “Process” yang ada. Dan selanjutnya adalah membuat proses simpan. "DVD Rental") End Try Dan jalankan program dan buka form Group. MsgBoxStyle. .Group_Name = txtName. dan menampilkan GroupID secara otomatis dan kursor akan focus pada txtName. Proses) IDNo() txtName.Text. "DVD Rental") End Try Pada saat button ini di klik maka. . Try Dim frm_group As New F_Group frm_group. .Information.

Dan pengguna dapat memilih group mana yang mau di ubah/hapus dengan klik ganda pada cell datagridview. dengan menekan tombol Find.Gambar 4. Untuk lebih jelas nya ikuti langkah-langkah dibawah. dan akan tampil sebuah form (List dari data group).34 Lalu bagaimana cara nya untuk mengubah dan menghapus data? Pada form ini untuk mengubah/menghapus data terlebih dahulu pengguna harus mencari data terlebih dahulu. Tambahkan sebuah form pada project kita dan tambahkan DataGridView lalu ganti properties nya seperti dibawah . Name ShowInTaksbar Text StartPosition MaximizedBox MinimizedBox FormBorderStyle BackColor H_Group False Group List CenterScreen False False FixedSingle White DataGridView Name DgView 116 .

Ketik variable Class pada form seperti dibawah
Public ID As String Dim GroupList As New List(Of Entity.Group)

Selanjunya adalah membuat sebuah procedure untuk format DataGridView seperti dibawah :
Private Sub FormatGridWithBothTableAndColumnStyles() Me.DgView.DefaultCellStyle.ForeColor = Color.Navy Me.DgView.RowsDefaultCellStyle.BackColor = Color.AliceBlue Me.DgView.GridColor = Color.Blue Me.DgView.BorderStyle = BorderStyle.Fixed3D Me.DgView.RowHeadersBorderStyle = BorderStyle.Fixed3D

DgView.AutoGenerateColumns = False Dim IDColumn As New DataGridViewTextBoxColumn() IDColumn.DataPropertyName = "group_id" IDColumn.HeaderText = "Group ID" IDColumn.Width = 80 Dim NameColumn As New DataGridViewTextBoxColumn() NameColumn.DataPropertyName = "group_name" NameColumn.HeaderText = "Name" NameColumn.Width = 180 Dim DayColumn As New DataGridViewTextBoxColumn() DayColumn.DataPropertyName = "days" DayColumn.HeaderText = "Days" DayColumn.Width = 80 Dim PriceColumn As New DataGridViewTextBoxColumn() PriceColumn.DataPropertyName = "price" PriceColumn.HeaderText = "Price" PriceColumn.Width = 80

Dim FeeColumn As New DataGridViewTextBoxColumn() FeeColumn.DataPropertyName = "fee" FeeColumn.HeaderText = "Fee" FeeColumn.Width = 150

DgView.Columns.Add(IDColumn) DgView.Columns.Add(NameColumn) DgView.Columns.Add(DayColumn) DgView.Columns.Add(PriceColumn) DgView.Columns.Add(FeeColumn) End Sub

Lalu klik ganda form, dan ketikkan sintaks seperti dibawah.

117

Try Dim columns As String() = {"group_id", "group_name", "days", "price", "fee"} DVDModule.FillListWithoutParam(GroupList, columns, "usp_SelectGroup", _ GetType(Entity.Group)) FormatGridWithBothTableAndColumnStyles() DgView.DataSource = GroupList Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Information, "DVD Rental") End Try End Sub

Sintaks diatas befungsi untuk menampilkan data Group pada DgView dengan menggunakan Procedure yang kita buat pada module. Dan terakhir adalah dengan mengetikkan sintaks dibawah pada event handler DgView_CellDoubleClick dimana sintaks dibawah berfungsi untuk mengambil groupid pada DgView dan disimpan pada variable ID yang telah kita buat sebelumnya lalu menutup form ini.
Dim row As DataGridViewRow = DgView.Rows(e.RowIndex) ID = row.Cells(0).Value Me.Close()

Kembali pada form F_Group klik ganda pada button Find.
Try Proses = "find" Dim frm_HGroup As New H_Group frm_HGroup.ShowDialog() txtID.Text = frm_HGroup.ID If txtID.Text <> "" Then Dim GroupList As New List(Of Entity.Group) DVDModule.FillListWithoutParam(GroupList, columns, "usp_selectgroup", _ GetType(Entity.Group)) Dim group = (From grp In GroupList Where grp.Group_ID.Equals(txtID.Text) ).Single txtName.Text = group.Group_Name txtDays.Text = group.Days txtFee.Text = group.Fee txtPrice.Text = group.Price End If Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Information, "DVD Rental") End Try

118

Button ini berfungsi untuk menampilkan form H_Group yang kita buat sebelumnya, selanjutnya dengan menggunakan variable ID pada form H_Group, program akan menampilkan data group dengan menggunakan criteria group_id. Lalu klik ganda button Edit dan ketikkan sintaks dibawah.
If UCase(Proses) <> UCase("find") Then MsgBox("Cari data terlebih dahulu", MsgBoxStyle.Information, "DVD Rental") Exit Sub End If Proses = "edit" Aktif_Inputan(True, "")

Jika kita mengklik button edit sebelum mencari data terlebih dahulu maka akan ada pesan yang tampil, agar kita mencari data terlebih dahulu. Dan terakhir adalah dengan mengetik sintaks dibawah, pada event hander btnDelete_Click
If UCase(Proses) <> UCase("find") Then MsgBox("Cari data terlebih dahulu", MsgBoxStyle.Information, "DVD Rental") Exit Sub End If Dim Group As New Entity.Group With {.Group_ID = txtID.Text} Dim mYes_No As String = MsgBox("Apakah kamu ingin menghapus data ?", vbYesNo, "DVD Rental") If mYes_No = vbYes Then AccessGroup.GroupDelete(Group) btnCancel.PerformClick() End If

Setelah mencari data maka dengan menekan tombol Delete data pada table Group akan di hapus dengan kriteria Group_ID yang dipilih.

Gambar 4.35
119

Table ini digunakan sebagai jenis dari pada DVD yang disewakan. Drama. 6 button dan 1groupbox dan ubah properties seperti dibawah. 2 label. dan ubah properties nya seperti dibawah Name ShowInTaksbar Text StartPosition MaximizedBox MinimizedBox FormBorderStyle BackColor F_Genre False Add/Edit Genre CenterScreen False False FixedSingle White Selanjutnya tambahkan control 2 textbox. horror dan sebagainya. Untuk pertama kali adalah dengan membuat table Genre.4.4 Membuat Form Genre Selanjutnya adalah membuat form Genre. Textbox1 Name Enabled Textbox2 120 txtID False . Contoh film Action. Terlebih dahulu buatlah table Genre dengan nama T_Genre dan strukturnya sebagai berikut Field Name ids genre_id Genre_name Data Type AutoNumber Text Text 4 25 PK (*) Field size Primary Key Tambahkan sebuah form ubah.

Name GroupBox1 Name Text Button1 Name Text Button2 Name Text Button3 Name Text Button4 Name Text Button5 Name Text Button6 Name Text Dan atur posisi nya seperti gambar dibawah.36 121 . txtName GbDetail Item Detail btnSave &Save btnCancel &Cancel btnAdd &Add btnEdit &Edit btnDelete &Delete btnFind &Find Gambar 4.

Namespace Entity Public Class Genre Private m_genreid As String Public Property Genre_ID() As String Get Return m_genreid End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan Genre ID") End If m_genreid = value End Set End Property Public Property Genre_Name() As String End Class End Namespace Lalu buka DVDModule dan ketikkan sintaks dibawah pada Region Extension Method yang kita buat sebelumnya. lalu ketikkan sintaks berikut pada Class Genre.genre_id.Genre).Genre_ID = genreid. 122 .Genre With {. usp_UpdateGenre. SELECT TOP 1 t_genre. usp_InsertGenre. usp_selectgenre.Genre_Name = genrename}) End Sub Lalu buatlah 5 buah query pada database dengan nama masing sebagai berikut : usp_SelectGenreTop1. t_genre. .Add(New Entity. usp_DeleteGenre Dengan masing-masing sintaks SQL seperti dibawah. <Extension()> Sub Add(ByVal GenreList As List(Of Entity. ByVal genrename As String) GenreList.genre_name FROM t_genre ORDER BY t_genre. ByVal genreid As String.Tambahkan Class pada folder entity dan ubah namanya menjadi Genre.ids DESC.

genre_id)=[@genre_id])). [@genre_name]). INSERT INTO T_Genre ( genre_id. lalu import terlebih dahulu Name Space OleDB (Imports System.ids. Serta tambahkan class pada folder AccessData dan ubah namanya menjadi AccessGenre.SELECT t_genre.Data.OleDb).genre_name FROM t_genre ORDER BY t_genre.genre_name = [@genre_name] WHERE (((t_genre. DELETE * FROM t_genre WHERE (((t_genre. genre_name ) VALUES ([@genre_id]. UPDATE t_genre SET t_genre. t_genre.genre_id. selanjutnya buat NameSpace AccessData.genre_id)=[@GenreID])).genre_id. dan ketikkan sintaks dibawah didalam NameSpace AccessData 123 . t_genre.

connect) mycommand.ToString()) End Try End Function Fungsi diatas digunakan untuk menambah data genre.Value = Genre.Genre) As OleDbDataReader Try Using connect As New OleDbConnection(My.Value = Genre.Settings.ExecuteReader(CommandBehavior.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_InsertGenre". dengan menggunakan query usp_Insertgenre.Parameters . OleDbType.Genre_ID Dim parameterGenreName As OleDbParameter = New OleDbParameter("@group_name".VarChar.Open() Using result As OleDbDataReader = mycommand. 25) parameterGenreName.Message.Public Function GenreInsert(ByVal Genre As Entity.VarChar.StoredProcedure Dim parameterGenreID As OleDbParameter = New OleDbParameter("@group_id". Selanjutnya ketikkan sintaks untuk mengubah data genre seperti dibawah.Genre_Name With mycommand. OleDbType.Add(parameterGenreName) End With connect.CommandType = CommandType.Add(parameterGenreID) .CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx. 124 . 4) parameterGenreID.

OleDbType.Genre_Name Dim parameterGenreID As OleDbParameter = New OleDbParameter("@group_id".CommandType = CommandType.Settings. connect) mycommand.Genre_ID With mycommand. OleDbType. 4) parameterGenreID.VarChar.VarChar.Add(parameterGenreID) End With connect.Value = Genre.StoredProcedure Dim parameterGenreName As OleDbParameter = New OleDbParameter("@group_name".Public Function GenreUpdate(ByVal Genre As Entity.ExecuteReader(CommandBehavior. 25) parameterGenreName.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateGenre".Open() Using result As OleDbDataReader = mycommand.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Parameters .Value = Genre.ToString()) End Try End Function 125 .Genre) As OleDbDataReader Try Using connect As New OleDbConnection(My.Add(parameterGenreName) .Message.

Public Function GenreDelete(ByVal Genre As Entity. penulis berharap para pembaca dapat melanjutkan untuk menyelesaikan form ini.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.37 126 . connect) mycommand. Dikarenakan sintaks yang digunakan form ini dan form group hampir sama. 4) parameterGenreID. OleDbType.CommandType = CommandType.Parameters . Gambar 4.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_DeleteGenre". Jika mengalami kesulitan dapat melihat contoh project yang disertakan pada buku ini.Value = Genre.StoredProcedure Dim parameterGenreID As OleDbParameter = New OleDbParameter("@group_id". Untuk form ini penulis tidak akan menjelaskan secara detail sampai habis.Genre_ID With mycommand.VarChar.ExecuteReader(CommandBehavior.Message.Settings.Genre) As OleDbDataReader Try Using connect As New OleDbConnection(My.ToString()) End Try End Function Dan terakhir tambah kan sintaks untuk menghapus data genre pada table.Add(parameterGenreID) End With connect.Open() Using result As OleDbDataReader = mycommand.

dimana digunakan untuk menyimpan data customer. Untuk bisa merental DVD kita harus meregistrasi peminjam/customer terlebih dahulu.Gambar 4.38 4.5 Membuat Form Customer Form customer ini berfungsi untuk memanipulasi data customer. Sebelumnya adalah dengan membuat table customer dengan nama T_Cust seperti dibawah. Field Name Id_cust refer_cust first_name last_name telp email join_date address picture notes status Data Type AutoNumber Text Text Text Text Text Date/Time Text Text Text Yes/No 127 Field size Primary Key 8 50 50 15 50 PK (*) 255 50 255 .

Tambahkan sebuah form lalu ganti properties seperti dibawah : Name ShowInTaksbar Text StartPosition MaximizedBox MinimizedBox FormBorderStyle BackColor F_Customer False Add/Edit Customer CenterScreen False False FixedSingle White

Selanjutnya tambahkan 8 label, 8 textbox, 1 datetimepicker, 1 checkbox, 1 picturebox, 1 groupbox 1 buah panel, 1 OpenFileDialog dan 4 buah button. Lalu gantilah properties controlcontrol diatas seperti berikut : Textbox1 Name Enabled Textbox2 Name TextBox3 Name TextBox4 Name TextBox5 Name Textbox6 Name MultiLine TextBox7 Name MultiLine txtNotes True txtAddress True txtEmail txtPhone txtLast txtFirst txtReferCust False

128

TextBox8 Name ReadOnly GroupBox1 Name Text Button1 Name Text Size Button2 Name Text Size Button3 Name Text Button4 Name Text DateTimePicker1 Name Custom Format CheckBox1 Name Text PictureBox1 Name OpenFileDialog1 PbImage cbStatus Status DtDate MM/dd/yyyy Custom btnCancelPic Cancel btnEdit Edit Picture btnCancel &Cancel 84, 38 btnSave &Save 84, 38 GbDetail Item Detail txtPath True

129

Name Dan atur posisi nya seperti gambar dibawah.

OFD

Gambar 4.39 Tambahkan Class pada folder entity dan ubah namanya menjadi Customer, lalu ketikkan sintaks berikut pada Class Customer.
Namespace Entity Public Class Customer Private m_refercust As String Public Property Refer_Cust() As String Get Return m_refercust End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan reference Customer") End If m_refercust = value End Set End Property Private m_firstname As String Public Property First_Name() As String Get Return m_firstname End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan First Name") End If m_firstname = value End Set End Property

130

usp_SelectCustList. ByVal firstname As String.Notes = notes.Customer With {. 131 .Email = email.Address = address. ByVal address As String.Customer). usp_selectCustbyRefer. <Extension()> Sub Add(ByVal CustList As List(Of Entity.First_Name = firstname. ByVal joindate As Date.Public Property Last_Name() As String Public Property Telp() As String Public Property Email() As String Public Property Join_Date() As Date Public Property Address() As String Public Property Picture() As String Public Property Notes() As String Public Property Status() As Boolean End Class End Namespace Lalu buka DVDModule dan ketikkan sintaks dibawah pada Region Extension Method yang kita buat sebelumnya. ByVal lastname As String. .Add(New Entity. usp_UpdateCustomer SELECT TOP 1 t_cust.ID_Cus DESC. .Last_Name = lastname. ByVal notes As String.Refer_Cust = refer_cust. . ByVal picture As String.* FROM t_cust ORDER BY t_cust.Status = status}) End Sub Lalu buatlah 5 buah query pada database dengan nama masing sebagai berikut : usp_SelectCustTop1. ByVal telp As String. . ByVal status As String) CustList. . . .Picture = picture.Telp = telp. .Join_Date = joindate. ByVal refer_cust As String. . usp_InsertCustomer. ByVal email As String.

picture = [@picture].VarChar. connect) mycommand. [@first_name]. OleDbType.last_name = [@last_name].ID_Cus. OleDbType. 50. email. [@telp].join_date = [@join_date]. t_cust.telp = [@telp].Refer_Cust.email. dan ketikkan sintaks dibawah didalam NameSpace AccessData Public Function CustomerInsert(ByVal Customer As Entity.address = [@address].last_name FROM t_cust ORDER BY t_cust. [@picture].OleDb). [@join_date].Settings.ORDER BY t_cust.ORDER BY t_cust. OleDbType.* FROM t_cust WHERE (((t_cust.address. [@address].first_name. first_name. telp.telp. mycommand) DVDModule. t_cust.status.ID_Cus. [@notes]. 50.AddParameter("@email".notes = [@notes]. last_name. UPDATE t_cust SET t_cust. address.status = [@status] WHERE (((t_cust.ID_Cus. t_cust.Data.AddParameter("@last_name".VarChar. t_cust. t_cust. t_cust. OleDbType. INSERT INTO t_cust ( refer_cust. mycommand) DVDModule. [@status]).AddParameter("@telp".Customer) As OleDbDataReader Try Using connect As New OleDbConnection(My. Customer.Telp. lalu import terlebih dahulu Name Space OleDB (Imports System. t_cust.email = [@email].refer_cust.VarChar. notes. join_date. mycommand) 132 .VarChar. mycommand) DVDModule.CommandType = CommandType. Serta tambahkan class pada folder AccessData dan ubah namanya menjadi AccessCustomer.First_Name. t_cust. Customer.ID_Cus. Customer. OleDbType.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_InsertCustomer". 15. [@last_name].StoredProcedure DVDModule.AddParameter("@refer_cust". status ) VALUES ([@refer_cust].AddParameter("@first_name". 8. selanjutnya buat NameSpace AccessData.refer_cust)=[@refer_cust])).ORDER BY t_cust.Email. mycommand) DVDModule. t_cust.SELECT t_cust. t_cust. [@email]. Customer. picture. t_cust.refer_cust)=[@refer_cust])) SELECT t_cust.Last_Name. t_cust. Customer. t_cust.first_name = [@first_name]. t_cust.VarChar. 50.

mycommand) connect. mycommand) DVDModule. 0. ByVal myCommand As OleDbCommand) Try myCommand. Untuk fungsi ini penulis menggunakan procedure AddParameter yang telah kita buat diawal pada module. mycommand) DVDModule. 255.ToString()) End Try End Function Jika pembaca jeli pasti merasa ada perbedaan sintaks fungsi Insert ini dengan insert-inset sebelumnya.InnerException) End Try End Sub Selanjutnya kita akan membuat fungsi untuk mengubah data customer seperti dibawah. 50. Customer.Parameters. ByVal Value As Object.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.AddParameter("@join_date".Notes.AddParameter("@status". Size).VarChar.Value = Value Catch OleDbExceptionErr As OleDbException Throw New System.VarChar. _ OleDbExceptionErr. 0.AddParameter("@notes". OleDbType.Message. ByVal Type As OleDbType. Customer. 255.Picture. OleDbType. Customer.Add(Name.Status.Join_Date.Message.ExecuteReader(CommandBehavior. Public Sub AddParameter(ByVal Name As String.VarChar. Type. mycommand) DVDModule. _ ByVal Size As Integer.AddParameter("@picture". OleDbType.DVDModule.Boolean.AddParameter("@address". seperti dibawah. Customer. OleDbType.Date.Exception(OleDbExceptionErr. OleDbType. mycommand) DVDModule. 133 .Open() Using result As OleDbDataReader = mycommand.Address. Customer.

50. OleDbType. 255.VarChar. OleDbType.VarChar. mycommand) DVDModule.Email.StoredProcedure DVDModule.AddParameter("@telp". Customer.AddParameter("@email".Settings.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateCustomer". OleDbType.Boolean.AddParameter("@last_name". Customer. 50. mycommand) connect.AddParameter("@status".First_Name. mycommand) DVDModule.Refer_Cust.CommandType = CommandType.Last_Name.Address.AddParameter("@first_name".Status. Customer. 0.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx. OleDbType.Message. Customer.Join_Date.AddParameter("@join_date". OleDbType. dan buat deklarasi variable class seperti dibawah #Region "Deklarasi" Protected AccessCustomer As New AccessData. OleDbType. Customer. mycommand) DVDModule.Customer) As OleDbDataReader Try Using connect As New OleDbConnection(My.AddParameter("@picture". mycommand) DVDModule.Notes.VarChar. mycommand) DVDModule. mycommand) DVDModule.VarChar. 255. 50. connect) mycommand.ExecuteReader(CommandBehavior. mycommand) DVDModule.AddParameter("@refer_cust". OleDbType. Customer. mycommand) DVDModule.VarChar. Customer. mycommand) DVDModule.Public Function CustomerUpdate(ByVal Customer As Entity.VarChar.VarChar.Telp.AddParameter("@address". 15.ToString()) End Try End Function Selanjutnya kembali pada form Customer.AccessCustomer Dim filenaming As String Dim columns As String() = {} #End Region 134 . Customer. OleDbType.AddParameter("@notes".Open() Using result As OleDbDataReader = mycommand. Customer. 8.Date.Picture. 50. 0.VarChar. OleDbType. Customer. OleDbType.

Text = "" End If End If Next txtPath.FillListWithoutParam(CustList.StartupPath & "\" & filenaming.CopyTo(Application.Length .Text = "C" & Format(Val(CInt(Microsoft.Refer_Cust. "0000000") End If Return txtReferCust.GbDetail.Name) <> UCase("txtReferCust") Then T. yang berfungsi untuk meng-copy gambar customer kedalam folder aplikasi seperti dibawah : Private Sub CopyImage() If Trim(txtPath. TextBox) If UCase(T.Text = Now PbImage.Controls If TypeOf C Is TextBox Then T = CType(C.Image = Nothing End Sub Untuk field Refer Customer pada aplikasi ini otomatis mengenerate nilai nya begitu kita membuka Form (Add). "usp_SelectCustTop1".Customer)) If CustList. columns.StartupPath & "\" & filenaming Then Dim fFile As New IO.Text = "C0000001" Else txtReferCust.Lalu kita akan membuat procedure CopyImage.First. _ GetType(Entity.Refer_Cust.1)) + 1).Text End Function 135 .Customer) DVDModule.FileInfo(Trim(txtPath.Count = 0 Then txtReferCust.Text = "" DtDate. True) End If End Sub Dan ketikkan sintaks dibawah (procedure clear form) Private Sub Clear() Dim C As Control Dim T As TextBox For Each C In Me. untuk membuat nomor otomatis ketikkan sintaks seperti dibawah : Private Function ReferNo() As String Dim CustList As New List(Of Entity.Right(CustList.Text) <> Application. _ CustList.Text)) fFile.First.VisualBasic.

Ketikkan sintaks dibawah txtPath.First.Text = CustList.StartupPath & "\" & CustList.Join_Date txtPhone. False) End Sub Klik ganda button Cancel dan ketikkan sintaks dibawah.Telp txtEmail.OleDbType() = {System.Address txtNotes.VarChar} Dim FieldName As String() = {"@refer_Cust"} Dim Size As Integer() = {8} Dim Value As String() = {txtReferCust.Text = CustList.First.FromStream(fsImage) PbImage. Size. IO.Text = CustList.Image = Nothing 136 .First.Checked = If(CustList.Text = CustList.Data.OleDb. FieldName. If Operate = "Add" Then Clear() Else Operate = Nothing Me. columns.Text = Application.Text} DVDModule.OleDb. dimana berfungsi untuk menghapus gambar dari picture box.FillListWithParam(CustList.First_Name txtLast.Data. Value) txtReferCust.FileStream(txtPath.First.Picture <> "" Then txtPath.First.Customer).Text.Open.Notes If CustList. "usp_selectCustbyRefer". _ GetType(Entity.Text = CustList.First.Dispose() End If CbStatus.Last_Name DtDate.Close() End If Selanjutnya klik ganda button CancelPicture.Dan selanjutnya adalah membuat procedure View Data Customer seperti dibawah Private Sub ViewCustomer() Dim CustList As New List(Of Entity. True.FileAccess.FileMode.Customer) Dim Coltype As System.First.IO.Email txtAddress.Text = "" PbImage.Status = "True".Text = CustList. IO.First.First.Read) Dim MyImage As Image = Image.First.Close() fsImage.OleDbType.Refer_Cust txtFirst.Text = CustList.Image = MyImage fsImage. _ Coltype.Picture Dim fsImage As New System.Text = CustList.First.

Text.Forms.Read) Dim MyImage As Image = Image.FileAccess.Text.bmp. . .Text))) Dim Customer As New Entity. maka secara otomatis aplikasi menggenerate field refer customer no.Text. "DVD Rental") End Try Sintaks diatas digunakan untuk menampilkan gambar pada Picture Box.First_Name = txtFirst.Text.FileStream(txtPath.Image = MyImage fsImage. Selanjutnya pada event handler F_Customer_Closing ketikkan sintaks berikut Nothing Operate = Dan terakhir klik ganda button Save lalu ketikkan sintaks dibawah ini : Try filenaming = "" If txtPath. *. MsgBoxStyle.Exclamation. *.SizeMode = PictureBoxSizeMode. *.png)|*.Text & (Mid(txtPath.Customer With {.IO.StretchImage If Operate = "Add" Then ReferNo() CbStatus. *. False)} 137 . "DVD Rental") End Try Jika Operate = Add.Email = txtEmail. *. MsgBoxStyle.Telp = txtPhone.JPEG. .Checked = True CbStatus.Refer_Cust = txtReferCust. InStrRev(txtPath.Text.Checked = True. *.Close() fsImage.Text.ShowDialog = Windows.jpg.DialogResult.FileName Dim fsImage As New System. .Notes = txtNotes.JPEG.FromStream(fsImage) PbImage.Status = If(CbStatus.FileMode.Lalu klik ganda button Edit.Text.Text.Join_Date = DtDate. *.Last_Name = txtLast. ". . Selanjutnya pada F_Customer_Load event handler ketikkan sintaks berikut : Try PbImage.Text.Text.gif.Message. IO. dan ketikkan sintaks berikut : Try 'Filter file extension OFD.OK Then txtPath. .Address = txtAddress.Open. .Dispose() End If Catch ex As Exception MsgBox(ex. .jpg.gif.Visible = True ViewCustomer() End If Catch ex As Exception MsgBox(ex.Exclamation.Visible = False Else CbStatus.bmp. Len(txtPath.png" If OFD.Message.Text. IO.").Picture = filenaming. *.Text <> "" Then filenaming = txtReferCust. .Filter = "Image Files (*. True.Text = OFD.

Exclamation. "DVD Rental") If mYes_No = vbYes Then If Operate = "Add" Then AccessCustomer. MsgBoxStyle. buka form customer dan masukkan data seperti pada gambar dibawah. "DVD Rental") End If End If Catch ex As Exception MsgBox(ex.ShowDialog() Operate = Nothing Dan jalankan program. menu strip Data >Customer > Add.Information. ketikkan sintaks dibawah.Dim mYes_No As String = MsgBox("Apakah kamu ingin menyimpan data ?".Text <> "" Then CopyImage() MsgBox("Update Selesai".40 138 . "DVD Rental") End Try Selanjutnya buka F_Main (Main Menu). Gambar 4. MsgBoxStyle. vbYesNo. Operate = "Add" Dim frm_cust As New F_Customer frm_cust.CustomerInsert(Customer) If txtPath.Text <> "" Then CopyImage() Clear() ReferNo() Else AccessCustomer.CustomerUpdate(Customer) If txtPath.Message.

para pembaca bisa melihat dari Form User.42 139 . bagaimana logic untuk mengubah data.Untuk mengubah data customer. Untuk lebih jelasnya bisa melihat project yang disertakan pada buku ini. Gambar 4. penulis tidak akan menjelaskan nya lagi.41 Gambar 4. Yaitu dengan membuat form Customer Box dan Customer List.

Oleh karena itu setelah membuat table DVD (T_DVD). T_Genre dan T_Group. banyak table yang berelasi dengan table DVD. Lakukan hal yang sama pada field group_id pada table T_DVD dengan table T_Group (group_id). maka akan muncul tampilan Edit Relationships. Field Name id_cust refer_no title genre_id director release_date language runtime group_id synopsis actors Picture status Data Type AutoNumber Text Text Text Text Date/Time Text Number Text Memo Text Text Yes/No 255 50 15 Integer 4 FK 7 25 4 50 FK PK (*) Field size Primary Key Masih pada jendela MS Access. dan klik OK.4. Pertama-tama yang kita lakukan adalah dengan membuat table T_DVD.6 Membuat Form DVD Form ini digunakan untuk memanipulasi data DVD yang ada pada rental. seperti table T_Group dan T_Genre. 140 . Selanjutnya Drag field genre_id (t_DVD) pada table t_genre (field genre_id). Maka kita akan memilki diagram relationships seperti dibawah. buka jendela Relationships (Database Tools > Relationships) lalu tambahkan table T_DVD.

1 picturebox.43 Tambahkan sebuah form lalu ganti properties seperti dibawah : Name ShowInTaksbar Text StartPosition MaximizedBox MinimizedBox FormBorderStyle BackColor F_DVD False Add/Edit DVD CenterScreen False False FixedSingle White Selanjutnya tambahkan 15 label. 1 datetimepicker. 1 groupbox 1 buah panel.Gambar 4. 11 textbox. 2 ComboBox. Lalu gantilah properties controlcontrol diatas seperti berikut : Textbox1 Name Enabled Textbox2 Name TextBox3 141 txtReferNo False txtTitle . 1 OpenFileDialog dan 4 buah button.

38 btnCancel 142 .Name TextBox4 Name TextBox5 Name Textbox6 Name TextBox7 Name TextBox8 Name TextBox9 Name TextBox10 Name Multiline TextBox10 Name TextBox11 Name ReadOnly GroupBox1 Name Text Button1 Name Text Size Button2 Name txtDirector txtActor txtLanguage txtRun txtRental txtPrice txtFee txtSinopsis True txtRental txtPath True GbDetail Item Detail btnSave &Save 84.

Text Size Button3 Name Text Button4 Name Text DateTimePicker1 Name Custom Format ComboBox1 Name DropDownStyle ComboBox2 Name DropDownStyle PictureBox1 Name OpenFileDialog1 Name &Cancel 84. 38 btnEdit Edit Picture btnCancelPic Cancel DtDate MM/dd/yyyy Custom CbGroup DropDownList CbGenre DropDownList PbImage OFD Dan atur posisi nya seperti gambar dibawah. 143 .

44 Tambahkan Class pada folder entity dan ubah namanya menjadi Customer. lalu ketikkan sintaks berikut pada Class Customer. Namespace Entity Public Class DVD Private m_referno As String Public Property Refer_No() As String Get Return m_referno End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan reference no") End If m_referno = value End Set End Property 144 .Gambar 4.

Group Public Property Synopsis() As String Public Property Actors() As String Public Property Picture() As String Public Property Status() As Boolean End Class End Namespace Lalu buka DVDModule dan ketikkan sintaks dibawah pada Region Extension Method yang kita buat sebelumnya. 145 .Group Public Property Group() As New Entity.Genre Public Property Director() As String Public Property Release_Date() As Date Public Property Language() As String Private m_runtime As Int16 Public Property RunTime() As Int16 Get Return m_runtime End Get Set(ByVal value As Int16) If value.Private m_title As String Public Property Title() As String Get Return m_title End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan Title DVD") End If m_title = value End Set End Property Public Property Genre As New Entity.ToString = "" Then Throw New Exception("Masukkan Nilai Run Time DVD") End If m_runtime = value End Set End Property Private m_group As New Entity.

Picture = Picture. [@genre_id]. t_dvd.Price = Price. [@status]).Genre_Name = Genre_Name}.Group With {.DVD With {. ByVal Synopsis As String. .genre_id = [@genre_id].Genre_ID = Genre_ID.picture = [@picture] WHERE (((t_dvd. actors.Director = Director.Actors = Actors. [@title]. title. ByVal Group_ID As String.Genre = New Entity.Refer_No = Refer_No. .Language = Language. ByVal Status As Boolean) LstDVD. t_dvd. [@actors]. INSERT INTO t_dvd ( refer_no. ByVal Genre_Name As String. .director = [@direcor].Add(New Entity. group_id.Title = Title.id DESC. UPDATE t_dvd SET t_dvd.group_id = [@group_id]. . . t_dvd. usp_selectDVDbyRefer. . picture. runtime. [@language]. ByVal Actors As String. t_dvd. [@synopsis]. ByVal Picture As String. synopsis.Group = New Entity.Genre With {.<Extension()> _ Sub Add(ByVal LstDVD As List(Of Entity. .Group_ID = Group_ID. usp_InsertDVD. usp_UpdateDVDStatus. [language]. ByVal Price As Decimal. ByVal Refer_No As String. . ByVal Language As String.Group_Name = Group_Name.Release_Date = Release_Date.Status = Status}) End Sub Lalu buatlah 5 buah query pada database dengan nama masing sebagai berikut : usp_selectDVDtop1. .Days = Days. ByVal Director As String.synopsis = [@synopsis]. ByVal RunTime As Int16.refer_no)=[@refer_no])).Fee = Fee}. . [@picture]. [@runtime]. t_dvd. ByVal Genre_ID As String.runtime = [@runtime]. .RunTime = RunTime.Synopsis = Synopsis.title = [@title]. .[language] = [@language]. director. [@group_id]. ByVal Title As String.actors = [@actors]. [@director]. 146 . [@release_date]. ByVal Fee As Decimal. t_dvd. .DVD). t_dvd. usp_SelectDVDList SELECT TOP 1 t_dvd. genre_id. t_dvd. release_date. status ) VALUES ([@refer_no]. t_dvd. . usp_UpdateDVD.release_date = [@release_date]. . . ByVal Release_Date As Date. ByVal Days As Int16. ByVal Group_Name As String.* FROM t_dvd ORDER BY t_dvd.

OleDbType. OleDbType.Settings. 4. DVD.Data. 50.RunTime.Refer_No.genre_id WHERE (((t_dvd. DVD.refer_no)=[@refer_no])). t_group. mycommand) DVDModule. DVD. connect) mycommand. t_genre. 15. mycommand) DVDModule. OleDbType. t_dvd. mycommand) DVDModule.language.fee.status = [@status] WHERE (((t_dvd. DVD.actors.Genre. 0. t_dvd. 25.days. t_dvd. mycommand) DVDModule.refer_no)=[@refer_no])). mycommand) DVDModule.status.*.OleDb).Genre_ID.genre_id = t_dvd.Title. mycommand) DVDModule. t_dvd. DVD.VarChar.Language.AddParameter("@synopsis".Date.AddParameter("@release_date".group_id = t_dvd.VarChar.group_id) ON t_genre.VarChar. DVD.Group_ID. OleDbType.Release_Date.Director.VarChar.director.refer_no. DVD. mycommand) DVDModule. dan ketikkan sintaks dibawah didalam NameSpace AccessData Public Function DVDInsert(ByVal DVD As Entity. t_group. DVD.AddParameter("@runtime".AddParameter("@language".AddParameter("@director". DVD. 7. t_group. 0.Group. Serta tambahkan class pada folder AccessData dan ubah namanya menjadi AccessCDVD.UPDATE t_dvd SET t_dvd.price. OleDbType.Synopsis.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_InsertDVD". 1000. t_dvd. SELECT t_dvd.genre_name FROM t_genre INNER JOIN (t_group INNER JOIN t_dvd ON t_group. mycommand) DVDModule.CommandType = CommandType. t_group. OleDbType.refer_no.VarChar.AddParameter("@refer_no". lalu import terlebih dahulu Name Space OleDB (Imports System. mycommand) 147 .title. SELECT t_dvd.AddParameter("@group_id". OleDbType.status FROM t_dvd ORDER BY t_dvd.StoredProcedure DVDModule. selanjutnya buat NameSpace AccessData. OleDbType.AddParameter("@genre_id". OleDbType. 4.AddParameter("@Title".VarChar. t_dvd.group_name.Integer.VarChar.DVD) As OleDbDataReader Try Using connect As New OleDbConnection(My.

VarChar. connect) mycommand. DVD. 4.Title. DVD. 255. OleDbType.Boolean.Status.VarChar. DVD.Genre_ID.Date.AddParameter("@picture". OleDbType.Genre.Message.Settings. mycommand) DVDModule. 1000. OleDbType.AddParameter("@status".VarChar.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateDVD". OleDbType. mycommand) DVDModule.VarChar. 25. 50. DVD. mycommand) DVDModule.Release_Date. 50.AddParameter("@director".AddParameter("@genre_id". OleDbType.Refer_No. 0. OleDbType.VarChar. OleDbType.VarChar.VarChar.Picture.AddParameter("@group_id". mycommand) DVDModule.AddParameter("@synopsis". DVD.Group_ID. OleDbType. DVD.AddParameter("@release_date". DVD. mycommand) DVDModule.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx. 255.Open() Using result As OleDbDataReader = mycommand.Director. DVD.Synopsis.AddParameter("@actors". DVD.Actors. 15. 7.ExecuteReader(CommandBehavior. mycommand) 148 .AddParameter("@language". DVD.Actors. OleDbType. OleDbType.AddParameter("@Title". mycommand) DVDModule. mycommand) DVDModule.Group. OleDbType.AddParameter("@picture". 50. mycommand) DVDModule.RunTime.CommandType = CommandType. DVD. mycommand) DVDModule. OleDbType. mycommand) connect.DVDModule. OleDbType. DVD.VarChar.VarChar.AddParameter("@runtime". 0. mycommand) DVDModule.ToString()) End Try End Function Public Function DVDUpdate(ByVal DVD As Entity.VarChar.DVD) As OleDbDataReader Try Using connect As New OleDbConnection(My.AddParameter("@refer_no". 0. DVD.Integer.VarChar. DVD. OleDbType.Language.Picture. mycommand) DVDModule. mycommand) DVDModule. 4.AddParameter("@actors".StoredProcedure DVDModule.

StoredProcedure DVDModule.Open() Using result As OleDbDataReader = mycommand.ExecuteReader(CommandBehavior. OleDbType.Parameters.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_selectDVDbyRefer".connect.ExecuteReader(CommandBehavior.Settings.DVD) Dim DVD As New List(Of Entity.AddParameter("@status". 0.VarChar.Open() 149 . mycommand) connect.Open() Using result As OleDbDataReader = mycommand.Add("@refer_No".CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx. OleDbType.StoredProcedure mycommand.VarChar).DVD) As OleDbDataReader Try Using connect As New OleDbConnection(My.ToString()) End Try End Function Public Function DVDStatusUpdate(ByVal DVD As Entity.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateDVDStatus".AddParameter("@refer_no".Status. DVD.CommandType = CommandType.Message. connect) mycommand.CommandType = CommandType.ToString()) End Try End Function Public Function FindDVDByRefer(ByVal ReferNo As String) As IEnumerable(Of Entity.Settings.DVD)() Try Using connect As New OleDbConnection(My.Value = ReferNo connect.Message. OleDbType.Refer_No.Boolean. 7. mycommand) DVDModule. DVD.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx. connect) mycommand.

_ rdr("genre_id"). _ rdr("days").ToString().DisplayMember = "Genre_Name" CbGenre.ToString().ToString().ValueMember = "Genre_ID" End Sub 150 . rdr("fee").ToString(). pertama-tama adalah buat variable class seperti dibawah. rdr("actors"). columns.Using rdr As OleDbDataReader = mycommand. _ GetType(Entity.ToString().ToString()) End Try Return DVD End Function Dengan mengetikkan sintaks diatas kita telah membuat beberapa fungsi.ToString(). _ rdr("genre_name").ToString().Choice -"}} DVDModule. Private Sub SortCbGenre() Dim GenreList As New List(Of Entity.Read DVD.AccessDVD Dim columns As String() = {} Dim filenaming As String #End Region Selanjutnya buat procedure untuk menampilkan data Group dan Genre pada masing-masing ComboBox.DataSource = GenreList CbGenre.ExecuteReader While rdr. _ rdr("language"). update dvd status maupun view data DVD. ". rdr("runtime"). update. _ rdr("group_id").ToString(). _ rdr("synopsis"). Sekarang kembali pada form DVD. rdr("release_date"). #Region "Deklarasi" Protected AccessDVD As New AccessData.ToString(). _ rdr("picture"). seperti insert. seperti dibawah. rdr("status").ToString(). _ rdr("title").Genre)) CbGenre.Add(rdr("refer_no").FillListWithoutParam(GenreList. rdr("price").ToString().ToString().Message.Genre) From {{"G00".ToString()) End While End Using End Using End Using Catch sqlex As OleDbException Throw New Exception(sqlex. _ rdr("group_name").ToString(). "usp_SelectGenre".ToString().ToString().ToString(). _ rdr("director").

TextBox) If UCase(T.First. "usp_SelectGroup".Refer_No) + 1).Text = "" txtRun. 0. _ GetType(Entity. sintaks nya seperti dibawah Private Function ReferNo() As String Dim DVDList As New List(Of Entity. 0.Private Sub SortCbGroup() Dim GroupList As New List(Of Entity.DVD) DVDModule.Group) From {{"GR00".ValueMember = "Group_ID" End Sub Lalu ketik sintaks untuk meng-copy gambar seperti dibawah Private Sub CopyImage() If Trim(txtPath.SelectedIndex = 0 PbImage.SelectedIndex = 0 CbGroup.FillListWithoutParam(DVDList.Text End Function Private Sub Dim Dim For Clear() C As Control T As TextBox Each C In Me. columns.Controls If TypeOf C Is TextBox Then T = CType(C.StartupPath & "\" & filenaming.DVD)) If DVDList.DataSource = GroupList CbGroup.GbDetail.Name) <> UCase("txtReferNo") Then T. "0000000") End If Return txtReferNo. columns.Text = "" txtPath. "usp_selectDVDtop1".Text = "0000001" Else txtReferNo. ".DisplayMember = "Group_Name" CbGroup. 0}} DVDModule. True) End If End Sub Seperti pada form customer untuk form ini juga kita membuat auto number untuk field Refer No.Text)) fFile.FillListWithoutParam(GroupList.FileInfo(Trim(txtPath.Text) <> Application.StartupPath & "\" & filenaming Then Dim fFile As New IO.Image = Nothing End Sub 151 .CopyTo(Application.Group)) CbGroup.Text = Format(Val(CInt(DVDList.Choice -".Text = Now CbGenre.Text = "" End If End If Next lblStatus.Text = "0" DtDate.Count = 0 Then txtReferNo. _ GetType(Entity.

Genre_Name) CbGenre.Picture <> "" Then txtPath.First.FromStream(fsImage) PbImage.FindStringExact(DVDlist.Group.First.First.SizeMode = PictureBoxSizeMode.Text = If(DVDlist.Text = Application.Title txtDirector. IO.FileStream(txtPath.Open.Text = DVDlist.Actors txtLanguage.Group.DVD) = AccessDVD.FileMode.Picture Dim fsImage As New System.RunTime txtSinopsis.Close() fsImage.First.FindStringExact(DVDlist.First.Text = DVDlist.SelectedIndex = i If DVDlist.Message.Text.First.Dispose() End If lblStatus.Price txtfee.Text = DVDlist.Director DtDate.First.Dan terakhir adalah dengan membuat procedure untuk menampilkan data DVD pada form.StartupPath & "\" & DVDlist.Days txtPrice.Release_Date txtActor.First. IO. MsgBoxStyle. "DVD Rental") End Try 152 .Text = DVDlist.Group_Name) CbGroup.First.Text = DVDlist.Text = DVDlist.SelectedIndex = i i = CbGenre.First.Genre.Text = DVDlist.Group.FindDVDByRefer(txtReferNo.Language txtRun.First. "Not Available") End Sub Klik ganda pada form.First. Private Sub ViewDVD() Dim i As Integer Dim DVDlist As List(Of Entity.StretchImage SortCbGroup() SortCbGenre() If Operate = "Add" Then ReferNo() Else ViewDVD() End If Catch ex As Exception MsgBox(ex. dan ketikkan sintaks dibawah Try PbImage.Synopsis txtRental.Text = DVDlist.Text = DVDlist. "Available".First.First.First.FileAccess.Text) txtReferNo. dengan sintaks seperti dibawah.Group.Refer_No txtTitle.Text = DVDlist.IO.Exclamation.Fee i = CbGroup.Text = DVDlist.Image = MyImage fsImage.Read) Dim MyImage As Image = Image.Status = "True".First.

_ GetType(Entity.Forms.jpg.FillListWithoutParam(GroupList.OK Then txtPath.FileStream(txtPath.FileName Dim fsImage As New System. Try 'Filter file extension OFD.png)|*.FileMode.Days txtfee. MsgBoxStyle. *.Group) DVDModule.jpg.Text = group.SelectedValue) ).SelectedIndex = 0 Then Exit Sub Try Dim GroupList As New List(Of Entity.Exclamation.ShowDialog = Windows.Message. *.Open.Text = group.Lalu pada event handler CbGroup_SelectedIndexChanged ketikkan sintaks dibawah ini. If Operate = "Add" Then Clear() Else Operate = Nothing Me.gif. IO.JPEG.Close() fsImage.FromStream(fsImage) PbImage. *.Exclamation.Message.Read) Dim MyImage As Image = Image.Group)) Dim group = (From grp In GroupList Where grp.DialogResult. "DVD Rental") End Try 153 . IO. seperti Rental Days.JPEG.png" If OFD. Price. sintaks berikut berfungsi jika pada saat pengguna memilih data pada CbGroup maka aplikasi menampilkan detail dari group.Text. *. MsgBoxStyle.bmp.gif.Image = MyImage fsImage. *. columns. "DVD Rental") End Try Klik ganda button cancel dan ketik seperti dibawah.Filter = "Image Files (*. If CbGroup. *.FileAccess.Single txtRental.bmp. *.IO.Group_ID.Text = OFD.Fee txtPrice.Equals(CbGroup.Text = group. "usp_selectgroup".Dispose() End If Catch ex As Exception MsgBox(ex.Price Catch ex As Exception MsgBox(ex. *. dan ketikkan sintaks seperti dibawah.Close() End If Lalu untuk menampilkan gambar pada PictureBox kli ganda pada button Edit.

_ .Text.SelectedValue}.Text.Text.KeyChar >= "0" And e.RunTime = txtRun. .Text.Language = txtLanguage.Genre With {.Status = True} Dim mYes_No As String = MsgBox("Apakah kamu ingin menyimpan data ?".Refer_No = txtReferNo.SelectedIndex = 0 Then MsgBox("Pilih Group atau genre DVD terlebih dahulu".DVD With {.KeyChar <= "9") Or e. klik ganda button Cancel. vbYesNo. Try If CbGenre.SelectedValue}.Text.Text.Actors = txtActor. .Text))) Dim DVD As New Entity. Len(txtPath. .Information.KeyChar = vbBack) Then e. .").Director = txtDirector. Try If Not ((e.Genre = New Entity.Text <> "" Then CopyImage() Clear() ReferNo() Else 154 .Message) End Try Selanjutnya untuk klik ganda button Save untuk menyimpan data. InStrRev(txtPath.Text.Handled() = True End If Catch ex As Exception MsgBox(ex. ".Text.Image = Nothing Pada event handler txtRun_Keypress ketikkan sintaks dibawah ini. _ . _ .Title = txtTitle. MsgBoxStyle. . "DVD Rental") If mYes_No = vbYes Then If Operate = "Add" Then AccessDVD.Genre_ID = CbGenre. "DVD Rental") Exit Sub End If filenaming = "" If txtPath.Synopsis = txtSinopsis.Text = "" PbImage.Group = New Entity. _ .SelectedIndex = 0 OrElse CbGroup.Sedangkan untuk menghilangkan gambar pada PictureBox. _ . _ .Release_Date = DtDate.Group_ID = CbGroup.Text.Text <> "" Then filenaming = txtReferNo. dan ketikkan sintaks seperti dibawah : txtPath.Text.Picture = filenaming.Text & (Mid(txtPath.DVDInsert(DVD) If txtPath.Group With {.

Information.DVDUpdate(DVD) If txtPath. Penulis harap para pembaca bisa menyelesaikan dengan baik.Exclamation. Untuk proses update dan List DVD. MsgBoxStyle.Message. bisa dilihat pada project yang disertakan pada buku.Message) End Try Jalankan program dan buka form DVD. "DVD Rental") End If End If Catch ex As Exception MsgBox(ex. apakah berjalan dengan benar. 155 .Else AccessDVD.ShowDialog() Operate = Nothing Catch ex As Exception MsgBox(ex. lalu masukkan data-data yang ada pada form dan simpan.Text <> "" Then CopyImage() MsgBox("Update Selesai". klik ganda dan ketikkan sintaks dibawah : Try Operate = "Add" Dim frm_dvd As New F_DVD frm_dvd. "DVD Rental") End Try Selanjutnya pada event handler F_DVD_Closing ketikkan sintaks dibawah ini : Operate = Nothing Buka F_Main (Main Menu) pada MenuStrip Data > DVD > Add . MsgBoxStyle. sebagai latihan para pembaca.

Gambar 4.45 Gambar 4.46 Gambar 4.47 156 .

BackColor = Color.DataPropertyName = "Title" TitleColumn. "DVD Rental") End Try End Sub Private Sub FormatGridWithBothTableAndColumnStyles() Me.GridColor = Color.Message.DataPropertyName = "Refer_no" ReferColumn.HeaderText = "Language" LangColumn. "Status"} DVDModule.DataPropertyName = "Actors" ActColumn.Navy Me.Width = 150 Dim DirecColumn As New DataGridViewTextBoxColumn() DirecColumn.RowHeadersBorderStyle = BorderStyle.HeaderText = "Director" DirecColumn.DataSource = DVDList Catch ex As Exception MsgBox(ex.DVD)) FormatGridWithBothTableAndColumnStyles() DgView.Width = 150 Dim LangColumn As New DataGridViewTextBoxColumn() LangColumn.DgView. "Director".DgView. buka jendela Code.AliceBlue Me. Private Sub ListDVD() Try Dim columns As String() = {"Refer_No".DgView.DgView.Fixed3D Me. buat variable Class seperti dibawah : #Region "Deklarasi" Dim DVDList As New List(Of Entity.BorderStyle = BorderStyle. "Language". MsgBoxStyle.ForeColor = Color.HeaderText = "Actors" ActColumn.AutoGenerateColumns = False Dim ReferColumn As New DataGridViewTextBoxColumn() ReferColumn.DgView.Fixed3D DgView.RowsDefaultCellStyle. columns.Jika sudah selesai dengan Form DVD selanjutnya buka F_Main (Main Menu).HeaderText = "Title" TitleColumn.HeaderText = "Refer No" ReferColumn.DataPropertyName = "Language" LangColumn. "usp_SelectDVDList". _ GetType(Entity.DataPropertyName = "Director" DirecColumn.Width = 80 Dim TitleColumn As New DataGridViewTextBoxColumn() TitleColumn.DVD) #End Region Ketikkan 2 prosedure dibawah yang berfungsi untuk menampilkan data pada DgView.DefaultCellStyle. "Actors". "Title".FillListWithoutParam(DVDList.Width = 150 Dim ActColumn As New DataGridViewTextBoxColumn() ActColumn.Width = 150 157 .Information.Blue Me.

Columns.Add(StatusColumn) End Sub Dan tambahkan sintaks berikut pada event handler F_Main_Load ListDVD Dan jalankan program.DataPropertyName = "status" StatusColumn.Add(ActColumn) DgView.Add(LangColumn) DgView. maka tampilan pada Main Menu akan seperti gambar dibawah.Add(DirecColumn) DgView.Dim StatusColumn As New DataGridViewTextBoxColumn() StatusColumn.HeaderText = "Status" StatusColumn. Gambar 4.Columns.Add(TitleColumn) DgView.Columns.Columns.Columns.Add(ReferColumn) DgView.Width = 80 DgView.Columns.48 158 .

ikuti langkah-langah dibawah untuk membuat table-table yang dibutuhkan. Field Name Ren_ID Nos Refer_no Ret_date Late Cost_fee Cost_normal return Data Type Text Number Text Date/Time Number Currency Currency Yes/No Integer Field size 14 integer 7 Primary Key PK (*) FK 159 . berfungsi untuk menyimpan data peminjaman DVD. dengan field-field seperti dibawah.4. Pertama adalah dengan membuat table t_totalrental dengan field-field seperti dibwah. Field Name R_ID Ren_ID Refer_cust Ren_date Tot_fee Nor_cost Tot_cost Data Type AutoNumber Text Text Date/Time Currency Currency Currency 14 8 PK (*) FK Field size Primary Key Selanjutnya adalah membuat table t_detailrental.7 Membuat Form Rental DVD Form ini merupakan form dimana yang paling sering di gunakan. Pada form ini kita membutuhkan 2 table untuk menyimpan data peminjaman. dimana satu Ren_ID (t_totalrental) bisa memiki banyak rental detail.

* FROM t_totalrental WHERE (((t_totalrental. ren_date. usp_InsertDetail. SELECT TOP 1 t_totalrental. [@ren_date]. nor_cost. ren_date. 160 .Pada jendela MS Access. tot_fee ) VALUES ([@ren_id]. [@refer_cust]. usp_UpdateDVDStatus. tot_cost. usp_InsertTotal. T_totalrental dan T_detailrental. tot_cost. [@nor_cost]. Lakukan hal yang sama pada field refer_no pada table T_detailrental dengan table T_DVD (refer_no). [@refer_cust]. [@tot_cost]. INSERT INTO t_totalrental ( ren_id.49 Langkah berikutnya adalah membuat Query usp_SelectRenMasterTop1. [@tot_cost]. [@ren_date].R_ID DESC. dan klik OK. Maka kita akan memilki diagram relationships seperti dibawah. refer_cust.ren_date)=Date())) ORDER BY t_totalrental. 0). buka jendela Relationships (Database Tools > Relationships) lalu tambahkan table T_cust. INSERT INTO t_totalrental ( ren_id. nor_cost. tot_fee ) VALUES ([@ren_id]. Dengan sintaks SQL nya seperti dibawah. 0). [@nor_cost]. maka akan muncul tampilan Edit Relationships. Gambar 4. Selanjutnya Drag field refer_cust (t_totalrental) pada table t_cust (field refer_cust). refer_cust.

INSERT INTO t_detailrental ( ren_id. cost_fee ) VALUES ([@ren_id]. Name ShowInTaksbar Text StartPosition MaximizedBox MinimizedBox FormBorderStyle BackColor F_Rental False Add Rental CenterScreen False False FixedSingle White Selanjutnya tambahkan control-control seperti dibawah: 6 textbox. UPDATE t_dvd SET t_dvd. Selanjutnya pada project kita (DVD Rental). Lalu susun control seperti dibawah dan ubah properties seperti dibawah : Gambar 4.status = [@status] WHERE (((t_dvd. cost_normal. [@nos]. refer_no. 1 PictureBox. tambahkan sebuah form dan ubah properties nya seperti dibawah.refer_no)=[@refer_no])). 1 Tooltip dan 6 Label. 0). nos. 4 button. [@cost_normal]. 1 GroupBox. 1ListView. [@refer_no].50 161 .

Textbox1 Name Enabled Textbox2 Name Enabled TextBox3 Name Enabled TextBox4 Name Enabled TextBox5 Name TextBox6 Name BackColor ForeColor GroupBox1 Name Text Button1 Name Text Button2 Name Text Button3 Name Text btnSave &Save 162 txtReferCust False txtFirst False txtLast False txtPhone False txtrefer_no txtTotal Black Chartreuse GbCustomer Customer Detail btnAdd Add btnRemove Remove .

Price dan Days). Gambar 4. Masuk pada jendel code lalu buat variable seperti dibawah 163 . lakukan hal diatas untuk menambah kolom (Title.51 Selanjutnya klik button “Add” dan ubah properties “Text” menjadi Refer No.Button4 Name Text PictureBox1 Name SizeMode ListView1 Name FullrowSelect GridLines View LsvDVD True True Details Pbmage StretchImage btnCancel &Cancel Lalu pada LsvDVD pada properties “Columns” klik tand “…” lalu akan muncul form seperti dibawah.

Add(list.DVD) = AccessDVD.First.First.Group.First.SubItems.Status = "False" Then MsgBox("Status DVD lagi keluar". Private Sub Dim Dim Dim Dim Dim ViewCustomer() CustList As New List(Of Entity.AccessDVD Dim AccessRenMaster As New AccessData.#Region "Deklarasi" Dim AccessDVD As New AccessData.StartupPath & "\" & CustList.Text = CDbl(txtTotal.Text = CustList.FromFile(Application.First.Customer).Picture) End If End Sub Selanjutnya adalah membuat procedure untuk menampilkan data DVD dan di masukkan kedalam LsvDVD seperti dibawah Private Sub ViewDVD() Dim list As List(Of Entity.OleDb.Text = CustList. _ GetType(Entity.First.First. columns. Value) If CustList. "DVD Rental") Exit Sub End If Dim lSingleItem As ListViewItem lSingleItem = LsvDVD.Data.AccessRentalMaster Dim AccessRenDetail As New AccessData.Add(list.FindDVDByRefer(txtrefer_no. _ Coltype.Picture <> "" Then PbImage.Text) + list.Count = 0 Then MsgBox("Reference No yang dicari salah atau tidak ada") Exit Sub End If txtReferCust.Refer_Cust txtFirst. MsgBoxStyle.First.VarChar} FieldName As String() = {"@refer_Cust"} Size As Integer() = {8} Value As String() = {txtReferCust.Title) lSingleItem.First_Name txtLast.Text} DVDModule. FieldName. Size.SubItems.Text) lSingleItem.OleDb.OleDbType() = {System.Text) If list.Text = CustList.Telp If CustList. "usp_selectCustbyRefer".Data.Price End Sub 164 .Add(txtrefer_no.Group.First.Customer) Coltype As System.SubItems.Price) lSingleItem.First.AccessRentalDetail Dim columns As String() = {} #End Region Lalu buat procedure untuk menampilkan data customer seperti dibawah.Text = CustList.OleDbType.FillListWithParam(CustList.Items.First.First.Last_Name txtPhone.Group.Image = Image.Days) txtTotal.Add(list.Information.

txtSearch. dengan cara mencari data pada terakhir pada tanggal penginputan lalu ditambah 1. columns. Operate = "Edit" Dim frm_HDVD As New H_DVD frm_HDVD. "000") & "-" & Format(Now.Ren_ID.Message.Prosedure kita gunakan pada saat user akan memasukkan data peminjaman kedalam LsvDVD. dan secara otomatis harga sewa DVD akan tampil pada txtTotal.Length .First. _ GetType(Entity. "MM/dd/yyyy") Else RentalID = Format(Val(CInt(Microsoft.Left(RenList. "MM/dd/yyyy") End If Return RentalID End Function Selanjutnya adalah klik ganda form Rental yang berfungsi untuk menampilkan form awal dengan menampilkan data Customer yang akan meminjam DVD. Sedangkan procedure dibawah ini untuk membuat Rental ID dengan format nomor urut dan tanggal penginputan.Date. dan ketikkan sintaks dibawah Try txtTotal.11)) + 1).Date. MsgBoxStyle.FillListWithoutParam(RenList.Text = "0" ViewCustomer() Catch ex As Exception MsgBox(ex.ShowDialog() txtrefer_no. "usp_SelectRenMasterTop1".Exclamation.Ren_ID.First. "DVD Rental") End Try Buat event handler txtrefer_no_DoubleClick dan ketikkan sintaks dibawah.RentalMaster) columns = {"ren_id"} DVDModule.VisualBasic. RenList. Private Function RentalID() As String Dim RenList As New List(Of Entity.Count = 0 Then RentalID = "001-" & Format(Now.RentalMaster)) If RenList.Text Operate = Nothing 165 .Text = frm_HDVD. sintak ini berfungsi untuk memanpilkan form tambahan (List DVD) hal ini untuk memudahkan jika user tidak tau id DVD.

Items.KeyCode = Shortcut.Selanjutnya buat event hander txtRefer_no_Keyup. Value) If DVDList.DVD). _ GetType(Entity. MsgBoxStyle. _ Coltype. caranya adalah dengan membuat event handler txtrefer_no_MouseHover dan ketikkan sintaks berikut : ToolTip1.Count = 0 Then MsgBox("Reference No yang dicari salah atau tidak ada") txtrefer_no.OleDbType() = {System.SetToolTip(txtrefer_no.OleDbType.OleDb. "Silahkan klik ganda atau menekan F8 untuk menampil List") ToolTip1. dan ketikkan sintaks dibawah.Active = True Lalu klik ganda button “Add” dan ketikkan sintaks dibawah ini : Try If txtrefer_no.Text = "" Then MsgBox("Masukkan DVD refer no".F8 Then txtrefer_no_DoubleClick(sender.FillListWithParam(DVDList. MsgBoxStyle.Text} columns = {"refer_no"} DVDModule.Text Then MsgBox("DVD sudah ada pada list pemesanan".1) If txtrefer_no.Count . "DVD Rental") Exit Sub End If Next 166 .Focus() txtrefer_no. Size.Text = LsvDVD.Data.DVD) Dim Coltype As System. sedangkan sintaks ini berfungsi untuk memanggil proses pada event handler txtrefer_no_DoubleClick pada saat user menekan F8 If e. columns.Data.Information.SelectAll() Exit Sub End If For i = 0 To (LsvDVD. "usp_selectDVDbyRefer". FieldName.VarChar} Dim FieldName As String() = {"@refer_No"} Dim Size As Integer() = {7} Dim Value As String() = {txtrefer_no.Information.OleDb. "DVD Rental") Exit Sub End If Dim DVDList As New List(Of Entity. e) End If Untuk memberi informasi bahwa cara menampilkan form dengan menekan F8 dan double click adalah dengan membuat hint.Items(i).

SubItems(2).Exclamation.SelectedItems lvItem.SelectedIndices(0) Price = . dengan cara klik ganda button Remove dan ketikkan sintaks dibawah.Text = "" LsvDVD. "DVD Rental") End Try Klik ganda button Cancel dan ketikkan sintaks dibawah ini. MsgBoxStyle.Exclamation.Text = CDbl(txtTotal. MsgBoxStyle. Dan pada saat kita memasukkan 167 .Message.Items. jika keluar maka akan ada pesan yang muncul.Remove() Next LsvDVD. "DVD Rental") End Try Sintaks diatas ini berfungsi untuk memasukkan data peminjaman DVd kedalam LsvDVD. Try txtrefer_no.SelectedItems.Exclamation.Count = 0 Then Exit Sub Dim Price As Double Dim intIndex As Integer With LsvDVD intIndex = .Message. "DVD Rental") End Try Selanjutnya adalah membuat fungsi untuk penyimpanan data Rental. MsgBoxStyle.Clear() Catch ex As Exception MsgBox(ex.SelectedItems. Try If LsvDVD.Clear() Catch ex As Exception MsgBox(ex. jika user salah dalam menginput data (Sebelum penyimpanan).Text = "" Catch ex As Exception MsgBox(ex. Lalu kita akan membuat fungsi untuk menghapus data pada LsvDVD.Message.ViewDVD() txtrefer_no. dengan mengecek apakah Status DVD keluar atau tidak. dalam 1 table TotalRental bisa memiliki beberapa baris DetailRental.Text) .Price For Each lvItem As ListViewItem In LsvDVD.Items(intIndex). Seperti halnya diatas untuk rental ini kita memerlukan 2 buah table pertama TotalRental yang kedua Detail Rental.Text End With txtTotal.

Ketikkan sintaks dibawah untuk membuat fungsi-fungsi berikut.Customer Public Property Ren_Date() As Date Public Property Total_Fee() As Double Public Property Normal_Cost() As Double Public Property Total_Cost() As Double End Class End Namespace Dan tambah sebuah Class lagi pada folder Entity dengan nama “RentalDetail. Namespace Entity Public Class RentalDetail Public Property RenMaster() As New Entity.DVD Public Property Ret_Date() As Date 168 . Pertama-tama tambahkan Class pada folder Entity dan ganti namanya menjadi “RentalMaster.data Rental maka secara otomatis status dari DVD menjadi False (Keluar). Namespace Entity Public Class RentalMaster Private m_renid As String Public Property Ren_ID() As String Get Return m_renid End Get Set(ByVal value As String) If value = "" Then Throw New Exception("Masukkan Rental ID") End If m_renid = value End Set End Property Public Property Customer As New Entity.vb” dan ketikkan sintaks dibawah ini.RentalMaster Public Property Nos As New Int16 Public Property DVD() As New Entity.vb” lalu ketikkan seperti dibawah.

Add(parameterRen_ID) . 14) parameterRen_ID.Parameters . lalu ketikkan sintaks dibawah.Ren_Date Dim parameterNor_Cost As OleDbParameter = New OleDbParameter("@nor_cost".DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_InsertTotal".Value = RenMaster.Date) parameterRen_Date.Data.VarChar. OleDbType.Value = RenMaster.Add(parameterTot_Cost) End With 169 . OleDbType.RentalMaster) As OleDbDataReader Try Using connect As New OleDbConnection(My.Value = RenMaster. OleDbType.StoredProcedure Dim parameterRen_ID As OleDbParameter = New OleDbParameter("@ren_id".Currency) parameterNor_Cost.Total_Cost With mycommand.OleDb Namespace AccessData Public Class AccessRental Public Function RenMasterInsert(ByVal RenMaster As Entity.Add(parameterNor_Cost) . Imports System. Tambahkan Class baru pada Folder “AccessData” dan ganti menjadi “AccessRental.VarChar.Settings. 8) parameterRefer_Cust.Value = RenMaster.Refer_Cust Dim parameterRen_Date As OleDbParameter = New OleDbParameter("@ren_date". OleDbType.Normal_Cost Dim parameterTot_Cost As OleDbParameter = New OleDbParameter("@tot_cost".CommandType = CommandType.Ren_ID Dim parameterRefer_Cust As OleDbParameter = New OleDbParameter("@refer_cust".Value = RenMaster.Data Imports System. OleDbType. connect) mycommand.Add(parameterRefer_Cust) .Add(parameterRen_Date) .Currency) parameterTot_Cost.Customer.Public Property Late() As Int16 Public Property Cost_Fee() As Double Public Property Cost_Normal() As Double Public Property Returns As Boolean End Class End Namespace Setelah selesai membuat Class Entity seperti dibawah selanjutnya adalah membuat fungsi untuk menyimpan data Rental.vb” .

Add(parameterCost_Normal) End With Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Value = RenDetail.Add(parameterRen_ID) .StoredProcedure Dim parameterRen_ID As OleDbParameter = New OleDbParameter("@ren_id". OleDbType.Add(parameterTot_Cost) End With connect. 14) parameterRen_ID.Message. OleDbType.Nos Dim parameterRefer_No As OleDbParameter = New OleDbParameter("@refer_no".CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.With mycommand.Open() Using result As OleDbDataReader = mycommand.RentalDetail) As OleDbDataReader Try Using connect As New OleDbConnection(My.Add(parameterNor_Cost) . connect) mycommand.Ren_ID Dim parameterNos As OleDbParameter = New OleDbParameter("@nos". 7) parameterRefer_No.Settings.Value = RenDetail.ExecuteReader(CommandBehavior.Add(parameterRen_Date) .Cost_Normal With mycommand.Parameters .VarChar. OleDbType.Currency) parameterCost_Normal.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_InsertDetail".RenMaster. OleDbType.DVD.Refer_No Dim parameterCost_Normal As OleDbParameter = New OleDbParameter("@cost_normal".Add(parameterNos) .CommandType = CommandType.ToString()) End Try End Function 170 .Value = RenDetail.Value = RenDetail.Message.VarChar.Integer) parameterNos.ToString()) End Try End Function Public Function RenDetailInsert(ByVal RenDetail As Entity.Parameters .Add(parameterRefer_No) .Add(parameterRen_ID) .Add(parameterRefer_Cust) .

mycommand) connect.Customer = New Entity.RentalMaster With {. .Items(i).VarChar.AddParameter("@status".ToString()) End Try End Function Kembali ke Form Rental lalu Klik ganda button Save dan ketikkan sintaks dibawah.Items.Refer_No = LsvDVD.Ren_ID = RenId.DVD With {.Cost_Normal = LsvDVD.Total_Cost = txtTotal. .Normal_Cost = txtTotal.Nos = i + 1.Status.RenMaster = New Entity.RenMasterInsert(RenMaster) For i = 0 To (LsvDVD. DVD.Open() Using result As OleDbDataReader = mycommand. OleDbType.Text}. 0.Ren_ID = RenId}. connect) mycommand.Settings.RentalMaster With {. mycommand) DVDModule.Text.ExecuteReader(CommandBehavior.Refer_Cust = txtReferCust. .Date.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateDVDStatus". .Boolean.Refer_No.CommandType = CommandType.Text} 171 . DVD. "DVD Rental") If mYes_No = vbYes Then AccessRenMaster.Message.1) Dim RenDetail As New Entity.Text}.Dan buka Class AccessDVD lalu ketikan sintaks untuk mengubah status DVD Public Function DVDStatusUpdate(ByVal DVD As Entity.Customer With {. . OleDbType.DVD = New Entity. vbYesNo.Items(i). 7.AddParameter("@refer_no".Count .Count = 0 Then MsgBox("Masukkan DVD yang mau di Rental") Exit Sub End If Dim RenId As String = RentalID() Dim RenMaster As New Entity.Items. Try If LsvDVD.StoredProcedure DVDModule.DVD) As OleDbDataReader Try Using connect As New OleDbConnection(My.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.SubItems(2).RentalDetail With {.Text} Dim mYes_No As String = MsgBox("Apakah kamu ingin menyimpan data ?". . .Ren_Date = Now.

MsgBoxStyle.Refer_No = LsvDVD. oleh karena itu sebelum menampilkan form rental kita memerlukan sebuah form untuk menampilkan data customer. .Text. "DVD Rental") End Try Untuk saat ini kita masih belum bias mengoperasikan form Rental ini.Information. "DVD Rental") End If Catch ex As Exception MsgBox(ex. Ubah propertiesnya seperti dibawah.RenDetailInsert(RenDetail) Dim DVD As New Entity. MsgBoxStyle.AccessRenMaster.Exclamation. Name ShowInTaksbar Text StartPosition ControlBox FormBorderStyle F_RenBox False Type Reference Customer CenterScreen False FixedSingle TextBox1 Name Button1 Name Text Button2 Name btnSearch btnOK OK txtReferNo 172 .PerformClick() MsgBox("Data telah disimpan".DVD With {. karena pada form Rental kita menampilkan data Customer.Items(i). Tambahkan sebuah Form dan tambahkan 1 TextBox.Status = False} AccessDVD. Ikuti langkah-langkah dibawah. 1 Label dan 3 Button.Message.DVDStatusUpdate(DVD) Next btnCancel.

173 .Text = frm_HCust. Gambar 3. yang berfungsi untuk menampilkan form Customer List.txtSearch.52 Klik ganda button Cancel dan ketikkan sintaks berikut : Me.Text Button3 Name Text Name Text Button2 Name Text Search btnCancel Cancel btnSave &Save btnCancel &Cancel Lalu atur posisi nya seperti gambar dibawah. Operate = "Edit" Dim frm_HCust As New H_Cust frm_HCust.ShowDialog() txtReferNo. jika benar maka akan menampilkan form Rental dengan data customer yang dicari.Text Dan terakhir adalah klik ganda button OK lalu ketikkan sintaks dibawah. yang berfungsi untuk menvalidasi apakah customer id benar.Close() Selanjutnya klik ganda button Search dan ketikkan sintaks dibawah.

MsgBoxStyle. Size.Text = txtReferNo.Try If txtReferNo.txtReferCust.Text frm_ren.ShowDialog() Me.OleDbType() = {System. Value) If CustList.Message. _ Coltype.ShowDialog() FormShow = Nothing Catch ex As Exception MsgBox(ex.FillListWithParam(CustList.Text} Dim columns As String() = {"refer_cust"} DVDModule.Close() End If Catch ex As Exception MsgBox(ex.Customer). "DVD Rental") End Try Buka Form Utama (Main Menu).Text = "" Then MsgBox("Masukkan reference No".Data.OleDbType.Count = 0 Then MsgBox("Reference No yang dicari salah atau tidak ada") Exit Sub End If If FormShow = "Rental" Then FormShow = Nothing Dim frm_ren As New F_Rental frm_ren.Exclamation.txtReferCust. Try FormShow = "Rental" Dim frm_renBox As New F_RenBox frm_renBox.Text frm_ret.Data.ShowDialog() Me. columns.OleDb.Close() ElseIf FormShow = "Return" Then FormShow = Nothing Dim frm_ret As New F_Return frm_ret. "DVD Rental") Exit Sub End If Dim CustList As New List(Of Entity. pada menu item Tools > Rental (klik ganda) ketikkan sintaks dibawah (untuk menampilkan form Rental Box).Information. FieldName.OleDb.Message) End Try 174 .Text = txtReferNo.VarChar} Dim FieldName As String() = {"@refer_Cust"} Dim Size As Integer() = {8} Dim Value As String() = {txtReferNo.Customer) Dim Coltype As System. "usp_selectCustbyRefer". _ GetType(Entity. MsgBoxStyle.

selanjutnya cari customer.7 Membuat Form Return DVD Setelah selesai membuat form peminjaman (Rental) maka selanjutnya adalah membuat form Return (Pengembalian) DVD oleh customer. Masukkan data DVD pada form Rental.Jalankan program dan pada Menu Utama klik Tools > Rental. Name ShowInTaksbar Text F_Return False Return DVD 175 . dan klik OK. Gambar 3.53 Gambar 3. Tambahkan sebuah Form dalam project dan ubah propertiesnya seperti dibawah.54 4.

4 button dan 2 ListView.StartPosition MaximizedBox MinimizedBox FormBorderStyle BackColor CenterScreen False False FixedSingle White Dan tambahkan beberapa control seperti berikut 5 textbox. Textbox1 Name Enabled Textbox2 Name Enabled TextBox3 Name Enabled TextBox4 Name Enabled TextBox5 Name BackColor ForeColor GroupBox1 Name Text Button1 Name btnReturn 176 txtReferCust False txtFirst False txtLast False txtPhone False txtTotal Black Chartreuse GbCustomer Customer Detail . Dan ubah properties seperti dibawah. 1 GroupBox. 5 label. 1 PictureBox.

Text Button2 Name Text Button3 Name Text Button4 Name Text PictureBox1 Name SizeMode ListView1 Name FullrowSelect GridLines View ListView2 Name FullrowSelect GridLines View

Return

btnRemove Remove

btnSave &Save

btnCancel &Cancel

Pbmage StretchImage

LsvDVD True True Details

LsvReturn True True Details

Tambahkan kolom pada LsvDVD seperti berikut : Rental ID, Refer No, Title, Price, Days, Date dan Fee. Sedangkan untuk LsvReturn tambahkan kolom seperti berikut : Rental ID, Refer No, Due Date, Late Days, Total Fee. Dan susun seperti gambar dibawah ini.

177

Gambar 3.55 Lalu pada MS Access buat lah query seperti berikut : usp_selectRental,

usp_UpdateRenMaster, usp_UpdateRenDetail. Dengan sintaks SQL sebagai berikut :
SELECT t_totalrental.Ren_ID, t_detailrental.Nos, t_group.days, t_group.price, t_group.fee, t_totalrental.Ren_Date, t_dvd.title, t_cust.refer_cust, t_cust.first_name, t_cust.last_name, t_cust.telp, t_detailrental.refer_no FROM t_cust INNER JOIN (t_group INNER JOIN (t_dvd INNER JOIN (t_totalrental INNER JOIN t_detailrental ON t_totalrental.Ren_ID = t_detailrental.Ren_ID) ON t_dvd.refer_no = t_detailrental.refer_no) ON t_group.group_id = t_dvd.group_id) ON t_cust.refer_cust = t_totalrental.refer_cust WHERE (((t_cust.refer_cust)=[@refer_cust]) AND ((t_detailrental.return)=0)); UPDATE t_totalrental SET t_totalrental.Tot_Fee = t_totalrental.Tot_Fee+[@Tot_Fee], t_totalrental.Tot_Cost = t_totalrental.Tot_cost+[@Tot_Cost] WHERE (((t_totalrental.Ren_ID)=[@Ren_ID]));

UPDATE t_detailrental SET t_detailrental.Ret_Date = [@Ret_Date], t_detailrental.late = [@late], t_detailrental.cost_fee = [@cost_fee], t_detailrental.return = [@return] WHERE (((t_detailrental.Ren_ID)=[@Ren_ID]) AND ((t_detailrental.Nos)=[@Nos])); 178

Lalu buka Class AccessRental dan ketikkan fungsi-fungsi dibawah ini.
Public Function RenMasterUpdate(ByVal RenMaster As Entity.RentalMaster) As OleDbDataReader Try Using connect As New OleDbConnection(My.Settings.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateRenMaster", connect) mycommand.CommandType = CommandType.StoredProcedure Dim parameterTotal_Fee As OleDbParameter = New OleDbParameter("@Tot_Fee", OleDbType.Currency) parameterTotal_Fee.Value = RenMaster.Total_Fee Dim parameterTot_Cost As OleDbParameter = New OleDbParameter("@Tot_Cost", OleDbType.Currency) parameterTot_Cost.Value = RenMaster.Total_Cost Dim parameterRen_ID As OleDbParameter = New OleDbParameter("@ren_id", OleDbType.VarChar, 14) parameterRen_ID.Value = RenMaster.Ren_ID With mycommand.Parameters .Add(parameterTotal_Fee) .Add(parameterTot_Cost) .Add(parameterRen_ID) End With connect.Open() Using result As OleDbDataReader = mycommand.ExecuteReader(CommandBehavior.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Message.ToString()) End Try End Function

Public Function RenDetailUpdate(ByVal RenDetail As Entity.RentalDetail) As OleDbDataReader Try Using connect As New OleDbConnection(My.Settings.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_UpdateRenDetail", connect) mycommand.CommandType = CommandType.StoredProcedure Dim parameterReturnDate As OleDbParameter = New OleDbParameter("@ret_date", OleDbType.VarChar, 7) parameterReturnDate.Value = RenDetail.Ret_Date Dim parameterLate As OleDbParameter = New OleDbParameter("@late", OleDbType.Integer) parameterLate.Value = RenDetail.Late

179

14) parameterRen_ID. OleDbType.Value = Refer_cust connect.CommandType = CommandType.RenMaster.Add(parameterNos) End With connect.Open() Using rdr As OleDbDataReader = mycommand.Nos With mycommand. OleDbType. OleDbType.CloseConnection) Return result End Using End Using End Using Catch SqlEx As OleDbException Throw New Exception(SqlEx.Returns Dim parameterRen_ID As OleDbParameter = New OleDbParameter("@ren_id".Integer) parameterLate.Message.Currency) parameterCostFee.StoredProcedure mycommand. OleDbType.Cost_Fee Dim parameterReturn As OleDbParameter = New OleDbParameter("@return".Integer) parameterNos. OleDbType.Open() Using result As OleDbDataReader = mycommand.Value = RenDetail.RentalDetail)() Try Using connect As New OleDbConnection(My.VarChar.DVDConnection) Using mycommand As OleDbCommand = New OleDbCommand("usp_selectRental". OleDbType.Parameters .ExecuteReader(CommandBehavior.Add(parameterLate) .Dim parameterLate As OleDbParameter = New OleDbParameter("@late".Add(parameterReturn) .Value = RenDetail.Add(parameterRen_ID) .Late Dim parameterCostFee As OleDbParameter = New OleDbParameter("@cost_fee".Value = RenDetail.RentalDetail) Dim RenDetail As New List(Of Entity.Add(parameterCostFee) .Boolean) parameterReturn.Ren_ID Dim parameterNos As OleDbParameter = New OleDbParameter("@nos".Add(parameterReturnDate) .ToString()) End Try End Function Public Function FindRenByReferCust(ByVal Refer_cust As String) As List(Of Entity.Value = RenDetail. connect) mycommand.Add("@refer_cust".ExecuteReader 180 .VarChar).Parameters.Settings.Value = RenDetail.

Customer.ToString() RenDetail.DVD.Ren_Date = rdr("ren_date").ToString() RentalDetails.Refer_No = rdr("refer_no").Fee = rdr("fee").ToString() RentalDetails.ToString() RentalDetails.RenMaster.DVD.ToString() RentalDetails.Add(RentalDetails) End While End Using End Using End Using Catch sqlex As OleDbException Throw New Exception(sqlex.RenMaster.Refer_Cust = rdr("refer_cust").AccessRental Dim columns As String() = {} #End Region Dan seperti pada form Rental kita juga akan menampilkan data customer pada form ini.ToString() RentalDetails.DVD.Nos = rdr("Nos"). ketikkan procedure dibawah ini.RentalDetail RentalDetails.Group.RenMaster.RenMaster.ToString() RentalDetails.Days = rdr("days"). 181 .ToString() RentalDetails.ToString()) End Try Return RenDetail End Function Kembali ke form Return buat deklarasi seperti dibawah.Group.RenMaster.RenMaster.ExecuteReader While rdr.Group.Telp = rdr("telp").Last_Name = rdr("last_name").Customer.First_Name = rdr("first_name").ToString() RentalDetails.Ren_ID = rdr("Ren_ID").Read Dim RentalDetails As New Entity.ToString() RentalDetails.AccessDVD Protected AccessRenMaster As New AccessData.DVD.Message.Title = rdr("title").Using rdr As OleDbDataReader = mycommand.Customer. #Region "Deklarasi" Protected AccessDVD As New AccessData.Customer.ToString() RentalDetails.Price = rdr("price").DVD.ToString() RentalDetails.

Ren_ID) lSingleItem.Ren_Date) lSingleItem.Add(rental.SubItems. FieldName.SubItems.FromFile(Application.First.Add(rental.Picture) End If End Sub Lalu buat procedure untuk menampilkan data Rental.OleDb.Title) lSingleItem.Private Sub ViewCustomer() Dim CustList As New List(Of Entity.Text) Dim lSingleItem As ListViewItem For Each rental In list lSingleItem = LsvDVD.Customer).Group.StartupPath & "\" & CustList.OleDbType() = {System.First.DVD.Text = CustList.Text = CustList.Add(rental.Add(rental.Price) lSingleItem.Telp If CustList.Group.VarChar} Dim FieldName As String() = {"@refer_Cust"} Dim Size As Integer() = {8} Dim Value As String() = {txtReferCust.First.RenMaster.Refer_No) lSingleItem.Count = 0 Then MsgBox("Reference No yang dicari salah atau tidak ada") Exit Sub End If txtReferCust. Size.OleDb.Picture <> "" Then PbImage.Days) lSingleItem.Refer_Cust txtFirst.FillListWithParam(CustList.Add(rental.Group.SubItems. columns.Data.OleDbType.Fee) lSingleItem.Add(rental.SubItems.SubItems.SubItems.DVD. Value) If CustList.First.Add(rental. _ Coltype.Image = Image.Add(rental.SubItems.RenMaster.Last_Name txtPhone. Private Sub ViewRental() Dim list As List(Of Entity.Items.FindRenByReferCust(txtReferCust.DVD.First_Name txtLast.First.Nos) Next End Sub 182 .First. _ GetType(Entity.Customer) Dim Coltype As System.DVD.Text} DVDModule.Text = CustList.Text = CustList.Data. "usp_selectCustbyRefer".DVD.RentalDetail) = AccessRenMaster.

Items(intIndex).Count = 0 Then Exit Sub Dim intIndex.Items. "DVD Rental") End Try 183 .Message.Add(If(late < 0.AddDays(CInt(. late) * CInt(. Lalu klik ganda button Return dan ketikkan sintaks dibawah ini.Text))) late = DateDiff(DateInterval. MsgBoxStyle.Items(intIndex).SubItems(1).Day. late)) tot_price = If(late < 0.Add(tot_price) lSingleItem.SelectedItems.Items(int Index).Text) If Not (Lsv Is Nothing) Then MsgBox("Data sudah ada pada List DVD Return". "##.Exclamation.AddDays(CInt(.Text).Add(.Message.Information. CDate(.SubItems(1).Text = Format(CDbl(txtTotal.Exclamation. "DVD Rental") Exit Sub End If lSingleItem = LsvReturn.SubItems.SubItems.Add(. 0.Text) lSingleItem.FindItemWithText(.SelectedIndices(0) Dim lSingleItem As ListViewItem Dim Lsv As ListViewItem = LsvReturn.Items(intIndex).Text = "0" ViewCustomer() ViewRental() Catch ex As Exception MsgBox(ex.SubItems(7).Text) lSingleItem.Klik ganda form return dan ketikkan sintaks dibawah : Try txtTotal. Now.Text)) .Items(intIndex).Items(intIndex).Text) lSingleItem.Items(intIndex).SubItems.SubItems.Date) lSingleItem.Add(.Items(intIndex).Text) + tot_price.SubItems(4). late As Integer Dim tot_price As Double With LsvDVD intIndex = .Text) txtTotal.SubItems(5).00") End With Catch ex As Exception MsgBox(ex.SubItems(4). MsgBoxStyle.Items(intIndex).SubItems.Text).###.SubItems(5). MsgBoxStyle. "DVD Rental") End Try Pada sintaks diatas berfungsi untuk menampilkan data Customer dan data peminjaman customer yang dipilih. Try If LsvDVD.SubItems(6).Add(CDate(. 0.

SelectedIndices(0) txtTotal.Remove() Next LsvReturn.Text. "DVD Rental") End Try Dan terakhir klik ganda button Save dan ketikkan sintaks dibawah.Count .Text = Format(CDbl(txtTotal.Count = 0 Then Exit Sub With LsvReturn intIndex = .Total_Cost = LsvReturn. .RentalMaster With {.SelectedItems.SubItems(4).Clear() Catch ex As Exception MsgBox(ex.Message. Try Dim mYes_No As String = MsgBox("Apakah kamu ingin menyimpan data ?". "DVD Rental") If mYes_No = vbYes Then For a = 0 To LsvReturn.00") End With For Each lvItem As ListViewItem In LsvReturn. vbYesNo. . "DVD Rental") End Try Lalu klik ganda button Cancel dan ketikkan sintaks dibawah : Try LsvReturn.RentalMaster With {.Exclamation.Text} AccessRenMaster.Clear() txtTotal.Text).Total_Fee = LsvReturn. "##.SelectedItems.RenMaster = New Entity.Items(intIndex). .Text = "0" Catch ex As Exception MsgBox(ex.Text) CDbl(. MsgBoxStyle.Items(a).Items.Ren_ID = LsvReturn.Items.Message. jika pengembalian melewati batas waktu yang ditentukan maka secara otomatis nilai nominal yang didenda akan ditampilkan.Ren_ID = LsvReturn.SubItems(4).RentalDetail With {.Nos = 184 . Klik ganda button Remove dan ketikkan sintaks dibawah: Try Dim intIndex As Integer If LsvReturn.SubItems(4).1 Dim RenMaster As New Entity.Items(i).Items.1) Dim RenDetail As New Entity.###. MsgBoxStyle.RenMasterUpdate(RenMaster) Next For i = 0 To (LsvReturn.SelectedItems lvItem.Count .Items(a).Text}.Pada sintaks ini berfungsi untuk memindahkan data dari LsvDVD ke LsvReturn.Exclamation.Items(a).Text.

. Try FormShow = "Return" Dim frm_renBox As New F_RenBox frm_renBox.LsvReturn.PerformClick() MsgBox("Data telah disimpan".Items(i).Returns = True} AccessRenMaster.RenDetailUpdate(RenDetail) Dim DVD As New Entity.Message) End Try Jalankan program dan masuk kedalam form Return.Message.Items(i). "DVD Rental") End Try Lalu buka form Menu Utama ke main menu (Tools > Return) klik ganda dan ketikkan sintaks dibawah.Text.Status = True} AccessDVD.SubItems(5).FindItemWithText(LsvReturn. "DVD Rental") End If Catch ex As Exception MsgBox(ex.SubItems(3).Items(i).Text.SubItems(1). . Selamat mencoba dan selamat bercoding ria………… 185 . MsgBoxStyle.SubItems(1).Index) End If Next btnCancel.Late = LsvReturn.Items(i).RemoveAt(Lsv.Ret_Date = Now.DVD With {. .Information.Items(i).Text. MsgBoxStyle.SubItems(4).ShowDialog() FormShow = Nothing Catch ex As Exception MsgBox(ex.Text.Cost_Fee = LsvReturn.DVDStatusUpdate(DVD) Dim Lsv As ListViewItem = LsvDVD. .Refer_No = LsvReturn.Date.Text) If Not (Lsv Is Nothing) Then LsvDVD.Items. .Exclamation.

56 186 .Gambar 3.

You're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->