modulvisualbasic

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

Upload: cent-uchiha

Post on 03-Jul-2015

465 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ModulVisualBasic

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

Page 2: ModulVisualBasic

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

Page 3: ModulVisualBasic

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

Page 4: ModulVisualBasic

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

Page 5: ModulVisualBasic

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

Page 6: ModulVisualBasic

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

Page 7: ModulVisualBasic

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

Page 8: ModulVisualBasic

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

Page 9: ModulVisualBasic

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

Page 10: ModulVisualBasic

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

Page 11: ModulVisualBasic

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

Page 12: ModulVisualBasic

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

Page 13: ModulVisualBasic

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

Page 14: ModulVisualBasic

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

Page 15: ModulVisualBasic

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

Page 16: ModulVisualBasic

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

Page 17: ModulVisualBasic

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

Page 18: ModulVisualBasic

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

Page 19: ModulVisualBasic

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

Page 20: ModulVisualBasic

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

Page 21: ModulVisualBasic

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

Page 22: ModulVisualBasic

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

Page 23: ModulVisualBasic

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

Page 24: ModulVisualBasic

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

Page 25: ModulVisualBasic

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

Page 26: ModulVisualBasic

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

Page 27: ModulVisualBasic

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

Page 28: ModulVisualBasic

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

Page 29: ModulVisualBasic

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

Page 30: ModulVisualBasic

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

Page 31: ModulVisualBasic

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

Page 32: ModulVisualBasic

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

Page 33: ModulVisualBasic

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

Page 34: ModulVisualBasic

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

Page 35: ModulVisualBasic

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

Page 36: ModulVisualBasic

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

Page 37: ModulVisualBasic

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

Page 38: ModulVisualBasic

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

Page 39: ModulVisualBasic

.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

Page 40: ModulVisualBasic

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

Page 41: ModulVisualBasic

.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

Page 42: ModulVisualBasic

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

Page 43: ModulVisualBasic

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

Page 44: ModulVisualBasic

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

Page 45: ModulVisualBasic

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

Page 46: ModulVisualBasic

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

Page 47: ModulVisualBasic

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

Page 48: ModulVisualBasic

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

Page 49: ModulVisualBasic

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

Page 50: ModulVisualBasic

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

Page 51: ModulVisualBasic

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

Page 52: ModulVisualBasic

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

Page 53: ModulVisualBasic

"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

Page 54: ModulVisualBasic

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

Page 55: ModulVisualBasic

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