Anda di halaman 1dari 55

Modul 1

Mengenal ADOX

ADOX merupakan objek untuk data definition (seperti table, view, dan index). Jadi anda dapat
membuat/menangani database dengan menggunakan ADOX.

Untuk memanfaatkan ADOX dalam project anda perlu mengikut sertakannya dengan menu
Tools, References, dan memberikan tanda Check pada "Microsoft ADO Ext. 2.1 for DDL
and Security."

Membuat Database

Database pada ADOX merupakan suatu Catalog. Catalog ini harus dibuka dengan suatu
connection string. Connection string menggunakan tata cara penulisan sebagai berikut :

Provider=Microsoft.Jet.OLEDB.4.0;
Database=database file name;

Contoh :

Dim cat As ADOX.Catalog


cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Pegawai.mdb;"

Membuat Tabel

Anda dapat membuat suatu tabel dengan menambahkannya kedalam Collection Tables yang
terdapat pada Catalog.

Contoh :

Dim Tbl As ADOX.Table

tbl.Name = "tblPegawai"
tbl.Columns.Append "Nip", adVarWChar, 5
tblColumns(“Nip”).Attributes = adColFixed
tbl.Columns.Append "Nama", adVarWChar, 5

1
cat.Tables.Append tbl

Pada contoh diatas akan membuat sebuah Tabel baru dengan nama tblPegawai yang
memiliki dua kolom, yaitu kolom NIP (tidak boleh null) dan Nama.

Membuat Primary Key


Primary key pada tabel sangat penting untuk integritas data pada tabel. Untuk membuat
primary key anda dapat menambahkannya pada Collection Keys

Contoh :

tbl.Keys.Append "P_Key", adKeyPrimary, "Nip"

Pada contoh diatas akan membuat kolom Nip sebagai Primary key dengan nama P_Key.

Membuat Index

Anda dapat langsung menambahkan index pada Collection Indexes ataupun dengan
membuat objek index terlebih dahulu yang kemudian ditambahkan ke Collection Indexes.

tbl.Indexes.Append "Idx_Nama", "Nama"

atau

Dim idx as Index


idx.Name = "Idx_Nama"
idx.Columns.Append "Nama"
tbl.Indexes.Append idx

Membuat foreign key untuk relation antar tabel, dan referensial integrity.

Pada model relational database, adalah sangat penting untuk membuat relation antar tabel untuk
memastikan integritas data.

Misalnya kita memiliki dua buah tabel, yaitu tblPegawai dan tblJabatan, dimana kedua tabel
tersebut berhubungan berdasarkan kolom Jabatan.

Contoh :

tbl.Keys.Append "PegawaiJabatan", adKeyForeign, "Jabatan", "tblJabatan", "Jabatan"

Contoh Kongkrit :

Public Sub CiptaCatalog(xpath As String)


Dim cat As New ADOX.Catalog

2
Dim tbl As ADOX.Table

'Membuat database Pegawai.Mdb


cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Pentacom.mdb;"

'membuat tabel tblJabatan dan kolom-kolomnya


Set tbl = New ADOX.Table
tbl.Name = "tblJabatan"
tbl.Columns.Append "Jabatan", adVarWChar, 3
tbl.Columns.Append "NamaJabatan", adVarWChar, 30
tbl.Columns.Append "GajiPokok", adCurrency
tbl.Columns.Append "Tunjangan", adCurrency
cat.Tables.Append tbl
'membuat primary key
tbl.Keys.Append "P_Key", adKeyPrimary, "Jabatan"

'Membuat tabel tblPegawai dan kolom-kolomnya Set


tbl = New ADOX.Table
tbl.Name = "tblPegawai"
tbl.Columns.Append "Nip", adVarWChar, 5
tbl.Columns("Nip").Attributes = adColFixed
tbl.Columns.Append "Nama", adVarWChar, 5
tbl.Columns.Append "Jabatan", adVarWChar, 3
cat.Tables.Append tbl
'membuat primary key
tbl.Keys.Append "P_Key", adKeyPrimary, "Nip"

'membuat index
tbl.Indexes.Append "Idx_Nama", "Nama"
tbl.Keys.Append "PegawaiJabatan", adKeyForeign, "Jabatan", "tblJabatan", "Jabatan" End
Sub

Sub Main()
Dim cfolder As String
cfolder = App.Path
If Dir(cfolder & "\Pentacom.Mdb") <> "" Then
Call CiptaCatalog(cfolder & "\PentaCom.Mdb") End
If
End Sub

Membuat Database dengan Password

Anda dapat membuat database dengan menambahkan Jet OLEDB:Database


Password=password; pada connection string saat catalog dibuat.

Contoh :

3
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Pentacom.mdb; Jet
OLEDB:Database Password=PentaCom;"
Membuat View pada database

Untuk membuat view anda membutuhkan object command yang terdapat pada ADO.

Contoh :

Dim cmd As New ADODB.Command

cmd.CommandText = "Select Nip,Nama,NamaJabatan From Pegawai Inner Join Jabatan On


Pegawai.Jabatan=Jabatan.Jabatan"
cat.Views.Append "PegawaiDtl", cmd

Membuat kolom Autonumber

Anda dapat membuat kolom Autonumber dengan menggunakan, dimana kolom harus
bertype long.

col.Properties("AutoIncrement") = True

Melakukan Compact Database

Dim jr As New JRO.JetEngine


jr.CompactDatabase "Data Source=C:\PentaCom.Mdb; Jet OLEDB:Database
Password=Pentacom;", _
"Data Source=C:\PentaComNew.Mdb;Jet OLEDB:Database
Password=Pentacom;"
Kill "C:\PentaCom.mdb"
Name "C:\PentaComNew.mdb" As "C:\PentaCom.Mdb"

Cara diatas dapat juga digunakan untuk mengganti password database.

Project VB
Sebagai contoh implementasi ini kita akan membuat suatu program Persediaan yang dibatasi
secara sederhana.

Buatlah database Persediaan dengan struktur sebagai berikut :

Barang
KodeBarang Text (5) PrimaryKey
Keterangan Text (30)
Satuan Text (3)
HargaJual Currency
b0 Double Saldo Awal Tahun
b1 Double Saldo Bulan Januari

4
b2 Double Dst
b3 Double
b4 Double
b5 Double
b6 Double
b7 Double
b8 Double
b9 Double
b10 Double
b11 Double
b12 Double

Pemasok
KodePemasok Text (5) PrimaryKey
Nama Text (30)
Alamat1 Text (30)
Alamat2 Text (30)
Alamat3 Text (30)
Attn Text (30)

Beli
Nomor AutoIncrement PrimaryKey
Tanggal Date
KodePemasok Text (5)
Total Currency

BeliDtl
KodeBarang Text (5)
Keterangan Text (30)
Qty Double
HargaBeli Currency
Jumlah Currency
Nomor Long
DtlId AutoIncrement PrimaryKey

Untuk Tabel Pelanggan, Jual, dan JualDtl Rancang Sendiri.


Lengkapi Juga Database Persediaan diatas dengan Relasi antar table.

5
Modul 2
Mengenal ADODC

AdoDC merupakan data control yang disediakan Visual Basic 6.0 untuk menggantikan data
control yang berbasis DAO.

Salah satu keunggulan AdoDC adalah kemampuan mengakses database Access 2000
(dengan menggunakan Microsoft.Jet.OLEDB.4.0).

Untuk memanfaatkan AdoDC, anda perlu menambahkan komponen ini kedalam project
anda dengan menu tools, components, “Microsoft ADO Data Control 6.0 (OLEDB)”.

ADODC merupakan suatu jembatan antara user interface anda dengan OLEDB.

OLEDB merupakan suatu himpunan dari Component Object Model (COM) yang
menyediakan akses secara seragam ke berbagai data yang disimpan dalam format yang
berbeda.

Mengenal Connection String

Kunci dari pemanfaatan ADODC adalah connection string yang menentukan jenis
provider, dan data source yang akan digunakan.

Adapun tata cara penulisan connection string adalah sebagai berikut :

Provider=nama provider;
Data Source=nama data source;
Jet OLEDB:Database Password=password;

Contoh :
Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Pentacom.mdb;Jet
OLEDB:Database Password=Pentacom;

Anda dapat juga membuat connection string dengan bantuan Properties Page yang
diaktifkan dengan klik kanan pada ADODC dan pilih properties.

6
Properti ADODC

Berikut ini beberapa properti yang mempengaruhi prilaku dari ADODC :

Properti Fungsi
Align Mengatur pemerataan kontrol pada form
BOFAction Menentukan aksi yang akan dilakukan ketika pointer mencapai BOF
EOFAction Menentukan aksi yang akan dilakukan ketika pointer mencapai EOF
CommandTimeOut Menentukan jumlah detik timeout tunggu hasil eksekusi command.
CommandType Menentukan jenis recordsource, adCmdText = Sql statement, adCmdTable =
nama tabel
ConnectionTimeOut Menentukan jumlah detik timeout tunggu usaha koneksi/pembukaan ke Data
Source.
CursorLocation Menentukan lokasi Cursor, adUseClient atau adUseServer.
CursorType Menentukan jenis Cursor recordset.
adOpenStatic, suatu cursor static yang cocok jika anda bertujuan menampilkan
data. Penambahan, perubahan, penghapusan oleh user lain tidak kelihatan.
adOpenKeyset, suatu cursor keyset dimana perubahan oleh user lain akan
kelihatan, kecuali penambahan, dan record yang dihapus tidak dapat diakses, dan
efektif kalau adUseClient.
adOpenDynamic, suatu cursor dynamic yang mana penambahan, perubahan,
dan penghapusan oleh user lain akan kelihatan. Merupakan jenis cursor yang
paling boros resource dan lambat dan tidak didukung oleh Jet OLEDB.
LockType Menentukan jenis mekanisme penguncian pada sumber record yang dipakai
beberapa user.
adLockReadOnly, tidak ada penguncian yang dilakukan, karena data hanya
ReadOnly
adLockPessimistic, penguncian dilakukan sesaat data diperbaiki untuk
memastikan keberhasilan proses update. Efektif kalau adUseServer.
adLockOptimistic, penguncian dilakukan pada saat metode Update dipanggil.
adLockBatchOptimistic, update data dilakukan setelah metode UpdateBatch
dipanggil. Pemanggilan metode Update hanya mengupdate cache lokal.
Mode Menentukan jenis modus pembukaan koneksi.
adModeUnknown, membuka secara share
adModeShareExclusive, membuka koneksi secara Exclusive.
RecordSource Nama table (adCmdTable), SQL statement (adCmdText)

7
Catatan :
Pemakaian CursorLocation akan mempengaruhi perfomance dari recordset, dan
efektifitas dari jenis cursor recordset. Contoh berdasarkan hasil percobaan, ternyata efek
adOpenKeyset, dan adLockPessimistic akan efektif kalau digunakan adUseServer.
Pemakaian CursorLocation dan CursorType sangat dipengaruhi jenis provider yang
digunakan.

Bound Control

Salah satu teknik pengolahan data pada VB adalah menggunakan metoda bound (ikat),
yang dapat diatur dengan property :

DataSource = nama kontrol AdoDc


DataField = nama field.
DataFormat = jenis format tampilan

Project

Buatlah program entry data sederhana dengan AdoDC untuk Barang, Pemasok dan
Pelanggan.

8
Modul 3
Mengenal ADO

ADO (ActiveX Data Objects) merupakan object pengolahan data non visual, sehingga
dalam pemakaiannya anda perlu mereferensikan project anda melalui menu :

Tools, References, Microsoft ActiveX Objects Library 2.x.

Secara umum fungsi ADO menyerupai ADODC, dimana perbedaannya adalah ADODC
adalah object visual (menampilkan recordset navigator pada form), dan menyediakan property
window pada saat design, sedangkan pengaturan koneksi dan properti ADO harus dilakukan
secara koding.

Perbedaan antara DAO dan ADO adalah Model ADO dibagi menjadi tiga object yaitu
ADO, ADOX dan JRO, sedangkan untuk semua fungsi tersebut tersedia menjadi satu
object pada DAO. Jadi dapat disimpulkan bahwa pada ADO kita cukup mereferensikan
project kita pada object yang dibutuhkan dan otomatis akan menghemat resource memori.

Pada prinsipnya ADO berlaku sebagai Data Manipulation Language, sedangkan ADOX
berlaku sebagai Data Definition Language.

ADO object model

Object Connection mewakili suatu sesi hubungan ke


sumber data.

Object Command merupakan definisi dari perintah


yang akan dieksekusi terhadap sumber data. Hasil
eksekusi dapat berupa recordset ataupun tanpa
recordset.

Recordset merupakan himpunan record-record yang


merupakan hasil query dari command terhadap sumber data.

Bekerja dengan ADO

Langkah awal dari pemakaian ADO adalah mendeklarasikan variabel untuk connection dan
mempersiapkan connection string, dan membuka connection.

Contoh :

Public MyConn As New Connection


MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
source=C:\PentaCom.Mdb;Jet OLEDB:Database password=Pentacom;"
MyConn.ConnectionTimeOut = 30 ‘Default 15
MyConn.Mode = adModeUnknown

9
MyConn.CursorLocation = adUseClient
MyConn.Open

Catatan : Anda dapat membuka koneksi pada suatu Sub Main, sehingga koneksi tersebut
dapat digunakan pada seluruh modul pada project anda.

Selanjutnya anda dapat menggunakan MyConn untuk menjalankan perintah SQL ataupun
membuka recordset.

Contoh menjalankan perintah SQL

sSQL = “Update Barang Set b1 = b1 + 10 Where KodeBarang=’PCP417GZ’;”


MyConn.Execute sSQL

Contoh membuka recordset

Dim MyRs As New Recordset


MyRs.Open "Barang", MyConn, adOpenKeyset, adLockOptimistic

Metoda pada recordset

Untuk melakukan navigasi pada recordset anda dapat menggunakan metoda MoveFirst,
MovePrevious, MoveNext dan MoveLast, dan Move.

Contoh :

MyRs.MovePrevious
MyRs.Move 3, adBookmarkCurrent

Untuk menambah data dapat menggunakan metoda AddNew, proses update record dan
diakhiri dengan metoda Update

Contoh :

MyRs.AddNew
MyRs(“KodeBarang”) = “PCP424GZ”
MyRs(“Keterangan”) = “PentaCom PC P4 2.4 GHz”

MyRs.Update

Untuk memperbaiki data pada record yang aktif dapat langsung proses update dan
diakhiri dengan metoda Update

MyRs(“Keterangan”) = “PentaCom PC P4 2.4 GHz (new)”



MyRs.Update

10
Catatan : Anda dapat menggunakan metoda CancelUpdate untuk membatalkan perubahan
pada record sebelum metoda Update dilakukan.

Untuk menghapus data dapat menggunakan metoda Delete, sesaat setelah delete record
tersebut tidak dapat diakses lagi sehingga anda perlu memindahkan posisi record.

Contoh :

MyRs.Delete
MyRs.Movenext

Untuk mencari data anda dapat menggunakan metoda find yang diikuti dengan kriteria
pencarian, skip, arah pencarian, dan bookmark.

Contoh :

sKriteria = ‘kodebarang =’PCP417GZ’”


MyRs.MoveFirst
MyRs.Find sKriteria, 0, adSearchForward

Anda dapat merefresh recordset dengan metoda ReQuery, dan menutup recordset dengan
metoda Close.

Memahami Event pada Recordset

Pemakaian recordset dapat disertai dengan pemanfaatan Event-event yang tersedia.


Untuk menggunakan Event ini anda perlu mendeklarasikan variabel Recordset dengan
perintah Dim WithEvents.

Contoh :

Dim WithEvents MyRs As Recordset


Set MyRs = New Recordset
MyRs.Open "Barang", MyConn, adOpenKeyset, adLockOptimistic

Event WillMove dan MoveComplete


Event WillMove akan dibangkitkan sebelum proses pemindahan posisi record dilakukan,
dan event MoveComplete akan dibangkitkan setelah proses pemindahan posisi record.

Private Sub MyRs_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As


ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)

Private Sub MyRs_MoveComplete(ByVal adReason As ADODB.EventReasonEnum,


ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal
pRecordset As ADODB.Recordset)

11
adReason, berisi nilai penyebab event ini dibangkitkan adRsnMoveFirst,
adRsnMoveLast, adRsnMoveNext, adRsnMovePrevious, adRsnMove or
adRsnRequery.

pError , merupakan suatu object Error yang menerangkan error yang terjadi jika nilai
adStatus adalah adStatusErrorsOccurred; selain itu tidak ada nilainya.

pRecordset, merupakan object recordset dimana event ini terjadi.

Memahami Command
Command merupakan suatu object yang berisi perintah yang akan dijalankan terhadap
sumber data.

Contoh pemanfaatan command :

Dim MyCmd As New Command


MyCmd.ActiveConnection = MyConn
MyCmd.CommandType = adCmdTable
MyCmd.CommandText = "tblPegawai"
Set MyRs = New Recordset
MyRs.CursorType = adOpenKeyset
MyRs.LockType = adLockOptimistic
Set MyRs = MyCmd.Execute

Untuk menjalankan SQL anda perlu mengubah CommandType menjadi adCmdText

Project

Buatlah Entry data untuk Tabel Barang, Pelanggan dan Pemasok secara koding ADO dan
unbound.

12
Modul 4
Membuat User Control

Visual basic memberikan kesempatan kepada programmer untuk membuat


kontrolkontrol ciptaan yang dapat digunakan berulang pada project.

Suatu user control dapat dibuat dengan menu Project, Add User control, kemudian pilih user
control. Akan ditampilkan suatu form tanpa border dimana anda merancang user
kontrol anda.

Berikut ini adalah contoh pembuatan control Textbox yang dimodifikasi.


1. Ganti nama UserControl1 menjadi MyTextbox
2. Tanamkan sebuah Textbox pada form user control
3. Ganti Properti Text pada Textbox menjadi MyTextbox
4. Memprogram Event UserControl_Resize() agar ukuran textbox mengikuti ukuran
UserControl ketika ditanamkan pada form.

Private Sub UserControl_Resize()


Text1.Move 0, 0, UserControl.Width, UserControl.Height
End Sub

5. Lakukan pemrograman terhadap Event Text1_Keypressed untuk memindahkan


fokus ketika pemakai menekan Enter.

Private Sub Text1_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
SendKeys "{Tab}"
KeyAscii = 0
End If
End Sub

6. Tutup UserControl, dan tanamkan pada form anda, perhatikan properti dan event
yang tersedia pada UserControl anda.

Mapping properti textbox ke Usercontrol, misalnya kita ingin mengakses nilai pada
textbox pada form, dalam hal ini tentu saja kita perlu membypass properti Text pada
textbox ke Usercontrol.

7. Pada menu tools, add procedure, tambahkan property Text, dan set menjadi Public

Lakukan koding berikut :

Public Property Get Text() As Variant


Text = Text1.Text
End Property
Public Property Let Text(ByVal vNewValue As Variant)

13
Text1.Text = vNewValue
PropertyChanged "Text"
End Property

8. Lakukan koding untuk Event ReadProperties dan WriteProperties UserControl.

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)


Text1.Text = PropBag.ReadProperty("Text", "")
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)


Call PropBag.WriteProperty("Text", Text1.Text, "")
End Sub

Sekarang perhatikan kembali kontrol yang telah ditanam, apakah disana sudah terdapat
properti text

Anda dapat juga membuat properti ciptaan, misalnya properti DataType yang dapat terdiri
dari “Numeric”, “Text”

9. Deklarasi variable berikut pada General Declaration

Dim sDataType As String

10. Tambahkan property Let dan Get untuk data type

Public Property Get DataType() As String


DataType = sDataType
End Property

Public Property Let DataType(ByVal vNewValue As String)


sDataType = vNewValue
PropertyChanged "DataType"
End Property

11. Tambahkan baris berikut pada UserControl_ReadProperties

sDataType = PropBag.ReadProperty("DataType", "Text")

Tambahkan baris berikut pada UserControl_WriteProperties

Call PropBag.WriteProperty("DataType", sDataType, "Text")


Modifikasi Event Keypressed untuk Text1

Private Sub Text1_KeyPress(KeyAscii As Integer)

14
If KeyAscii = 13 Then
SendKeys "{Tab}"
KeyAscii = 0
ElseIf KeyAscii > 32 And KeyAscii < 128 Then
Select Case LCase(sDataType)
Case "numeric"
sLimit = "[0-9,.,,]"
Case "text"
sLimit = ""
End Select
If sLimit <> "" Then
If Not Chr(KeyAscii) Like sLimit Then
KeyAscii = 0
End If
End If
End If
End Sub

Anda dapat juga membuat Event yang dibangkitkan dengan efek tertentu, misalnya kita
akan membuat Event PressF1 yang akan dibangkitkan ketika pemakai menekan F1 pada
textbox.

12. Deklarasi Event berikut pada General Declaration

Event PressF1()

13. Event tersebut akan dibangkitkan dengan koding berikut :

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If


KeyCode = vbKeyF1 Then
RaiseEvent PressF1
End If
End Sub

Anda dapat juga membuat Metoda untuk kontrol anda, misalnya membuat Metoda
ToUpper untuk mengubah isi kontrol anda menjadi huruf besar.

14. Metoda dibuat dengan Sub yang bersifat Public

Public Sub ToUpper()


Text1.Text = UCase(Text1.Text)
End Sub

Project

Lengkapi MyTextbox dengan property berikut :

15
1. MaxLength, berfungsi membatasi panjang ketikan
2. Capital, berfungsi membuat ketikan langsung menjadi huruf bersar walaupun caps
lock dimatikan.

Lengkapi MyTextbox dengan mapping property berikut dari Textbox :

1. Locked
2. Enabled

16
Modul 5, Mengenal Class
Pada modul ini kita akan terfokus pada pemodelan dan pengembangan Class yang akan
digunakan pada project program Persediaan. Pada tahap ini sangat membutuhkan
kemampuan perencanaan dan perancangan.

Class merupakan suatu cetak biru dari object. Jika dibandingkan dengan Usercontrol
yang merupakan cetak biru untuk object Visual, maka class merupakan cetak biru untuk
object non Visual.

Salah satu issue dari pemanfaatan Usercontrol adalah pemakaian berulang-ulang, dan
kemudahan distribusi komponen. Demikian juga dengan pemanfaatan Class.

Pemanfaatan Class akan mengubah teknik pemrograman Procedural (pada programmer yang
terbiasa dengan lingkungan pemrogram DOS) menjadi pendekatan Object.

Pada project persediaan yang akan kita kembangkan dapat dimodelkan menjadi bagian
Interface (form-form dan report), bagian Business rule (pembelian akan menambah
persediaan, penjualan akan mengurangi persediaan, dll), bagian Data (tabel barang, tabel
pemasok, tabel pembelian, dll).

Dengan pendekatan object, masing-masing bagian dapat dimodelkan dan dikembangkan,


dan akhirnya dirangkai menjadi suatu program yang merupakan interaksi antar bagian.

Membuat Class Barang

1. Dari menu Project, pilih Add Class Module


2. Ganti nama Class menjadi clsBarang
3. Deklarasikan sebuah variabel recordset pada bagian General Declaration untuk
pembukaan tabel barang

Dim rs as recordset

4. Lakukan koding untuk bagian Initialize

Private Sub Class_Initialize()


Set rs = New Recordset
rs.CursorLocation = adUseServer
rs.Open "Barang", MyConn, adOpenKeyset, adLockOptimistic End
Sub

5. Lakukan koding untuk bagian Terminate

Private Sub Class_Terminate()


rs.Close
End Sub

17
6. Tambahkan metoda untuk mencari data KodeBarang

Public Function CariBarang(KodeBarang As String) As Boolean


Dim vBookmark As Variant
CariBarang = True
vBookmark = rs.Bookmark
rs.MoveFirst
rs.Find "KodeBarang='" & KodeBarang & "'" If
rs.EOF Then
rs.Bookmark = vBookmark
CariBarang = False
End If
End Function

7. Tambahkan metoda untuk menghitung Saldo barang berdasarkan parameter


bulan.

Public Function SaldoAkhir(nMonth)


Dim nSaldoAkhir As Double
nSaldoAkhir = 0
For I = 0 To nMonth
nSaldoAkhir = nSaldoAkhir + rs("B" & I)
Next I
SaldoAkhir = nSaldoAkhir
End Function

8. Tambahkan metoda untuk mengupdate pemasukan dan pengeluaran barang


berdasarkan paramenter bulan dan qty

Public Sub Masuk(nMonth, nQty)


rs("B" & nMonth) = rs("B" & nMonth) + nQty
rs.Update
End Sub

Public Sub Keluar(nMonth, nQty)


rs("B" & nMonth) = rs("B" & nMonth) + nQty
rs.Update
End Sub

9. Tambahkan properti untuk mengambil nilai masing-masing kolom

Public Property Get NamaBarang() As Variant


NamaBarang = rs("NamaBarang")
End Property

18
Public Property Get Satuan() As Variant
Satuan = rs("Satuan")
End Property
Public Property Get UnitPrice() As Variant
UnitPrice = rs("UnitPrice")
End Property

Project
Buatlah Class untuk Pemasok, Pelanggan

19
Modul 6, Pembuatan Class Pembelian
Pada modul ini kita akan terfokus pada pemodelan dan pengembangan Class aturan bisnis untuk
Pembelian, Penjualan dan Adjustment.

Berikut ini adalah langkah-langkah untuk membuat Class aturan untuk Pembelian

1. Deklarasi variabel rs1 (untuk tabel Beli), rs2 (untuk tabel BeliDtl), dan oBarang
(untuk object Barang)

Private rs1 As Recordset


Private rs2 As Recordset
Private oBarang As clsBarang

2. Lakukan koding untuk bagian Initialize, dimana akan membuka recordset dan
object Barang

Private Sub Class_Initialize()


Set rs1 = New Recordset
Set rs2 = New Recordset
Set oBarang = New clsBarang
rs1.CursorLocation = adUseServer
rs2.CursorLocation = adUseServer
rs1.Open "Beli", MyConn, adOpenKeyset, adLockOptimistic
rs2.Open "BeliDetail", MyConn, adOpenKeyset, adLockOptimistic End
Sub

3. Lakukan koding untuk bagian Terminate, dimana akan menutup recordset dan
object barang.

Private Sub Class_Terminate()


On Error Resume Next
rs1.Close
rs2.Close
Set oBarang = Nothing
End Sub

4. Lakukan koding untuk metoda CariBeli, dimana akan membatasi recordset


berdasarkan kriteria.

Public Function CariBeli(Nomor As Long)


rs1.Filter = "Nomor = " & Nomor
rs2.Filter = "Nomor = " & Nomor
CariBeli = Not rs1.EOF
End Function

20
5. Lakukan koding untuk metoda CloneBeli, dimana akan mengembalikan sebuah
recordset buatan (duplikasi dari struktur recordset beli), dan berisi 1 (satu) record
hasil filter.

Public Function CloneBeli() As Recordset


Dim rs01 As New Recordset
Dim fl As Field
For Each fl In rs1.Fields
rs01.Fields.Append fl.Name, fl.Type, fl.DefinedSize
Next fl
rs01.Open
rs01.AddNew
If Not rs1.EOF Then
For Each fl In rs1.Fields
rs01(fl.Name) = fl.Value
Next fl
End If
rs01.Update
Set CloneBeli = rs01
End Function

6. Lakukan koding untuk metoda CloneBeliDtl, dimana akan mengembalikan


sebuah recordset buatan (duplikasi dari struktur recordset belidtl), dan berisi
record-record hasil filter.

Public Function CloneBeliDtl() As Recordset


Dim rs02 As New Recordset
Dim fl As Field
Dim I As Integer
For Each fl In rs2.Fields
rs02.Fields.Append fl.Name, fl.Type, fl.DefinedSize
Next fl
rs02.Open
If Not rs2.EOF Then
rs2.MoveFirst
For I = 0 To rs2.RecordCount - 1
rs02.AddNew
For Each fl In rs2.Fields
rs02(fl.Name) = fl.Value
Next fl
rs02.Update
rs2.MoveNext
Next I
End If
Set CloneBeliDtl = rs02
End Function

21
7. Lakukan koding untuk metoda Addnew, dimana akan menyimpan Pembelian baru
ke tabel beli dan belidtl.

Public Function AddNew(rs01 As Recordset, rs02 As Recordset)


Dim nTotal As Currency
Dim I As Integer
AddNew = True
nTotal = 0
rs1.Filter = ""
rs2.Filter = ""
For I = 0 To rs02.RecordCount - 1
nTotal = nTotal + rs02("Amount")
Next I
rs1.AddNew
rs1("Tanggal") = rs01("Tanggal")
rs1("KodePemasok") = rs01("KodePemasok")
rs1("Total") = nTotal
rs1.Update
For I = 0 To rs02.RecordCount - 1
rs2.AddNew
rs2("KodeBarang") = rs02("KodeBarang")
rs2("NamaBarang") = rs02("NamaBarang")
rs2("Qty") = rs02("Qty")
rs2("UnitPrice") = rs02("UnitPrice")
rs2("Amount") = rs02("Amount")
rs2("Nomor") = rs1("Nomor")
rs2.Update
If oBarang.CariBarang(rs2("KodeBarang")) Then
oBarang.Masuk Month(rs1("Tanggal")), rs2("Qty")
Else
MsgBox "Kode barang tidak ada !"
AddNew = False
Exit Function
End If
Next I
End Function

8. Lakukan koding untuk metoda Edit, dimana akan menyimpan Pembelian hasil
perbaikan ke tabel beli dan belidtl.

Public Function Edit(rs01 As Recordset, rs02 As Recordset) Dim


nTotal As Currency
Dim I As Integer
Edit = True
rs2.MoveFirst
Do While Not rs2.EOF

22
If oBarang.CariBarang(rs2("KodeBarang")) Then
oBarang.Masuk Month(rs1("Tanggal")), -rs2("Qty")
Else
MsgBox "Kode barang tidak ada !"
Edit = False
Exit Function
End If
rs2.Delete
rs2.MoveNext
Loop
nTotal = 0
For I = 0 To rs02.RecordCount - 1
nTotal = nTotal + rs02("Amount")
Next I
rs1("Tanggal") = rs01("Tanggal")
rs1("KodePemasok") = rs01("KodePemasok")
rs1("Total") = nTotal
rs1.Update
For I = 0 To rs02.RecordCount - 1
rs2.AddNew
rs2("KodeBarang") = rs02("KodeBarang")
rs2("NamaBarang") = rs02("NamaBarang")
rs2("Qty") = rs02("Qty")
rs2("UnitPrice") = rs02("UnitPrice")
rs2("Amount") = rs02("Amount")
rs2("Nomor") = rs1("Nomor")
rs2.Update
If oBarang.CariBarang(rs2("KodeBarang")) Then
oBarang.Masuk Month(rs1("Tanggal")), rs2("Qty")
Else
MsgBox "Kode barang tidak ada !"
Edit = False
Exit Function
End If
Next I
End Function

Project
Rancanglah Class untuk Penjualan dan Adjust.

23
Modul 7
Pembuatan Entry Pembelian

Setelah mempersiapkan data dan class, maka selanjutnya kita akan bekerja dengan user
interface.

Persiapkan form berikut ini :

Persiapkan variabel form modul, pada bagian General Declaration

Option Explicit
Private Enum Action
None = 0
Add = 1
Edit = 2
End Enum
Dim rsBeli As New Recordset
Dim WithEvents rsBeliDtl As Recordset
Dim oBeli As New clsBeli
Dim oPemasok As New clsPemasok
Dim oBarang As New clsBarang
Dim xOldValue As String
Dim Flag As Action

24
Persiapkan General Procedure berikut :

Private Function TampilBeli(ByVal x, Kosong) As Boolean


Dim Nomor As Long
Nomor = Val(x)
TampilBeli = oBeli.CariBeli(Nomor)
If TampilBeli Or Kosong Then
Set rsBeli = oBeli.CloneBeli
Set rsBeliDtl = oBeli.CloneBeliDtl
Text1.DataField = "Nomor"
Text2.DataField = "Tanggal"
Text3.DataField = "KodePemasok"
Set Text1.DataSource = rsBeli
Set Text2.DataSource = rsBeli
Set Text3.DataSource = rsBeli
With DataGrid1
Set .DataSource = rsBeliDtl
.Refresh
.Width = 1000 + 3000 + 1000 + 1500 + 1500 + 700
.Columns(0).Width = 1000
.Columns(1).Width = 3000: .Columns(1).Locked = True
.Columns(2).Width = 1000: .Columns(2).Alignment = dbgRight
.Columns(2).NumberFormat = "#,###"
.Columns(3).Width = 1500: .Columns(3).Alignment = dbgRight
.Columns(3).NumberFormat = "#,###.00"
.Columns(4).Width = 1500: .Columns(4).Alignment = dbgRight
.Columns(4).NumberFormat = "#,###.00"
.Columns(5).Visible = False
.Columns(6).Visible = False
End With
TampilBeli = True
Else
MsgBox "Nomor tidak ditemukan !"
End If
End Function

Private Function TampilPemasok() As Boolean


TampilPemasok = True
If oPemasok.CariPemasok(Text3.Text) Then
On Error Resume Next
Label4.Caption = oPemasok.Nama
Label5.Caption = oPemasok.Alamat1
Label6.Caption = oPemasok.Alamat2
Else
MsgBox "Pemasok tidak ditemukan !"
TampilPemasok = False

25
End If
End Function

Private Sub Kosong()


Call TampilBeli(0, True)
End Sub

Private Sub Kunci(xtext1, xtext2, xtext3, xDataGrid, xAdd, xEdit, xSave)


Text1.Locked = xtext1
Text2.Locked = xtext2
Text3.Locked = xtext3
DataGrid1.AllowUpdate = xDataGrid
cmdAdd.Enabled = xAdd
cmdEdit.Enabled = xEdit
cmdSave.Enabled = xSave
End Sub

Lakukan koding terhadap Event Form Load dan Unload

Private Sub Form_Load()


rsBeli.CursorLocation = adUseClient
Set rsBeliDtl = New Recordset
rsBeliDtl.CursorLocation = adUseClient
Call Kosong
Call Kunci(True, True, True, False, True, True, False)
End Sub

Private Sub Form_Unload(Cancel As Integer)


On Error Resume Next
rsBeli.Close
rsBeliDtl.Close
End Sub

Lakukan koding terhadap Event cmdSave Click

Private Sub cmdAdd_Click()


Flag = Add
Call Kosong
Call Kunci(True, False, False, True, False, False, True)
Text2.SetFocus
End Sub

Lakukan koding terhadap Event Text3 Validate

Private Sub Text3_Validate(Cancel As Boolean)


Cancel = Not TampilPemasok()

26
End Sub

Lakukan koding terhadap Event DataGrid1 BeforeColUpdate dan AfterColUpdate, dan


Keypress

Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As


Variant, Cancel As Integer)
If ColIndex = 0 Then
xOldValue = OldValue
End If
End Sub

Private Sub DataGrid1_AfterColUpdate(ByVal ColIndex As Integer)


If ColIndex = 0 Then
If oBarang.CariBarang(DataGrid1.Text) Then
With DataGrid1
.Columns(1).Value = oBarang.NamaBarang
.Columns(2).Value = 1
.Columns(3).Value = oBarang.HargaJual
.Columns(4).Value = 1 * oBarang.HargaJual End
With
Else
MsgBox "Kode barang tidak ditemukan !"
DataGrid1.Columns(0).Value = xOldValue
End If
End If
End Sub

Private Sub DataGrid1_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If DataGrid1.Col = 0 Then
SendKeys "{right}"
SendKeys "{right}"
ElseIf DataGrid1.Col = 4 Then
SendKeys "{home}"
rsBeliDtl.AddNew
Else
SendKeys "{right}"
End If
End If
End Sub

Lakukan koding terhadap Event cmdEdit Click

Private Sub cmdEdit_Click()


Flag = Edit

27
Call Kunci(False, True, True, False, False, False, True)
Text1.SetFocus
End Sub

Lakukan koding terhadap Event Text1 Validate

Private Sub Text1_Validate(Cancel As Boolean)


If Text1.Text <> "" Then
Cancel = True
If TampilBeli(Text1.Text, False) Then
Call TampilPemasok
Call Kunci(True, False, False, True, False, False, True)
Cancel = False
End If
End If
End Sub

Lakukan koding terhadap Event cmdSave Click

Private Sub cmdSave_Click()


If Flag = Add Then
MyConn.BeginTrans
If oBeli.AddNew(rsBeli, rsBeliDtl) Then
MyConn.CommitTrans
Else
MyConn.RollbackTrans
End If
ElseIf Flag = Edit Then
MyConn.BeginTrans
If oBeli.Edit(rsBeli, rsBeliDtl) Then
MyConn.CommitTrans
Else
MyConn.RollbackTrans
End If
End If
Call Kunci(True, True, True, False, True, True, False)
End Sub

Catatan : Perhatikan koding diatas, anda tidak menemukan koding untuk penanganan
pencarian, penambahan, dan penyimpanan data ke database, karena hal tersebut telah
ditangani oleh Class yang telah kita persiapkan sebelumnya.

Project
Buatlah Entry data penjualan dan Penyesuaian.

28
Modul 8
Membuat Fasilitas Tabel Pemasok dan Barang dan Hapus Pembelian

Dibawah bimbingan instruktur anda, buatlah program untuk menampilkan Tabel


Pemasok, kalau pemakai menekan tombol F1 pada text3, dan menampilkan Tabel
Barang, kalau pemakai menekan tombol F1 pada kolom 0 DataGrid1.

Project
Tambahkan fasilitas hapus pembelian, penjualan dan Penyesuaian untuk user interface
anda.

29
Modul 9, Mengenal Data Environment dan Data Report
Data Environment merupakan salah satu fasilitas pengolahan data pada Visual Basic.
Fasilitas ini diperkenalkan sejak Visual Basic 6. Pada umumnya Data Environment
digunakan untuk merancang sumber data yang akan digunakan dalam pembuatan laporan yang
menggunakan Data Report.

Mempersiapkan Data Environment


1. Pada menu Project, More Activex Designer, Pilih Data Environment, dan akan
menambahkan menambahkan suatu Data Environmnet pada project anda pada
kelompok Designer.

2. Klik kanan pada Connection1 dan pilih properties. Aturlah properties seperti pada
ADODC untuk koneksi data ke Pentacom.mdb
3. Klik kanan pada Connection1 dan pilih Add Command

4. Klik kanan pada Command1, dan pilih properties. Aturlah properties sebagai
berikut :
Pada General, Datasource, pilih SQL Statement, dan ketik

SELECT Pemasok.* FROM Pemasok WHERE KodePemasok >= DariKode


AND KodePemasok <= SampaiKode;

Dalam hal ini DariKode dan SampaiKode merupakan parameter.

Membuat report dengan Data Report

1. Pada menu Project, pilih Add Data Report, dan akan menambah DataReport1
pada bagian Designer project anda.

30
2. Aturlah properti DataReport1 sebagai berikut :
Data Source = DataEnvironment1
DataMember = Command1

3. Klik kanan pada DataReport1 dan pilih Retrieve Structure, dan rancanglah report
anda seperti sebagai berikut ini :

Membuat Form untuk input Parameter


1. Buatlah Form Berikut

2. Lakukan koding untuk OkButton berikut :

31
Private Sub OKButton_Click()
DataEnvironment1.Connection1.ConnectionString = MyConn.ConnectionString
DataEnvironment1.Command1 txtKodeDari.Text, txtKodeSampai.Text
Me.Hide
DataReport1.Show
Unload Me
End Sub

Project

Buatlah report untuk Customer, dan Barang.

32
Modul 10
Child Command pada Data Environment

Child command pada Data Environment berguna untuk pembuatan laporan yang
berjenjang yang berasal dari dua tabel atau lebih yang berkaitan. Pada modul ini kita akan
membuat Cetak Faktur pembelian.

Membuat sumber data dengan Child Command


1. Pada DataEnvironment1, tambahkan sebuah Command, dan beri nama command
tersebut FakturBeli
2. Aturlah sumber datanya menjadi :

Select Nomor, Tanggal, Beli.KodePemasok, Total, Nama, Alamat1, Alamat2,


Alamat3
From Beli Inner Join Pemasok On Beli.KodePemasok = Pemasok.KodePemasok
Where Nomor = NomorFaktur

3. Tambahkan Child Command untuk command FakturBeli dengan klik kanan dan
Add Child Command, dan beri nama Detail
4. Aturlah sumber datanya menjadi :

Select * From BeliDetail;

Dan pada Relation buatlah suatu relation berdasarkan Nomor.

Membuat Faktur Penjualan


1. Pada Menu Project, pilih Add Data Report

33
2. Atur DataSource = DataEnvironment1, dan DataMember=FakturBeli
3. Design Faktur Pembelian anda dengan tampilan berikut

Membuat Form Cetak Faktur Pembelian


1. Buat Form Berikut

2. Lakukan koding sebagai berikut :

Private Sub OKButton_Click()


Set DataEnvironment1.Connection1.ConnectionString = MyConn.ConnectionString
DataEnvironment1.FakturBeli txtNoFaktur.Text
Me.Hide
DataReport2.Show
Unload Me
End Sub

Project
Buatlah Cetak Faktur Penjualan dan Adjust.

34
Modul 11
Membuat Report dengan Group dan Grand Total

Kadang-kadang dalam laporan kita perlu membuat Group, Total dan Grand Total. Visual
Basic menyediakan fasilitas tersebut dengan membuat Command yang memiliki Group.

Membuat sumber data dengan Command yang memiliki Group


5. Pada DataEnvironment1, tambahkan sebuah Command, dan beri nama command
tersebut DaftarPembelian
6. Aturlah sumber datanya menjadi :

Select Nomor, Tanggal, Beli.KodePemasok, Total, Nama From


Beli Inner Join Pemasok On Beli.KodePemasok = Pemasok.KodePemasok Where
Tanggal >= DariTanggal And Tanggal <= SampaiTanggal

Dimana : DariTanggal dan SampaiTanggal merupakan parameter.

7. Buatlah grouping berdasarkan Tanggal

8. Buatlah Total dengan nama TotalHarian

35
9. Tambahkan Grand Total, dengan nama Command GrandTotal

Membuat Laporan Pembelian


4. Pada Menu Project, pilih Add Data Report
5. Atur DataSource = DataEnvironment1, dan DataMember=GrandTotalDaftar
6. Design Laporan Pembelian anda dengan tampilan berikut

36
Membuat Form Cetak Laporan Pembelian
3. Buat Form Berikut, dengan menggunakan DTPicker yang merupakan Microsoft
Common Control-2

4. Lakukan koding sebagai berikut :

Private Sub OKButton_Click()


DataEnvironment1.GrandTotalDaftar DTDariTanggal, DTSampaiTanggal
DaftarPembelian.Title = "Dari : " & DTDariTanggal & " s/d " & DTSampaiTanggal
Me.Hide
DaftarPembelian.Show
Unload Me
End Sub

Project
Buatlah Cetak Perincian Pembelian, Daftar Penjualan, Perincian Penjualan, dan Perincian
Adjust.

37
Modul 12
Menampilkan Faktur ke Form

Selain digunakan untuk data report, Data Environment dapat juga digunakan untuk
menampilkan data ke form.

Membuat sumber data dengan Child Command


10. Pada DataEnvironment1, tambahkan sebuah Command, dan beri nama command
tersebut vwFakturBeli
11. Aturlah sumber datanya menjadi :

Select Nomor, Tanggal, Beli.KodePemasok, Total, Nama, Alamat1, Alamat2,


Alamat3 From Beli Inner Join Pemasok On Beli.KodePemasok =
Pemasok.KodePemasok

12. Tambahkan Child Command untuk command FakturBeli dengan klik kanan dan
Add Child Command, dan beri nama Detail
13. Aturlah sumber datanya menjadi :

Select * From BeliDetail;

Dan pada Relation buatlah suatu relation berdasarkan Nomor terhadap


vwFakturBeli

Membuat Faktur Penjualan


7. Pada Menu Project, pilih Add Form
8. Design tampilan Faktur Pembelian anda dengan tampilan berikut
9. Atur masing-masing properti Textbox menjadi :
a. DataSource: DataEnvironmet1
b. DataMember: vwFakturBeli
c. DataField: Berdasarkan masing-masing field
10. Atur DataGrid1 propertinya menjadi :
a. DataSource: DataEnvironment1
b. DataMember: vwFakturBeliDtl

Lakukan koding Berikut :

Private Sub Form_Load()


With DataGrid1
.Width = 1000 + 3000 + 1000 + 1500 + 1500 + 700
.Columns(0).Width = 1000
.Columns(1).Width = 3000: .Columns(1).Locked = True
.Columns(2).Width = 1000: .Columns(2).Alignment = dbgRight
.Columns(2).NumberFormat = "#,###"
.Columns(3).Width = 1500: .Columns(3).Alignment = dbgRight

38
.Columns(3).NumberFormat = "#,###.00"
.Columns(4).Width = 1500: .Columns(4).Alignment = dbgRight
.Columns(4).NumberFormat = "#,###.00"
.Columns(5).Visible = False
.Columns(6).Visible = False
End With
End Sub

Private Sub cmdFirst_Click()


DataEnvironment1.rsvwFakturBeli.MoveFirst
End Sub

Private Sub cmdLast_Click()


DataEnvironment1.rsvwFakturBeli.MoveLast
End Sub

Private Sub cmdNext_Click()


DataEnvironment1.rsvwFakturBeli.MoveNext
End Sub

Private Sub cmdPrev_Click()


DataEnvironment1.rsvwFakturBeli.MovePrevious
End Sub

Project

39
Modul 13
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) adalah TrueDbGrid.

Anda perlu mendownload dan menginstalasi TrueDbGrid sebelum dapat digunakan pada
project anda.

Setelah instalasi anda dapat memanfaatkan TrueDbGrid dengan menu Project,


Components, ComponetOne 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.

Pemanfaatan TDBGrid

Pemanfaatan kontrol TDBGrid tidak jauh berbeda dengan DataGrid yang pernah kita
manfaatkan sebelumnya. Berikut ini adalah contoh pemanfaatan TDBGrid :
1. Buka kembali faktur pembelian anda
2. Gantilah komponen DataGrid dengan TDBGrid untuk pengisian bagian detail
3. Aturlah properti TDBGrid1 menjadi sebagai berikut :
a. Name : DataGrid1
b. AllowAddNew : True
c. Appearance : Flat
4. Klik kanan pada Grid, dan pilih properties,
a. kemudian pada Tab Splits, pilih Split00, pada AlternatingRowStyle buat
menjadi true. (Langkah ini dibuat untuk membuat perbedaan warna antara
baris genap dan ganjil)
b. kemudian pada Tab Style Factory, pilih Even Row, pada BackColor ganti
menjadi LigthGray. (Langkah ini dibuat untuk menentukan warna untuk
baris genap)
5. Gantilah strategi Koding untuk BeforeColUpdate dan AfterColUpdate menjadi
sebagai berikut :

Private Sub DataGrid1_AfterColUpdate(ByVal ColIndex As Integer)


With DataGrid1
.Columns(1).Value = oBarang.NamaBarang
.Columns(2).Value = 1
.Columns(3).Value = oBarang.HargaJual

40
.Columns(4).Value = 1 * oBarang.HargaJual
End With
End Sub

Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As


Variant, Cancel As Integer)
If ColIndex = 0 Then
If Not oBarang.CariBarang(DataGrid1.Text) Then
MsgBox "Kode barang tidak ditemukan !"
Cancel = True
End If
End If
End Sub

Pemanfaatan TDBDropDown

TrueDBDropDown digunakan untuk membuat dropdown list dari suatu sumber data yang
dapat diikatkan pada salah satu kolom pada TDBGrid. Berikut ini adalah contoh
pemanfaatan TDBDropDown.
1. Tanamkan sebuah TDBDropDown pada form anda
2. Deklarasi variabel berikut pada bagian General Declaration

Dim RsTbBarang As New Recordset

3. Pada Form_Load tambahkan koding berikut

RsTbBarang.CursorLocation = adUseClient
RsTbBarang.Open "Select KodeBarang, NamaBarang From Barang", MyConn Set
TDBDropDown1.DataSource = RsTbBarang
TDBDropDown1.Refresh

4. Pada Function TampilBeli, tambahkan koding berikut pada bagian With


DataGrid1 … End With

.Columns(0).DropDown = TDBDropDown1

Project

Manfaatkanlah TDBGrid pada penjualan dan adjust.

41
Modul 14
Menampilkan data dengan TrueDbGrid

Salah satu pemakaian TrueDbGrid adalah untuk menampilkan data. Pada TrueDbGrid
tersedia berbagai keunggulan seperti Split, Filter Bar.

Menampilkan data
Berikut ini adalah contoh menampilkan data pemasok dengan TrueDbGrid :
1. Tambahkan sebuah form baru pada project anda
2. Tanamkan sebuah TDBGrid, dan sebuat AdoDC kontrol
3. Aturlah connection ADODC ke Pentacom.Mdb, dan Recordsource tabel
Pemasok, Align menjadi vbAlignBottom
4. Aturlah properti Datasource TDBGrid1 ke Adodc1
5. Klik kanan pada TDBGrid1 dan pilih Retrieve Field

6. Aturlah properti MarqueeStyle yang terdapat pada tab Splits menjadi Highlight
Row.
7. Lakukan koding untuk Event Form_Resize

Private Sub Form_Resize()


On Error Resume Next
TDBGrid1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight - Adodc1.Height End
Sub

8. Lakukan koding untuk Event Form_Load

Dim Rs As New Recordset

Private Sub Form_Load()


Rs.CursorLocation = adUseClient

42
Rs.Open "Pemasok", MyConn
Set Adodc1.Recordset = Rs
Adodc1.Refresh
End Sub

Membuat freeze column dengan fasilitas Split.


1. Klik kanan pada TDBGrid1, dan pilih Edit untuk masuk ke Edit Mode
2. Klik kanan pada TDBGrid1, dan pilih Split, dan akan nampak split pada Grid
anda.

3. Tambahkan koding berikut pada Event Form_Load

With TDBGrid1
.Splits(0).SizeMode = dbgNumberOfColumns
For I = 1 To .Splits(0).Columns.Count - 1
.Splits(0).Columns(I).Visible = False
Next I
.Splits(1).Columns(0).Visible = False
.Splits(1).RecordSelectors = False
End With

Mengaktifkan fasilitas filter bar


1. Aktifkan filterbar pada Split 0 dan 1
2. Dan lakukan koding berikut untuk event FilterChange

Private Sub TDBGrid1_FilterChange()


Dim Filter As String
Filter = ""
For I = 0 To TDBGrid1.Columns.Count - 1
If TDBGrid1.Columns(I).FilterText <> "" Then If
Filter <> "" Then

43
Filter = Filter & " And "
End If
Filter = Filter & TDBGrid1.Columns(I).DataField & " Like '" & _
TDBGrid1.Columns(I).FilterText & "'"
End If
Next I
Adodc1.Recordset.Filter = Filter
End Sub

3. Lakukan juga koding untuk ClearFilter kalau pemakai menekan tombol Esc

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
Adodc1.Recordset.Filter = ""
End If
End Sub

44
Modul 15
Mengenal Crystal Report 8.0

Crystal report merupakan salah satu product report designer yang banyak digunakan oleh para
developer. Crystal report merupakan produk dari perusahaan Seagate. Crystal report tersedia
langsung pada Visual Basic 4.0 dan 5.0, tetapi pada Visual Basic 6.0 telah
diganti dengan Data Report yang dibuat oleh Microsoft.

Pada Visual Basic 6.0, pada dasarnya Crystal report dapat diinstall secara terpisah dari
folder \Misc yang merupakan versi 5.0.

Menjalankan Crystal Report

1. Dari Start, pilih Programs, pilih Seagate Crystal Report.


2. Akan muncul suatu Dialog box Welcome

3. Anda dapat memilih Using Report Expert untuk pembuatan report secara step by
step.
4. Step 1
5. Kemudian akan muncul dialog Choose an Expert, dan pilihlah Standard.
6. Kemudian akan muncul Standard Report Expert, yang memiliki 8 step, yaitu :
Data, Fields, Group, Total, TopN, Chart, Select, Style.
7. Klik pada Database, dan akan muncul dialog Database Explorer. Klik pada
Database Files, dan Double Klik pada Find Database File.
8. Pilih Pentacom.mdb, dan masukkan password yang sesuai, sehingga menjadi :

45
9. Klik pada tabel Barang, dan klik Add untuk memasukan tabel ke report.
10. Step 2
11. Klik pada Fields, dan masukkan field-field yang diinginkan. Anda dapat juga
mengubah judul untuk masing-masing kolom dengan mengatur Column Heading.
12. Step 8
13. Klik pada Style, dan pada Title ketik Laporan Data Pemasok, dan pilihlah Style
yang sesuai dengan keinginan anda.
14. Klik pada Preview Report untuk melihat hasil.

Mendesign report hasil Report Expert.


Klik pada tab design dan akan menampilkan layar design

46
Report Header, tulisan yang akan ditampilkan pada halaman pertama Report.
Page Header, tulisan yang akan ditampilkan pada awal tiap halaman.
Details, merupakan baris-baris yang berasal dari field-field dalam tabel.
Report Footer, tulisan yang akan ditampilkan pada halaman terakhir.
Page Footer, tulisan yang akan ditampilkan pada akhir tiap halaman.

Menyimpan design report ke file


Menyimpan report dilakukan seperti biasanya dengan menu File, Save kesebuah file
dengan extension rpt.

Menampilkan report dari Project Visual Basic


Untuk menampilkan Crystal Report ke project anda dapat dilakukan dengan
menggunakan komponen “Crystal Report Viewer Control” melalui menu Project,
Components, dan Reference ke “Crystal Report 8 Activex Designer runtime library”

CRviewer

1. Tanamkan kontrol CRViewer ke Form anda

2. Lakukan koding sebagai berikut :

Dim xApp As New CRAXDRT.Application


Dim xRpt As CRAXDRT.Report
Dim xDbf As CRAXDRT.DatabaseTable

Private Sub Form_Load()


Set xRpt = xApp.OpenReport("C:\Workshop\Pemasok.rpt") If
xTitle <> "" Then
xRpt.ReportTitle = xTitle
End If
For Each xDbf In xRpt.Database.Tables
xDbf.SetLogOnInfo "", "", "", "Pentacom"

47
xDbf.Location = "C:\Pentacom.Mdb"
Next
On Error GoTo Keluar
xRpt.DiscardSavedData
CRViewer1.ReportSource = xRpt
CRViewer1.ViewReport
Exit Sub
Keluar:
MsgBox "Ada Masalah Dengan Laporan !!", vbInformation, "PERHATIAN" End
Sub

Private Sub Form_Resize()


CRViewer1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
End Sub

Membatasi data dengan Selection Formula

Anda dapat membatasi data pada saat runtime dengan menggunakan


RecordSelectionFormula

xRpt.RecordSelectionFormula = "{Pemasok.KodePemasok} >= '001' And


{Pemasok.KodePemasok} <= '100'"

Project
Buatlah laporan dengan crystal report untuk Customer, dan Barang.

48
Modul 16
Membuat report dengan Crystal Report

Jika pada pertemuan sebelumnya kita telah belajar bagaimana membuat report dengan
menggunakan Report Expert, maka pada pertemuan ini kita akan membuat report dengan
melakukan design secara langsung.

Melakukan design dengan Crystal Report


1. Pada dialog Welcome to Seagate Crystal Reports pilih As a blank report.
2. Pada dialog Data Explorer, klik pada “DataFiles”,, dan double klik pada “Find
Database File”.
3. Selanjutnya buka database C:\Pentacom.mdb dan password : Pentacom.
4. Klik pada tabel barang dan klik Add

5. Pada menu File, klik pada Summary Info, dan ketikan “Laporan Data Barang”
pada field Title.

6. Pada field explorer, Special fields, Drag Report Title ke bagian Page Header, dan
lakukan drag field KodeBarang, NamaBarang, Satuan, HargaJual

7. Klik kanan pada Formula Fields, dan pilih New:, Pada FormulaName ketikan
“SaldoAkhir”, dan buatlah formula {Barang.b0}+{Barang.b1}, dan klik pada
“Check” untuk memeriksa kebenaran dari formula yang diketik, dan akhiri
dengan klik pada “Save and Close”

49
8. Pada kolom @SaldoAkhir tambahkan Grand total.

Mengatur Formula pada runtime

Anda dapat menggunakan FormulaFields(n).Text, untuk memanipulasi Formula pada saat


runtime.

Contoh :

xRpt.FormulaFields(1).Text = "{Barang.b0}+{Barang.b1}+{Barang.b2}+{Barang.b3}"

untuk memperbaiki @SaldoAkhir menjadi bulan Maret.

Dengan petunjuk instruktur anda, buatlah Faktur Pembelian, Laporan Pembelian Per
Pemasok, Laporan Pembelian Per Barang.

Project
Buatlah program cetak Databarang dimana @SaldoAkhirnya disesuaikan dengan Bulan
yang akan dicetak.

50
Modul 17
Membuat report dengan Crystal Report 8.5

Crystal report 8.5 menawarkan pembuatan report yang dapat terpadu dengan project
Visual Basic 6.0, dimana pembuatan report dapat langsung dilakukan pada IDE Visual
Basic dengan menggunakan menu Project, Add Crystal Reports 8.5.

Bekerja dengan Crystal Report Designer dan ADO


1. Dari Menu Project, pilih Add Crystal Report 8.5
2. Pada Crystal Report Gallery pilih As blank Report
3. Beri jawaban Yes pada Do you want the expert to add a form containing the
Crystal Report Control Viewer ?, dan No pada Would you like the expert to
modify the project properties to set this form as the startup object ? dan Klik Ok
4. Selanjutnya dihadapan anda akan ditampilkan Crystal Report Designer

5. Klik kanan pada “Database Fields” dan pilih Add Database to report.
6. Pada dialog “Database Explorer”, pilih “More Data Source”, klik pada “Active
Data”, double klik pada “Active Data (ADO)”, dan buatlah ConnectionString
seperti biasanya, dengan menggunakan ADO
7. Buatlah datasource dengan SQL statement berikut :

SELECT Beli.Nomor, Beli.Tanggal, Beli.KodePemasok, Beli.Total, Pemasok.Nama,


Pemasok.Alamat1, Pemasok.Alamat2, BeliDetail.KodeBarang, BeliDetail.NamaBarang,
BeliDetail.Qty, BeliDetail.UnitPrice, BeliDetail.Amount
FROM Pemasok INNER JOIN (Beli INNER JOIN BeliDetail ON Beli.Nomor =
BeliDetail.Nomor) ON Pemasok.KodePemasok = Beli.KodePemasok;

51
8. Klik kanan pada “Group Name Fields”, dan pilih “Insert Group”, dan buatlah
group berdasarkan “Nomor”
9. Rancanglah report anda sebagai berikut :

10. Lakukan pengaturan format untuk Qty, UnitPrice, Amount, Total, PrintDate serta
PrintTime.
11. Lakukan koding pada Report jika tidak ada data yang dicetak

Private Sub Report_NoData(pCancel As Boolean)


MsgBox "Ada yang dicetak !"
End Sub

12. Modify Koding untuk Form Viewer sehingga lokasi database dapat disesuaikan
kembali sebagai berikut :

Dim Report As New CrystalReport1


Dim MyConn As New Connection
Dim MyRs As New Recordset

Private Sub Form_Load()


MyConn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data
Source=C:\Pentacom.Mdb; Jet Oledb:Database Password=Pentacom;"
MyConn.Open
sSQL = "SELECT Beli.Nomor, Beli.Tanggal, Beli.KodePemasok," & _
"Beli.Total, Pemasok.Nama, Pemasok.Alamat1, Pemasok.Alamat2," & _

52
"BeliDetail.KodeBarang, BeliDetail.NamaBarang, BeliDetail.Qty," & _
"BeliDetail.UnitPrice, BeliDetail.Amount " & _
"FROM Pemasok INNER JOIN " & _
"(Beli INNER JOIN BeliDetail ON Beli.Nomor = BeliDetail.Nomor) " & _ "ON
Pemasok.KodePemasok = Beli.KodePemasok;"
MyRs.Open sSQL, MyConn
Report.Database.SetDataSource MyRs, , 1
Screen.MousePointer = vbHourglass
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
Screen.MousePointer = vbDefault
End Sub

Private Sub Form_Resize()


CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth
End Sub

13. Lengkapi program diatas untuk kemampuan mencetak Faktur nomor tertentu saja.
14. Tambahkan nomor baris untuk masing-masing baris faktur
15. Tambahkan PPN dan Nett

53
Modul 18
Membuat graphic dengan Crystal Report 8.5

Crystal report 8.5 menawarkan berbagai fasilitas kemudahan dalam pembuatan report,
salah satunya adalah pembuatan grafik

Bekerja dengan Crystal Report Designer dan ADO


16. Buatlah sebuah report dengan datasource dengan SQL statement berikut :

SELECT Beli.KodePemasok, Pemasok.Nama, Pemasok.Attn, Beli.Nomor, Beli.Tanggal,


Beli.Total FROM Pemasok INNER JOIN Beli ON
Pemasok.KodePemasok = Beli.KodePemasok;

17. Buatlah Group berdasarkan KodePemasok dengan klik pada toolbar


18. Rancanglah Report sebagai berikut :

19. Tambahkan Graphic Bar ke Report, dengan melakukan klik pada toolbar ,
dimana dengan pengaturan sebagai berikut :

• Place chart: Once per report : Header


• On change of : ado.KodePemasok
• Show : sum of ado.Total
• Title : Graphic Pembelian per customer
• Group Title : Nama Pemasok
• Data Title : Total

54
20. Lakukan pemrograman pada Visual Basic untuk membatasi pencetakan dari dan
sampai tanggal tertentu saja.

21. Aktifkan fasilitas Drill down untuk bagian detail, petunjuk : klik kanan pada
detail, dan pilih Format Section, beri tanda check pada Hide (Drill down ok)

Dengan petunjuk instruktur anda, buatlah report untuk mailing label dan cross tab.

55

Anda mungkin juga menyukai