Mengenal DataGrid DataGrid merupakan komponen yang disediakan pada VB6 untuk menampilkan data dalam bentuk tabel. Untuk menggunakan DataGrid, anda perlu mengikut sertakan Microsoft DataGrid Control 6.0. Maka pada toolbox anda akan bertambah DataGrid control. Menggunakan DataGrid dengan ADODC 1. Tanamkan pada form sebuah ADODC dan DataGrid Indoprog 1
Dengan connection string sebagai berikut : Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False Dan RecordSource ke tabel Customers 2. Aturlah properties DataGrid, DataSource ke ADODC1 Indoprog 2
3. Klik kanan pada DataGrid, dan pilih Retrieve fields Dan Pilih Yes Dan otomatis field-field yang ada pada tabel Customers akan ditampilkan pada DataGrid Indoprog 3
4. Anda dapat mengatur kolom pada DataGrid seperti menambah, mengurangi ataupun menghapus pada Modus Edit, dengan klik kanan pada DataGrid1, dan pilih Edit Pada Modus Edit, jika klik kanan dilakukan, maka tampilkan popup menu akan berubah menjadi sebagai berikut ini : Misalnya anda ingin menghapus kolom CompanyName, maka anda dapat memilih kolom CompanyName, dan klik kanan serta memilih Delete. Memanfaatkan Split untuk membuat Freeze Column 1. Pada modus Edit pilih Split Indoprog 4
2. Dan pada DataGrid akan terpisah menjadi dua jendela. Sembunyikan kolom-kolom pada jendela 1 dengan hanya menyisakan kolom CustomerId, dengan klik kanan pada DataGrid1, dan pilih properties, kemudian pada kolom Layout, pada Split0, dan lakukan untuk kolom CompanyName, kemudian hilangkan tanda check pada properti Visible Lakukan juga untuk kolom-kolom yang lain, dengan menyisakan kolom Customer Id. Indoprog 5
Sehingga tampilan menjadi sebagai berikut : 3. Kemudian hilangkan Record Selector untuk Split1 Indoprog 6
Sehingga menjadi sebagai berikut : 4. Kemudian atur ukuran Split sebesar ukuran CustomerId Indoprog 7
5. Kemudian buang tanda check pada AllowSizing pada Split 0, ScrollBars set ke dbghorizontal 6. Dan akhirnya menjadi sebagai berikut : Indoprog 8
5. Buatlah Referensi ke Microsoft ActiveX Data Object Menggunakan DataGrid dengan ADO 1. Tanamkan sebuah DataGrid pada Form 2. Kemudian pada event Form_Load, lakukan koding berikut ini : Dim MyConn As New Connection Dim Rs As New Recordset Private Sub Form_Load() Dim Col As Column MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False" MyConn.CursorLocation = aduseclient MyConn.Open Rs.Open "Customers", MyConn, adopendynamic, adlockoptimistic Set DataGrid1.DataSource = Rs DataGrid1.Splits.Add (1) For Each Col In DataGrid1.Splits(0).Columns If Col.ColIndex > 0 Then Col.Visible = False Indoprog 9
Next Col DataGrid1.Splits(0).ScrollBars = dbghorizontal DataGrid1.Splits(1).RecordSelectors = False DataGrid1.Splits(0).Size = 30 DataGrid1.Splits(0).AllowSizing = False End Sub Indoprog 10
Mengenal TrueDbGrid Pada visual basic 6.0 telah tersedia Microsoft DataGrid, tetapi grid bawaan ini kadangkadang tidak memenuhi kebutuhan pemakai. Salah satu komponen Grid yang disediakan oleh pihak ketiga (http://www.componentone.com) yang cukup populer dikalangan programmer VB adalah TrueDbGrid. Anda perlu mendownload dan menginstalasi TrueDbGrid sebelum dapat digunakan pada project anda. Setelah instalasi anda dapat memanfaatkan TrueDbGrid dengan menu Project, Components, ComponentOne TrueDbgrid Pro 7.0 (OLEDB) untuk pemakaian dengan ADO. Sesaat setelah dimasukan kedalam project, pada toolbar anda akan bertambah dua kontrol yaitu : TDBDropDown dan TDBGrid. Indoprog 11
Menampilkan data dengan TrueDbGrid Salah satu pemakaian TrueDbGrid adalah untuk menampilkan data. Pada TrueDbGrid tersedia berbagai keunggulan seperti Split, Filter Bar. Dan Lakukan koding berikut Dim MyConn As New Connection Dim Rs As New Recordset Private Sub Form_Load() Dim Split0 As TrueOleDBGrid70.Split Dim Split1 As TrueOleDBGrid70.Split Dim Col As Column MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False" MyConn.CursorLocation = aduseclient MyConn.Open Rs.Open "Customers", MyConn, adopendynamic, adlockoptimistic Set TDBGrid1.DataSource = Rs Set Split0 = TDBGrid1.Splits.Add(0) For Each Col In Split0.Columns If Col.ColIndex > 0 Then Col.Visible = False Next Col Split0.ScrollBars = dbgautomatic Split0.SizeMode = dbgnumberofcolumns Split0.Size = 1 Set Split1 = TDBGrid1.Splits(1) Split1.RecordSelectors = False TDBGrid1.Refresh End Sub Indoprog 12
Membuat Baris berbeda Warna Dengan koding sebagai berikut : Dim MyConn As New Connection Dim Rs As New Recordset Private Sub Form_Load() Dim Split0 As TrueOleDBGrid70.Split Dim Split1 As TrueOleDBGrid70.Split Dim Col As Column MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False" MyConn.CursorLocation = aduseclient MyConn.Open Rs.Open "Customers", MyConn, adopendynamic, adlockoptimistic Set TDBGrid1.DataSource = Rs Set Split0 = TDBGrid1.Splits.Add(0) For Each Col In Split0.Columns If Col.ColIndex > 0 Then Indoprog 13
Col.Visible = False Next Col Split0.ScrollBars = dbgautomatic Split0.SizeMode = dbgnumberofcolumns Split0.Size = 1 Set Split1 = TDBGrid1.Splits(1) Split1.RecordSelectors = False Split0.AlternatingRowStyle = True Split1.AlternatingRowStyle = True Split0.EvenRowStyle.BackColor = RGB(&HCC, &HCC, &HCC) Split1.EvenRowStyle.BackColor = RGB(&HCC, &HCC, &HCC) TDBGrid1.Refresh End Sub Memanfaatkan Filterbar Dim MyConn As New Connection Dim Rs As New Recordset Private Sub Form_Load() Dim Split0 As TrueOleDBGrid70.Split Dim Split1 As TrueOleDBGrid70.Split Dim Col As Column MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False" MyConn.CursorLocation = aduseclient MyConn.Open Rs.Open "Customers", MyConn, adopendynamic, adlockoptimistic Set TDBGrid1.DataSource = Rs Set Split0 = TDBGrid1.Splits.Add(0) For Each Col In Split0.Columns If Col.ColIndex > 0 Then Col.Visible = False Next Col Split0.ScrollBars = dbgautomatic Split0.SizeMode = dbgnumberofcolumns Indoprog 14
Split0.Size = 1 Set Split1 = TDBGrid1.Splits(1) Split1.RecordSelectors = False Split0.AlternatingRowStyle = True Split1.AlternatingRowStyle = True Split0.EvenRowStyle.BackColor = RGB(&HCC, &HCC, &HCC) Split1.EvenRowStyle.BackColor = RGB(&HCC, &HCC, &HCC) 'Mengaktifkan Filter Bar Split0.FilterBar = True Split1.FilterBar = True TDBGrid1.AllowUpdate = False TDBGrid1.Refresh End Sub Private Sub TDBGrid1_FilterChange() Dim Filter As String Dim Col As Integer Col = TDBGrid1.Col TDBGrid1.HoldFields Filter = "" For I = 0 To TDBGrid1.Columns.Count - 1 If TDBGrid1.Columns(I).FilterText <> "" Then If Filter <> "" Then Filter = Filter & " And " Filter = Filter & TDBGrid1.Columns(I).DataField & " Like '" & _ TDBGrid1.Columns(I).FilterText & "*'" Next I Rs.Filter = Filter TDBGrid1.Col = Col TDBGrid1.EditActive = True End Sub Private Sub TDBGrid1_KeyPress(KeyAscii As Integer) If KeyAscii = 27 Then For I = 0 To TDBGrid1.Columns.Count - 1 TDBGrid1.Columns(I).FilterText = "" Next I Rs.Filter = "" End Sub Pemanfaatan TrueDBGrid untuk Entry Data TrueDBGrid dapat digunakan untuk entry data langsung dengan mengatur properti AllowUpdate, dan AllowAddNew menjadi True, dengan syarat recordset tidak diopen secara readonly. Beberapa event yang berhubungan dengan Entry data pada kolom yang dapat diprogram adalah sebagai berikut : Private Sub DGrid_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, cancel As Integer) If ColIndex = 2 Then Indoprog 15
If ThisDocType = "4" Or ThisDocType = "6" Then Call FindPart_No(DGrid.Columns(2).Value, Part_Name, Harga_Pokok, Harga_Jual, cancel) Else Call FindItemRetur(DGrid.Columns(2).Value, txtnodoc.text, Part_Name, Qty, Price, PDisc, Cash_Disc, Net_Price, cancel) End Sub Private Sub DGrid_AfterColUpdate(ByVal ColIndex As Integer) If ColIndex = 2 Then If ThisDocType = "4" Or ThisDocType = "6" Then DGrid.Columns(3).Value = Part_Name DGrid.Columns(4).Value = 1 DGrid.Columns(5).Value = Harga_Jual DGrid.Columns(6).Value = 0 DGrid.Columns(7).Value = 0 Else DGrid.Columns(3).Value = Part_Name DGrid.Columns(4).Value = Qty DGrid.Columns(5).Value = Price DGrid.Columns(6).Value = PDisc DGrid.Columns(7).Value = Cash_Disc DGrid.Columns(8).Value = Net_Price Call HitungDetails lchange = True End Sub Indoprog 16