28
Program VB.net anda yang pertama. Sesuatu hal yang baru di VB.net dibandingkan dengan Visual Basic 6.0, adalah pembuatan program console yang berjalan di lingkungan MS-DOS prompt. Anda dapat membuat program console dengan pilihan “Console application” pada jendela New Project. Selanjutnya akan muncul suatu Code Windows, dimana anda dapat mengetikan program anda. Module Module1 Sub Main() End Sub End Module

Program VB

Embed Size (px)

Citation preview

Page 1: Program VB

Program VB.net anda yang pertama.Sesuatu hal yang baru di VB.net dibandingkan dengan Visual Basic 6.0, adalah pembuatan program console yang berjalan di lingkungan MS-DOS prompt. Anda dapat membuat program console dengan pilihan “Console application” pada jendela New Project.

Selanjutnya akan muncul suatu Code Windows, dimana anda dapat mengetikan program anda.

Module Module1    Sub Main()

    End SubEnd Module

Berikut ini adalah contoh program menghitung Luas Persegi panjang :

Module Module1

     Sub Main()        'Deklarasi variabel        Dim Panjang, Lebar As Integer        Dim Luas As Long

Page 2: Program VB

        Console.WriteLine("Menghitung luas persegi panjang")        Console.Write("Panjang :")        Panjang = Console.ReadLine()        Console.Write("Lebar :")        Lebar = Console.ReadLine()        Luas = Panjang * Lebar        Console.WriteLine("Luas persegi panjang : " & Luas.ToString)        Console.ReadLine()    End Sub

End Module

Menjalankan program

Untuk menjalankan program dapat digunakan tombol fungsi F5, atau dari menu “Project” pilih “Run”, ataupun dengan menggunakan toolbar 

Project

Buatlah program untuk menghitung akar persamaan kuadrat.

Imports System.Math

Module Module1

    Sub Main()        Dim a, b, c As Integer        Dim D As Long        Dim x1, x2 As Double        Console.WriteLine("Menghitung persamaan kuadrat aX2 + bX + c")        Console.Write("Nilai a :")        a = Console.ReadLine()        Console.Write("Nilai b :")        b = Console.ReadLine()        Console.Write("Nilai c :")        c = Console.ReadLine()

        'Menghitung diskriminan        D = b ^ 2 - 4 * a * c        If D > 0 Then            x1 = (-b + Sqrt(D)) / 2 * a            x2 = (-b - Sqrt(D)) / 2 * a            Console.WriteLine("x1 " & x1.ToString)            Console.WriteLine("x2 " & x2.ToString)        Else            Console.WriteLine("Akar imaginier !")        End If    End Sub

End Module

Page 3: Program VB

Database anda yang pertama.Kalau di Visual Basic 6.0 pengolahan database dapat menggunakan DAO (Data Access Object), maupun ADO (ActiveX Data Object), maka di VBnet kita dapat menggunakan ADO.NET untuk pengolahan data. Kelas ADO.NET dapat ditemukan pada namespace System.Data.

ADO.NET memiliki dua komponen utama yaitu DataSet, dan .NET Framework data provider, yang mana merupakan himpunan dari komponen-komponen antara lain objek Connection, Command, DataReader, dan DataAdapter.

Connection, merupakan objek yang menyediakan koneksi ke suatu data source.

Command, merupakan objek yang memungkinkan akses terhadap database untuk pengambilan data, modifikasi data, menjalankan stored procedure, dan mengirim atau menerima informasi parameter.

.NET Framework memiliki .NET Framework Data Provider untuk SQL Server (untuk Microsoft SQL Server version 7.0 atau keatasnya), .NET Framework Data Provider untuk OLE DB, dan .NET Framework Data Provider untuk ODBC.

Page 4: Program VB

Anda disaran untuk menggunakan.NET Framework Data Provider untuk SQL Server untuk koneksi ke SQL Server, karena lebih efisien dan cepat, karena melakukan akses langsung tanpa melalui lapisan lainnya.

Pada contoh ini kita akan terfokus pada pemakaian Connection dan Command OLEDB, untuk pembuatan tabel.

Membuat Tabel Siswa

1. Buatlah sebuah database dengan nama Belajar.mdb

2. Dan koding berikut untuk membuat sebuah tabel dengan nama Siswa

Imports System.Data.OleDbModule Module2 Public Sub main() Dim OledbConn As OleDb.OleDbConnection Dim OledbComm As OleDb.OleDbCommand Dim sSQL As String Try OledbConn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") OledbConn.Open() sSQL = "Create Table Barang (KodeBar Char(10) Constraint PK_Barang Primary Key," & _ "Keterangan Char(50) Not null," & _ "Satuan Char(6) Not null," & _ "Harga Currency)" OledbComm = New OleDb.OleDbCommand(sSQL, OledbConn) Console.WriteLine("Mulai buat tabel siswa ...") OledbComm.ExecuteNonQuery() Console.WriteLine("Buat tabel siswa berhasil !") Catch ex As Exception Console.WriteLine(ex.Message) Finally OledbConn.Close() End Try End SubEnd Module

Catatan :

Page 5: Program VB

Try...Catch...Finally, merupakan error handling yang baru diperkenalkan pada VBnet, dan saya rasa tidak sulit bagi anda untuk memahaminya.

Program Tambah Data.Pada modul sebelumnya kita telah menggunakan Connection untuk melakukan koneksi ke suatu data source, dan menggunakan Command untuk menjalankan perintah SQL untuk pembuatan tabel.

Berikut ini kita akan menggunakan DataAdapter dan DataSet untuk pengolahan data.

DataAdapter, merupakan objek .Net Framework Data Provider untuk mempopulasikan data ke Dataset, dan melakukan update data ke data source.

DataSet, merupakan cache dari data yang diambil dari data source melalui provider. Objek DataSet menggunakan scenario disconnected yang memang merupakan tujuan dari ADO.Net untuk mendukung model pemrograman n-Tier dan XML.

Catatan

DataAdapter merupakan jembatan antara data source dengan DataSet. DataAdapter menggunakan objek  Command untuk menjalankan perintah-perintah SQL terhadap data source untuk memuat data ke DataSet, dan melakukan rekonsiliasi terhadap perubahan (tambah, perbaiki, dan hapus) data pada  DataSet kembali ke data source.

Anda bisa membayangkan DataSet sebagai Recordset disconnected pada ADO, tetapi DataSet dapat terdiri dari beberapa DataTable yang berasal dari provider yang berbeda dan memiliki relation satu sama yang lain.

Page 6: Program VB

Tambah Data Tabel Barang

Imports System.Data.OleDbModule Module3 Public Sub main() Dim Oledbconn As OleDb.OleDbConnection Dim OledbComm As OleDb.OleDbCommand

Page 7: Program VB

Dim OledbDA As OleDb.OleDbDataAdapter Dim ODS As New DataSet Dim sSQL As String Dim ODR As DataRow Dim ODC As OleDbCommandBuilder 'Buat objek connection Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") sSQL = "Select * From Barang" 'Buat objek command untuk menjalankan SQL OledbComm = New OleDbCommand(sSQL, Oledbconn) OledbComm.CommandType = CommandType.Text 'Buat objek dataadapter sebagai jembatan bagi DataSet OledbDA = New OleDbDataAdapter(OledbComm) 'Isi data ke DataTable Barang di DataSet melalui DataAdapter OledbDA.Fill(ODS, "Barang") 'Membuat objek datarow untuk record baru ODR = ODS.Tables("Barang").NewRow 'Isi masing-masing field pada objek datarow ODR("KodeBar") = "VBnet" ODR("Keterangan") = "Milist Indoprog-VBnet" ODR("Satuan") = "Email" ODR("Harga") = 0 'Tambah objek datarow ke DataTable Barang ODS.Tables("Barang").Rows.Add(ODR) 'Generate perintah SQL untuk update data ODC = New OleDbCommandBuilder(OledbDA) 'Lakukan update data dari DataSet ke data source OledbDA.Update(ODS, "Barang") Oledbconn.Close() End SubEnd Module

Program Tambah, Perbaiki, dan Hapus Data.Pada modul sebelumnya anda telah memahami peran .Net Framework Data Provider (Connection, Command, DataAdapter) dan Objek DataSet.

Sesuatu hal yang perlu anda pahami adalah DataAdapter digunakan untuk mengambil data dari data source dan mengisinya ke sebuah DataSet sebagai objekDataTable, masing-masing record dalam DataTable membentuk DataRow.

DataAdapter menggunakan SelectCommand untuk mengambil data dari data source.

DataAdapter menggunakan InsertCommand, UpdateCommand, dan DeleteCommand untuk mengupdate data source.

Page 8: Program VB

Mempersiapkan .Net Framework Data Provider

'Buat objek ConnectionOledbconn = New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")'Buat objek Command untuk menjalankan SelectCommandsSQL = "Select * From Barang"OledbComm = New OleDbCommand(sSQL, Oledbconn)OledbComm.CommandType = CommandType.Text'Buat objek DataAdapter sebagai jembatan bagi DataSetOledbDA = New OleDbDataAdapter(OledbComm)

Mengisi data ke DataSet sebagai objek DataTable

'Isi data ke DataTable Barang di DataSet melalui DataAdapterOledbDA.Fill(ODS, "Barang")

Memambah record baru ke DataTable

'Membuat objek DataRow untuk record baruODR = ODS.Tables("Barang").NewRow'Isi masing-masing kolom pada objek DataRowODR("KodeBar") = "Delphi"ODR("Keterangan") = "Milist Indoprog-Delphi"ODR("Satuan") = "Email"ODR("Harga") = 0'Tambah objek DataRow ke DataTable Barang

Page 9: Program VB

ODS.Tables("Barang").Rows.Add(ODR)

Mengubah record Pertama

'Mereferensikan ODR ke DataRow yang pertamaODR = ODS.Tables("Barang").Rows(0)'Ubah kolom HargaODR("Harga") = 10000

Menghapus record kedua

'Hapus DataRow yang keduaODS.Tables("Barang").Rows(1).Delete()

Update data ke record source

Sesuatu hal yang perlu anda sadari adalah DataSet merupakan cache data local yang sifatnya disconnect terhadap datasource, sehingga perubahan yang anda lakukan tidak secara otomatis di update, anda perlu mempersiapkan Command (InsertCommand, UpdateCommand, DeleteCommand), sehingga update dapat dilakukan oleh DataAdapter ke data source.

'Generate InsertCommand, UpdateCommand, DeleteCommand untuk update dataODC = New OleDbCommandBuilder(OledbDA)'Lakukan update data dari DataSet ke data sourceOledbDA.Update(ODS, "Barang")

Tutup koneksi

'Tutup koneksiOledbconn.Close()

Program Kongkrit

Imports System.Data.OleDbModule Module3 Public Sub main() Dim Oledbconn As OleDb.OleDbConnection Dim OledbComm As OleDb.OleDbCommand Dim OledbDA As OleDb.OleDbDataAdapter Dim ODS As New DataSet Dim sSQL As String Dim ODR As DataRow Dim ODC As OleDbCommandBuilder 'Buat objek connection Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") sSQL = "Select * From Barang"

Page 10: Program VB

'Buat objek command untuk menjalankan SQL OledbComm = New OleDbCommand(sSQL, Oledbconn) OledbComm.CommandType = CommandType.Text 'Buat objek dataadapter sebagai jembatan bagi DataSet OledbDA = New OleDbDataAdapter(OledbComm) 'Isi data ke DataTable Barang di DataSet melalui DataAdapter OledbDA.Fill(ODS, "Barang") 'Membuat objek datarow untuk record baru ODR = ODS.Tables("Barang").NewRow 'Isi masing-masing field pada objek datarow ODR("KodeBar") = "Delphi" ODR("Keterangan") = "Milist Indoprog-Delphi" ODR("Satuan") = "Email" ODR("Harga") = 0 'Tambah objek datarow ke DataTable Barang ODS.Tables("Barang").Rows.Add(ODR) ODR = ODS.Tables("Barang").Rows(0) ODR("Harga") = 10000 ODS.Tables("Barang").Rows(1).Delete() 'Generate perintah SQL untuk update data ODC = New OleDbCommandBuilder(OledbDA) 'Lakukan update data dari DataSet ke data source OledbDA.Update(ODS, "Barang") Oledbconn.Close() End SubEnd Module

Program Sort, Filter dan CariAnda tidak dapat mengurut, menfilter data yang terdapat pada DataTable, untuk melakukan hal tersebut anda membutuhkan DataView.

Dengan menggunakan DataView, anda dapat mengurut, menfilter dan mencari data berdasarkan sort key. Karena kemampuan tersebut, biasanya DataView digunakan pada aplikasi yang membutuhkan data binding.

Membuat DataView

Misalnya anda telah memiliki DataTable "barang" yang berada dalam DataSet ODS, maka anda dapat menggunakan penulisan berikut untuk membentuk DataView dari DataTable tersebut :

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Buat Connection OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") sSQL = "Select * From Barang" 'Buat Select Command untuk DataAdapter

Page 11: Program VB

OledbComm = New OleDbCommand(sSQL, OledbConn) OledbComm.CommandType = CommandType.Text 'Buat DataAdapter OleDA = New OleDbDataAdapter(OledbComm) 'Isi Data ke DataSet sebagai DataTable barang OleDA.Fill(ODS, "Barang") 'Buat DataView dari DataTable barang ODV = New DataView(ODS.Tables("Barang")) 'Ikat DataView sebagai DataSource DataGrid DataGrid1.DataSource = ODVEnd Sub

Melakukan Filter

Misalkan txtFilter adalah sebuah textbox yang berisi ekspresi untuk filter, maka penulisan berikut untuk melakukan filter pada object DataView

ODV.RowFilter = txtFilter.Text

Melakukan Sort

Misalkan kita ingin melakukan sort terhadap kolom KodeBar, maka penulisan berikut untuk melakukan hal tersebut

ODV.Sort = "KodeBar ASC"

Melakukan Find

Misalkan kita ingin mencari data pada kolom yang di Sort berdasarkan isi textbox txtFind, maka dapat menggunakan penulisan :

Row = ODV.Find(txtFind.Text)

Dalam hal ini variabel Row akan berisi nomor baris hasil Find, atau -1 kalau tidak ditemukan.

Program Kongkrit

Page 12: Program VB

Imports System.data.OleDbPublic Class Form1 Inherits System.Windows.Forms.Form Dim OledbConn As OleDbConnection Dim OledbComm As OleDbCommand Dim sSQL As String Dim OleDA As OleDbDataAdapter Dim ODS As New DataSet Dim ODV As New DataView

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Buat Connection OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") sSQL = "Select * From Barang" 'Buat Select Command untuk DataAdapter OledbComm = New OleDbCommand(sSQL, OledbConn) OledbComm.CommandType = CommandType.Text 'Buat DataAdapter OleDA = New OleDbDataAdapter(OledbComm) 'Isi Data ke DataSet sebagai DataTable barang OleDA.Fill(ODS, "Barang") 'Buat DataView dari DataTable barang ODV = New DataView(ODS.Tables("Barang")) 'Ikat DataView sebagai DataSource DataGrid DataGrid1.DataSource = ODV End Sub

Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim OCommBuilder As OleDbCommandBuilder DataGrid1.Update()

Page 13: Program VB

OCommBuilder = New OleDbCommandBuilder(OleDA) OleDA.Update(ODS, "Barang") ODS.Dispose() OledbConn.Close() End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSortKode.Click ODV.Sort = "KodeBar DESC" End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSortKeterangan.Click ODV.Sort = "Keterangan" End Sub

Private Sub cmdFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFilter.Click Try ODV.RowFilter = txtFilter.Text Catch ex As Exception MsgBox(ex.Message) End Try End Sub

Private Sub cmdFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFind.Click Dim Row As Integer Try Row = ODV.Find(txtFind.Text) If Row = -1 Then MsgBox("Tidak ketemu") Else Me.BindingContext(ODV).Position = Row End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub

End Class

Program Data Form EntryPada modul ini kita akan membuat Entry data dengan menggunakan DataView, yang dibinding pada masing-masing textbox.

Mempersiapkan data source

Dalam hal ini kita akan membuka koneksi dan mempersiapkan DataView, serta binding masing-masing textbox ke data field.

Page 14: Program VB

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load OleDbConn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") sSQL = "Select * From Barang" OleDbComm = New OleDbCommand(sSQL, OleDbConn) OleDA = New OleDbDataAdapter(OleDbComm) OleDA.Fill(ODS, "Barang") ODV = New DataView(ODS.Tables("Barang")) 'Melakukan binding masing-masing textbox Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "KodeBar")) Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Keterangan")) Me.TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Satuan")) Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Harga")) End Sub

MoveFirst

Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click Me.BindingContext(ODV).Position = 0 End Sub

MovePrev

Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click Me.BindingContext(ODV).Position -= 1 End Sub

MoveNext

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click Me.BindingContext(ODV).Position += 1 End Sub

MoveLast

Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click Me.BindingContext(ODV).Position = ODV.Table.Rows.Count End Sub

AddNew

Page 15: Program VB

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.BindingContext(ODV).AddNew() Me.Update() End Sub

Update

Private Sub btnUpd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.BindingContext(ODV).EndCurrentEdit() End Sub

Cancel

Private Sub btnCnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.BindingContext(ODV).CancelCurrentEdit() End Sub

Delete

Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) If (Me.BindingContext(ODV).Count > 0) Then Me.BindingContext(ODV).RemoveAt(Me.BindingContext(ODV).Position) End If End Sub

Update data ke data source

Sesuatu hal yang harus anda pahami adalah bahwa perubahan pada DataView tidak secara langsung terupdate pada data source..

Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim oleCommBuilder As New OleDbCommandBuilder(OleDA) OleDA.Update(ODS, "Barang") End Sub

Program Kongkrit

Page 16: Program VB

Imports System.Data.OleDbPublic Class Form2 Inherits System.Windows.Forms.Form Dim OleDbConn As OleDbConnection Dim OleDbComm As OleDbCommand Dim OleDA As OleDbDataAdapter Dim ODS As New DataSet Dim ODV As DataView Dim sSQL As String Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load OleDbConn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") sSQL = "Select * From Barang" OleDbComm = New OleDbCommand(sSQL, OleDbConn) OleDA = New OleDbDataAdapter(OleDbComm) OleDA.Fill(ODS, "Barang") ODV = New DataView(ODS.Tables("Barang")) Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "KodeBar")) Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Keterangan")) Me.TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Satuan")) Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Harga")) End Sub Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click Me.BindingContext(ODV).Position = 0 End Sub Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click Me.BindingContext(ODV).Position = ODV.Table.Rows.Count End Sub Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click Me.BindingContext(ODV).Position -= 1

Page 17: Program VB

End Sub Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click Me.BindingContext(ODV).Position += 1 End Sub Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.BindingContext(ODV).AddNew() Me.Update() End Sub Private Sub btnUpd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.BindingContext(ODV).EndCurrentEdit() End Sub Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim oleCommBuilder As New OleDbCommandBuilder(OleDA) OleDA.Update(ODS, "Barang") End Sub Private Sub btnCnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.BindingContext(ODV).CancelCurrentEdit() End Sub Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) If (Me.BindingContext(ODV).Count > 0) Then Me.BindingContext(ODV).RemoveAt(Me.BindingContext(ODV).Position) End If End SubEnd Class

Membuat master dan childPada modul-modul sebelumnya kita telah bekerja dengan DataSet, DataTable, dan DataView. Pada modul ini kita akan bekerja dengan DataSet yang memiliki beberapa DataTable dan masing-masing DataTable dihubungkan (Relation) berdasarkan kolom tertentu.

Page 18: Program VB

Contoh hasil Master dan Detail yang ditampilkan pada DataGrid1.

Mempersiapkan data source

Dalam hal ini kita akan membuka koneksi dan mempersiapkan DataSet, membuat Relation antara master DataTable dan child, serta membuat DataViewManager. Akhirnya di binding ke DataGrid.

Page 19: Program VB

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data source=D:\BelajarVBnet\Belajar.mdb;") ODABarang = New OleDbDataAdapter("Select * from Barang", Oledbconn) ODAPelanggan = New OleDbDataAdapter("Select * from Pelanggan", Oledbconn) ODABarang.Fill(ODS, "Barang") ODAPelanggan.Fill(ODS, "Pelanggan") 'Buat Relation antara DataTable Barang (Master) dan Pelanggan (Child) ODS.Relations.Add("PelangganBarang", ODS.Tables("Barang").Columns("KodeBar"), ODS.Tables("Pelanggan").Columns("KodeBar")) 'Membuat DataViewManager untuk DataSet ODVM = New DataViewManager(ODS) 'Binding DataViewManager ke DataGrid, DataTable Barang DataGrid1.SetDataBinding(ODVM, "Barang") End Sub

Update data ke data source

Karena DataSet terdiri dari dua tabel, maka kita perlu mengupdatenya satu-persatu  melalui DataAdapter masing-masing.

Private Sub Form3_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim oleCB As New OleDbCommandBuilder(ODABarang) Dim oleCP As New OleDbCommandBuilder(ODAPelanggan) 'Update masing-masing DataSet ODABarang.Update(ODS, "Barang") ODAPelanggan.Update(ODS, "Pelanggan") End Sub

Program Kongkrit

Imports System.Data.OleDbPublic Class Form3 Inherits System.Windows.Forms.Form Dim Oledbconn As OleDbConnection Dim ODABarang As OleDbDataAdapter Dim ODAPelanggan As OleDbDataAdapter Dim ODS As New DataSet Dim ODVM As DataViewManager

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data source=D:\BelajarVBnet\Belajar.mdb;") ODABarang = New OleDbDataAdapter("Select * from Barang", Oledbconn) ODAPelanggan = New OleDbDataAdapter("Select * from Pelanggan", Oledbconn) ODABarang.Fill(ODS, "Barang") ODAPelanggan.Fill(ODS, "Pelanggan")

Page 20: Program VB

'Buat Relation antara DataTable Barang (Master) dan Pelanggan (Child) ODS.Relations.Add("PelangganBarang", ODS.Tables("Barang").Columns("KodeBar"), ODS.Tables("Pelanggan").Columns("KodeBar")) 'Membuat DataViewManager untuk DataSet ODVM = New DataViewManager(ODS) 'Binding DataViewManager ke DataGrid, DataTable Barang DataGrid1.SetDataBinding(ODVM, "Barang") End Sub Private Sub Form3_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim oleCB As New OleDbCommandBuilder(ODABarang) Dim oleCP As New OleDbCommandBuilder(ODAPelanggan) 'Update masing-masing DataSet ODABarang.Update(ODS, "Barang") ODAPelanggan.Update(ODS, "Pelanggan") End SubEnd Class

Membuat Form master dan childPada modul sebelumnya kita telah belajar bagaimana menggunakan DataViewManager untuk menampilkan data dalam DataGrid yang memiliki Relasi antara DataTable Master dan Child.

Pada Modul ini kita masih akan bekerja dengan DataViewManager untuk keperluaan pembuatan Form Entry data dalam bentuk Master dan Child.

Contoh hasil Master dan Detail yang ditampilkan pada DataGrid1.

Page 21: Program VB

Mempersiapkan data source

Dalam hal ini kita akan membuka koneksi dan mempersiapkan DataSet, membuat Relation antara master DataTable dan child, serta membuat DataViewManager. Akhirnya di binding ke DataGrid.

Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") ODABarang = New OleDbDataAdapter("Select * from Barang", Oledbconn) ODAPelanggan = New OleDbDataAdapter("Select * from Pelanggan", Oledbconn) ODABarang.Fill(ODS, "Barang") ODAPelanggan.Fill(ODS, "Pelanggan") 'Buat Relation antara DataTable Barang (Master) dan Pelanggan (Child) ODS.Relations.Add("PelangganBarang", ODS.Tables("Barang").Columns("KodeBar"), ODS.Tables("Pelanggan").Columns("KodeBar")) 'Membuat DataViewManager untuk DataSet ODVM = New DataViewManager(ODS) 'Binding DataViewManager ke DataGrid, DataTable Barang Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.KodeBar")) Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Keterangan")) Me.TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Satuan"))

Page 22: Program VB

Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Harga")) DataGrid1.SetDataBinding(ODVM, "Barang.PelangganBarang") End Sub

MoveFirst, Previous, Next dan Last

Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click Me.BindingContext(ODVM, "Barang").Position = 0 End Sub Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click Me.BindingContext(ODVM, "Barang").Position = ODVM.DataSet.Tables("Barang").Rows.Count End Sub Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click Me.BindingContext(ODVM, "Barang").Position -= 1 End Sub Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click Me.BindingContext(ODVM, "Barang").Position += 1 End Sub

Add, Update, Delete dan Cancel

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click Me.BindingContext(ODVM, "Barang").AddNew() End Sub Private Sub btnUpd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpd.Click Me.BindingContext(ODVM, "Barang").EndCurrentEdit() End Sub Private Sub btnCnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCnc.Click Me.BindingContext(ODVM, "Barang").CancelCurrentEdit() End Sub Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click If (Me.BindingContext(ODVM, "Barang").Count > 0) Then Me.BindingContext(ODVM, "Barang").RemoveAt(Me.BindingContext(ODVM, "Barang").Position) End If End Sub

Update data ke data source

Karena DataSet terdiri dari dua tabel, maka kita perlu mengupdatenya satu-persatu  melalui DataAdapter masing-masing.

Page 23: Program VB

Private Sub Form4_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim oleCB As New OleDbCommandBuilder(ODABarang) Dim oleCP As New OleDbCommandBuilder(ODAPelanggan)

'Update ke masing-masing data source ODABarang.Update(ODS, "Barang") ODAPelanggan.Update(ODS, "Pelanggan") End Sub

Program Kongkrit

Imports System.Data.OleDbPublic Class Form4 Inherits System.Windows.Forms.Form Dim Oledbconn As OleDbConnection Dim ODABarang As OleDbDataAdapter Dim ODAPelanggan As OleDbDataAdapter Dim ODS As New DataSet Dim ODVM As New DataViewManager Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") ODABarang = New OleDbDataAdapter("Select * from Barang", Oledbconn) ODAPelanggan = New OleDbDataAdapter("Select * from Pelanggan", Oledbconn) ODABarang.Fill(ODS, "Barang") ODAPelanggan.Fill(ODS, "Pelanggan") 'Buat Relation antara DataTable Barang (Master) dan Pelanggan (Child) ODS.Relations.Add("PelangganBarang", ODS.Tables("Barang").Columns("KodeBar"), ODS.Tables("Pelanggan").Columns("KodeBar")) 'Membuat DataViewManager untuk DataSet ODVM = New DataViewManager(ODS) 'Binding DataViewManager ke DataGrid, DataTable Barang Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.KodeBar")) Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Keterangan")) Me.TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Satuan")) Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Harga")) DataGrid1.SetDataBinding(ODVM, "Barang.PelangganBarang") End Sub Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click Me.BindingContext(ODVM, "Barang").Position = 0 End Sub Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click Me.BindingContext(ODVM, "Barang").Position = ODVM.DataSet.Tables("Barang").Rows.Count End Sub

Page 24: Program VB

Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click Me.BindingContext(ODVM, "Barang").Position -= 1 End Sub Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click Me.BindingContext(ODVM, "Barang").Position += 1 End Sub Private Sub Form4_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim oleCB As New OleDbCommandBuilder(ODABarang) Dim oleCP As New OleDbCommandBuilder(ODAPelanggan) ODABarang.Update(ODS, "Barang") ODAPelanggan.Update(ODS, "Pelanggan") End Sub Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click Me.BindingContext(ODVM, "Barang").AddNew() End Sub Private Sub btnUpd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpd.Click Me.BindingContext(ODVM, "Barang").EndCurrentEdit() End Sub Private Sub btnCnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCnc.Click Me.BindingContext(ODVM, "Barang").CancelCurrentEdit() End Sub Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click If (Me.BindingContext(ODVM, "Barang").Count > 0) Then Me.BindingContext(ODVM, "Barang").RemoveAt(Me.BindingContext(ODVM, "Barang").Position) End If End SubEnd Class