Misalnya kita ingin mengetahui berapa hari seh range tanggal yang dipilih dari 2 buah datetime picker.
Misalnya terdapat tanggal awal dan tanggal akhir. dan kita ingin tahu berapa hari dari tanggal yang dipilih tersebut, function ini umpamanya akan berguna dalam pembuatan aplikasi Cuti misalnya yang diharuskan mengetahui berapa hari cuti yang diambil dari 2 buat tanggal.
Oke langsung saja, source codenya seperti dibawah ini

   1: Function hitungHari(ByVal dtp1 As DateTimePicker, ByVal dtp2 As DateTimePicker) As Integer
   2:         Dim a, b, c As Integer
   3:         a = dtp1.Value.DayOfYear
   4:         b = dtp2.Value.DayOfYear
   5:         c = dtp2.Value.DayOfYear - dtp1.Value.DayOfYear
   6:         If a > b Then
   7:             MessageBox.Show("Tanggal kedua harus lebih besar dari tanggal pertama", "Peringatan", MessageBoxButtons.OK, MessageBoxIcon.Information)
   8:             Return 0
   9:         ElseIf c > 365 Then
  10:             MessageBox.Show("Tidak boleh lebih dari satu tahun", "Peringatan", MessageBoxButtons.OK, MessageBoxIcon.Information)
  11:             Return 0
  12:         Else
  13:             Return c
  14:         End If
  15: End Function
Cara penggunaannya adalah sebagai berikut :
   1: Dim a As Integer = hitungHari(DateTimePicker1, DateTimePicker2)
   2: MsgBox(a)
Sekian dan terimakasih, semoga membantu.

Maksudnya adalah membuat sebuah combobox yang muncul di DataGridView dan combobox tersebut mempunyai event ataupun hal yang dilakukan jika combobox tersebut di change value nya atau indexnya. 

Oke langsung saja, implementasinya langsung ke contoh project saja yah, sekarang siapkan database access 2003 new database dan kasih nama latihan.mdb. dan buat beberapa table dengan ketentuan seperti berikut :

Relasinya jangan lupa ditentukan yah.

Buat tampilan di VB.NET kira-kira seperti ini dengan nama form nya yaitu frm_Transaksi:

 
Dan setiap objek dikasih nama sesuai dengan fungsinya yah..
Setelah itu new item lagi dan buat class baru dengan nama Cls_Induk.vb
Coding ini di dalam class tersebut :
   1: Imports System.IO
   2: Public Class Cls_Induk
   3:     Private myConnString As String
   4:     Private conn As OleDbConnection
   5:     'constructor
   6:     Public Sub New()
   7:         MyBase.New()
   8:         setConnString()
   9:         conn = New OleDbConnection
  10:         conn.ConnectionString = myConnString
  11:     End Sub
  12:     Private Sub setConnString()
  13:         myConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\latihan.mdb"
  14:     End Sub
  15:     'pembebasan memori
  16:     Private Sub dispose()
  17:         conn = Nothing
  18:         myConnString = Nothing
  19:         GC.SuppressFinalize(Me)
  20:     End Sub
  21:     'destructor
  22:     Protected Overrides Sub Finalize()
  23:         dispose()
  24:     End Sub
  25:     Public ReadOnly Property connString() As String
  26:         Get
  27:             Return myConnString
  28:         End Get
  29:     End Property
  30:     Public Function openDB() As Boolean
  31:         If conn.State = ConnectionState.Open Then
  32:             conn.Close()
  33:         End If
  34:         Try
  35:             conn.Open()
  36:             Return True
  37:         Catch ex As Exception
  38:             Return False
  39:         End Try
  40:     End Function
  41:     Public Sub closeDB()
  42:         If conn.State = ConnectionState.Open Then conn.Close()
  43:     End Sub
  44:     Protected Function getDataTable(ByVal strSQL As String) As DataTable
  45:         Dim myAdapter As OleDbDataAdapter
  46:         Dim myData As New DataTable
  47:         Dim myCommand As OleDbCommand
  48:         openDB()
  49:         myCommand = New OleDbCommand(strSQL, conn)
  50:         myAdapter = New OleDbDataAdapter(myCommand)
  51:         myAdapter.Fill(myData)
  52:         closeDB()
  53:         Return myData
  54:         'pembebasan memori
  55:         myAdapter = Nothing
  56:         myData = Nothing
  57:         myCommand = Nothing
  58:     End Function
  59:     Protected Function getDataSet(ByVal strSQL As String) As DataSet
  60:         Dim myAdapter As OleDbDataAdapter
  61:         Dim myDataSet As New DataSet
  62:         Dim myCommand As OleDbCommand
  63:         openDB()
  64:         myCommand = New OleDbCommand(strSQL, conn)
  65:         myAdapter = New OleDbDataAdapter(myCommand)
  66:         myAdapter.Fill(myDataSet)
  67:         closeDB()
  68:         Return myDataSet
  69:         'pembebasan memori
  70:         myAdapter = Nothing
  71:         myDataSet = Nothing
  72:         myCommand = Nothing
  73:     End Function
  74:     'untuk errors
  75:     Protected Function insert(ByVal strSQL As String) As Boolean
  76:         Return execute(strSQL, "Insert Data")
  77:     End Function
  78:     Protected Function delete(ByVal strSQL As String) As Boolean
  79:         Return execute(strSQL, "Delete Data")
  80:     End Function
  81:     Protected Function update(ByVal strSQL As String) As Boolean
  82:         Return execute(strSQL, "Update Data")
  83:     End Function
  84:     Protected Function search(ByVal strSQL As String) As Boolean
  85:         Dim dt As New DataTable
  86:         dt = getDataTable(strSQL)
  87:         If dt.Rows.Count > 0 Then
  88:             Return True
  89:         Else
  90:             Return False
  91:         End If
  92:     End Function
  93:     Private Function execute(ByVal strSQL As String, ByVal tipePerintah As String) As Boolean
  94:         Try
  95:             Dim myCommand As OleDbCommand
  96:             myCommand = New OleDbCommand(strSQL)
  97:             openDB()
  98:             myCommand.Connection = conn
  99:             myCommand.ExecuteNonQuery()
 100:             closeDB()
 101:             'pembebasan memori
 102:             myCommand = Nothing
 103:             Return True
 104:         Catch ex As Exception
 105:             MessageBox.Show(ex.Message, tipePerintah, MessageBoxButtons.OK)
 106:             Return False
 107:         End Try
 108:     End Function
 109: End Class
Setelah itu buat lagi new item dan tambahkan class baru dengan nama Cls_Transaksi dan coding ini di class tersebut :
   1: Public Class Cls_Transaksi
   2:     Inherits Cls_Induk
   3:     Private strInit As String
   4:     Private KdTransaksi As String
   5:     Private Tanggal As String
   6:     Private Pelanggan As String
   7:     Private KdPetugas As Short
   8:     Private KdProduct As Short
   9:     Private Banyaknya As Integer
  10:     Private SubTotal As Double
  11:     Private Total As Double
  12:     Public Property setStrInit() As String
  13:         Get
  14:             Return strInit
  15:         End Get
  16:         Set(ByVal value As String)
  17:             strInit = value
  18:         End Set
  19:     End Property
  20:     Public Property setKdTransaksi() As String
  21:         Get
  22:             Return KdTransaksi
  23:         End Get
  24:         Set(ByVal value As String)
  25:             KdTransaksi = value
  26:         End Set
  27:     End Property
  28:     Public Property setTanggal() As String
  29:         Get
  30:             Return Tanggal
  31:         End Get
  32:         Set(ByVal value As String)
  33:             Tanggal = value
  34:         End Set
  35:     End Property
  36:     Public Property setPelanggan() As String
  37:         Get
  38:             Return Pelanggan
  39:         End Get
  40:         Set(ByVal value As String)
  41:             Pelanggan = value
  42:         End Set
  43:     End Property
  44:     Public Property setKdPetugas() As Short
  45:         Get
  46:             Return KdPetugas
  47:         End Get
  48:         Set(ByVal value As Short)
  49:             KdPetugas = value
  50:         End Set
  51:     End Property
  52:     Public Property setKdProduct() As Short
  53:         Get
  54:             Return KdProduct
  55:         End Get
  56:         Set(ByVal value As Short)
  57:             KdProduct = value
  58:         End Set
  59:     End Property
  60:     Public Property setBanyaknya() As Integer
  61:         Get
  62:             Return Banyaknya
  63:         End Get
  64:         Set(ByVal value As Integer)
  65:             Banyaknya = value
  66:         End Set
  67:     End Property
  68:     Public Property setSubTotal() As Double
  69:         Get
  70:             Return SubTotal
  71:         End Get
  72:         Set(ByVal value As Double)
  73:             SubTotal = value
  74:         End Set
  75:     End Property
  76:     Public Property setTotal() As Double
  77:         Get
  78:             Return Total
  79:         End Get
  80:         Set(ByVal value As Double)
  81:             Total = value
  82:         End Set
  83:     End Property
  84:     Public Sub New()
  85:         MyBase.New()
  86:         strInit = "SELECT ht.kdTransaksi,ht.Tanggal,p.NmPelanggan,tk.NmToko,pr.NmProduk,pr.Harga,dt.Banyaknya,dt.SubTotal,pt.NmPetugas from tbl_HTransaksi ht,tbl_DTransaksi dt,tbl_Produk pr,tbl_Petugas pt,tbl_Toko tk,tbl_Pelanggan p where ht.KdPelanggan=p.KdPelanggan and dt.KdProduk=pr.KdProduk and ht.KdPetugas=pt.KdPetugas and ht.KdToko=tk.KdToko and ht.KdTransaksi = dt.KdTransaksi"
  87:     End Sub
  88:     Private Sub dispose()
  89:         strInit = Nothing
  90:         GC.SuppressFinalize(Me)
  91:     End Sub
  92:     Protected Overrides Sub Finalize()
  93:         MyBase.Finalize()
  94:         dispose()
  95:     End Sub
  96:     Public Function getAll() As DataTable
  97:         Dim strSQL As String = strInit
  98:         Return MyBase.getDataTable(strSQL)
  99:     End Function
 100:     Public Function getProduk() As DataTable
 101:         Dim strSQL As String
 102:         strSQL = "select NmProduk from tbl_Produk order by KdProduk"
 103:         Return MyBase.getDataTable(strSQL)
 104:     End Function
 105:     Public Function getHargaProduk(ByVal nama As String) As DataTable
 106:         Dim strSQL As String
 107:         strSQL = "select KdProduk,Harga from tbl_Produk where NmProduk='" & nama & "'"
 108:         Return MyBase.getDataTable(strSQL)
 109:     End Function
 110:     Public Function getPetugas() As DataTable
 111:         Dim strSQL As String
 112:         strSQL = "select NmPetugas from tbl_Petugas order by KdPetugas"
 113:         Return MyBase.getDataTable(strSQL)
 114:     End Function
 115:     Public Function getKode(ByVal kode As String, ByVal nama As String, ByVal parNm As String, ByVal tbl As String) As DataTable
 116:         Dim strSQL As String
 117:         strSQL = "select " & kode & " from " & tbl & " where " & nama & " like '" & parNm & "'"
 118:         Return MyBase.getDataTable(strSQL)
 119:     End Function
 120:     Public Function getNoRek() As DataTable
 121:         Dim strSQL As String
 122:         strSQL = "select count(*) from tbl_HTransaksi"
 123:         Return MyBase.getDataTable(strSQL)
 124:     End Function
 125:     Public Overloads Function insertHTransaksi(ByVal obj As Cls_Transaksi) As Boolean
 126:         Dim strSql As String
 127:         strSql = "insert into tbl_HTransaksi values('" & obj.setKdTransaksi _
 128:         & "','" & obj.setTanggal _
 129:         & "','" & obj.setPelanggan _
 130:         & "','" & obj.setKdPetugas _
 131:         & "','" & obj.Total _
 132:         & "')"
 133:         Return MyBase.insert(strSql)
 134:     End Function
 135:     Public Overloads Function insertDTransaksi(ByVal obj As Cls_Transaksi) As Boolean
 136:         Dim strSql As String
 137:         strSql = "insert into tbl_DTransaksi(KdTransaksi,KdProduk,Banyaknya,Subtotal) values('" & obj.setKdTransaksi _
 138:         & "','" & obj.setKdProduct _
 139:         & "','" & obj.setBanyaknya _
 140:         & "','" & obj.setSubTotal _
 141:         & "')"
 142:         Return MyBase.insert(strSql)
 143:     End Function
 144: End Class
Dan terakhir coding ini di dalam form frm_Transaksi
   1: Public Class frm_Transaksi
   2:     Dim listCol As New DataGridViewComboBoxColumn
   3:     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   4:         DataGridView1.Rows.Clear()
   5:         bersih()
   6:     End Sub
   7:     Sub bersih()
   8:         txtJumlah.Text = ""
   9:         txtBayar.Text = ""
  10:         txtKembali.Text = ""
  11:         lblTampil.Text = ""
  12:         txtTuan.Text = ""
  13:     End Sub
  14:     Sub Petugas()
  15:         Dim dt As New DataTable
  16:         dt = TR.getPetugas()
  17:         cmbPetugas.DataSource = dt
  18:         cmbPetugas.DisplayMember = "NmPetugas"
  19:     End Sub
  20:     Sub Norek()
  21:         Dim dt2 As New DataTable
  22:         dt2 = TR.getNoRek
  23:         txtNota.Text = "TRASK000" & dt2.Rows(0).Item(0) + 1
  24:     End Sub
  25:     Sub Produk()
  26:         'Produk
  27:         DataGridView1.Columns.Remove("NamaBarang")
  28:         Dim dt As New DataTable
  29:         dt = TR.getProduk
  30:         listCol.DisplayIndex = 1
  31:         listCol.HeaderText = "NAMA BARANG"
  32:         'Masukkan nama field pada table yang akan di buat listcolom
  33:         listCol.DataPropertyName = "NamaBarang"
  34:         'Mengisi list dari Nama Produk table
  35:         listCol.DataSource = dt
  36:         listCol.DisplayMember = "NmProduk"
  37:         listCol.ValueMember = "NmProduk"
  38:         'Tambahkan column
  39:         DataGridView1.Columns.Add(listCol)
  40:         listCol.Width = 283
  41:     End Sub
  42:     Private Sub frm_Transaksi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  43:         Petugas()
  44:         Norek()
  45:         Produk()
  46:         'Membuat Readolny
  47:         DataGridView1.Columns(2).ReadOnly = True
  48:         DataGridView1.Columns(1).ReadOnly = True
  49:     End Sub
  50:     Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
  51:         Dim cb As ComboBox = TryCast(e.Control, ComboBox)
  52:         If cb IsNot Nothing Then
  53:             If DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value <> "" Then
  54:                 RemoveHandler cb.SelectedIndexChanged, AddressOf DataGridView1_SelectedIndexChanged
  55:                 AddHandler cb.SelectedIndexChanged, AddressOf DataGridView1_SelectedIndexChanged
  56:             Else
  57:                 MessageBox.Show("Isi Data Banyaknya Terlebih Dahulu")
  58:             End If
  59:           End If
  60:     End Sub
  61:     Private Sub DataGridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
  62:         Try
  63:             'Ketikkan sintaks untuk menampilkan data yang di inginkan
  64:             Dim comboBox1 As ComboBox = CType(sender, ComboBox)
  65:             Dim dt As New DataTable
  66:             dt = TR.getHargaProduk(comboBox1.Text)
  67:             DataGridView1.Rows(DataGridView1.CurrentRow.Index).Cells(1).Value = dt.Rows(0).Item("Harga")
  68:             Hitung()
  69:             Total()
  70:             txtBayar.ReadOnly = False
  71:             btnSimpan.Enabled = True
  72:         Catch
  73:             MessageBox.Show("Pilih produknya yah...!! ", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information)
  74:             Exit Try
  75:         End Try
  76:     End Sub
  77:     Sub Hitung()
  78:         DataGridView1.Item(2, DataGridView1.CurrentRow.Index).Value = Format(CInt(DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value) * CInt(DataGridView1.Item(1, DataGridView1.CurrentRow.Index).Value), "Currency")
  79:     End Sub
  80:     Sub Total()
  81:         Dim Total As Double = 0
  82:         For i As Integer = 0 To DataGridView1.Rows.Count - 2
  83:             Total = Total + CDbl(DataGridView1.Item(2, i).Value)
  84:         Next i
  85:         txtJumlah.Text = Total
  86:         lblTampil.Text = Total
  87:     End Sub
  88:     Dim TR As New Cls_Transaksi
  89:     Sub InsertSet()
  90:         'insert ke Header Transaksi
  91:         Dim dt, dt1, dt2, dt3 As New DataTable
  92:         'mencari kode masing-masing dari table master
  93:         dt1 = TR.getKode("KdPetugas", "NmPetugas", cmbPetugas.Text, "tbl_Petugas")
  94:         TR.setKdPetugas = CInt(dt1.Rows(0).Item("KdPetugas"))
  95:         TR.setPelanggan = txtTuan.Text
  96:         TR.setKdTransaksi = txtNota.Text
  97:         TR.setTanggal = DateTimePicker1.Text
  98:         TR.setTotal = txtJumlah.Text
  99:         TR.insertHTransaksi(TR)
 100:         'insert ke Detail Transaksi sesuai dengan data yang di inputkan ke DATAGRIDVIEW oleh user
 101:         For i As Integer = 0 To DataGridView1.Rows.Count - 2
 102:             dt3 = TR.getKode("KdProduk", "NmProduk", DataGridView1.Item(3, i).Value, "tbl_Produk")
 103:             TR.setKdProduct = CInt(dt3.Rows(0).Item("KdProduk"))
 104:             TR.setBanyaknya = CInt(DataGridView1.Item(0, i).Value)
 105:             TR.setSubTotal = CDbl(DataGridView1.Item(2, i).Value)
 106:             TR.insertDTransaksi(TR)
 107:         Next i
 108:     End Sub
 109:     Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click
 110:         If txtTuan.Text = "" Then
 111:             MessageBox.Show("Tentukan atau isi terlebih dahulu nama pelanggan", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information)
 112:         Else
 113:             If CDbl(txtBayar.Text) > CDbl(txtJumlah.Text) Then
 114:                 btnTRBaru.Enabled = True
 115:                 InsertSet()
 116:                 MessageBox.Show("Data Tersimpan", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information)
 117:                 btnSimpan.Enabled = False
 118:             Else
 119:                 MessageBox.Show("Anda uangnya kurang", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information)
 120:                 txtBayar.Text = ""
 121:                 txtBayar.Focus()
 122:             End If
 123:         End If
 124:     End Sub
 125:     Private Sub btnTRBaru_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTRBaru.Click
 126:         DataGridView1.Rows.Clear()
 127:         bersih()
 128:         btnSimpan.Enabled = True
 129:         btnTRBaru.Enabled = False
 130:         Norek()
 131:     End Sub
 132:     Private Sub txtBayar_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtBayar.KeyPress
 133:         If e.KeyChar = Chr(13) Then
 134:             txtKembali.Text = CDbl(txtBayar.Text) - CDbl(txtJumlah.Text)
 135:             lblTampil.Text = CDbl(txtBayar.Text) - CDbl(txtJumlah.Text)
 136:         End If
 137:     End Sub
 138:     Private Sub btnKeluar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKeluar.Click
 139:         If MessageBox.Show("Apakah anda yakin akan keluar dari program ini ..??", "Konfirmasi", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
 140:             Me.Close()
 141:         End If
 142:     End Sub
 143: End Class
Untuk lebih jelasnya silahkan download programnya disini