modulvisualbasic
TRANSCRIPT
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