Você está na página 1de 57

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Ucapan Terima Kasih


Tentu saja saya ucapkan terima kasih kepada teman-teman yang telah bersedia mengikuti
workshop kali ini dan membaca modul ini. Kemudian buat dosen-dosen yang telah menunjukkan
jalan yang terang mengenai seluk-beluk database perancangan dan implementasinya. Kepada
rekan-rekan aslab yang telah memberikan saran, dan tak lupa ikut serta dalam mengoreksi tata
bahasa serta memberikan semangat untuk terus menulis.

Modul Ini Untuk Siapa ?


Modul ini ditujukan bagi mereka yang merasa “beginner” dan ingin mengetahui mengenai
database yang akan dimanipulasi menggunakan visual basic. Belajar pemrograman database
VB ini harus punya kesabaran yang tinggi, karena nanti akan menulis banyak script or coding.
Belajarlah agar cepat dapat mengerti dan bisa diaplikasikan.

, uuu itu bahasa apa yach, sepertinya kayak bahasa klo penulis lagi “disandra” ???

Kritik & Saran


Sebagai penulis yang merasa belum sempurna, diharapkan memberi kritik & saran yang sebagai
penyempurnaan modul ini. Untuk lebih fokusnya agar terjadi komunikasi 2 arah, silahkan email
ke penulis : eddyal2003@gmail.com atau eddy_al2003@yahoo.com. Selain saran dan kritik,
para peserta dapat menanyakan langsung.

Bandung, 17 Oktober 2015

Eddy Alfendy Lubis

Halaman 1
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Terminologi Database

Pendahuluan
Visual Basic merupakan bahasa pemrograman yang memungkinkan kita untuk membangun
suatu sistem informasi menggunakan berbagai macam database yang ada. Database yang dapat
digunakan anatar lain seperti : Microsoft Access, Microsoft SQL Server, MySQL, Paradox, Oracle,
dan sebagainya. Pada workshop kali ini, tema yang diambil adalah “Pemrograman Dasar
Database Dengan VB 6 & Microsoft Access”. Jadi untuk masalah databasenya kita akan
menggunakan Microsoft Access dan Interfacenya Visual Basic dengan referensinya Microsoft
ActiveX Data Object (ADO).

Konsep Normalisasi
Normalisasi merupakan kondisi dimana relasi antar tabel telah terbentuk dengan baik sesuai
kaidah dalam sebuah database. Normalisasi yang umum digunakan sampai tahap Third Normal
Form (3 NF). Asumsinya adalah teman-teman paling tidak telah mengetahui dasar dari
pembuatan normalisasi. Lalu normalisasi untuk apa ??? Normalisasi diperlukan agar hasil
rancangan tabel-tabel nanti sesuai dengan masalah yang akan dihadapi. Kemudian normalisasi
juga dapat dikatakan sebagai alat untuk menuju sasaran perancangan basis data, yakni :
menghasilkan himpunan skema relasi yang mengizinkan pengguna untuk menyimpan informasi
tanpa adanya redudansi data serta mengizinkan pengguna untuk mencari informasi yang
dikehendaki dengan cepat dan mudah.

Secara singkat & mudah tentunya, tahap normalisasi adalah sebagai berikut :
Tahap UnNormalized
Tulis data apa adanya yang diperoleh dari hasil analisa faktur atau tanda bukti lainnya.
Tentunya susunan field dan isinya masih benar-benar tidak teratur.

First Normal Form (1NF)


Lengkapi data-data pada bentuk UnNormalized, sehingga setiap record data terisi dengan
kata lain tidak ada field yang kosong (tidak terisi nilainya).

Second Normal Form (2NF)


Pisahkan antara Tabel Master dan Tabel Transaksi atau dengan kata lain pisahkan antara
yang Primary Key dengan yang bukan.

Third Normal Form (3NF)


Tulis lagi semua table master yang telah terbentuk di 2NF, kemudian detailkan lagi atau
brake down kembali tabel transaksi jika dimungkinkan sehingga menjadi tabel transaksi
header dan tabel transaksi detail.

Halaman 2
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Tapi ketika saya ingin melakukan normalisasi, kadang-kadang saya juga tidak mengikuti aturan.
Biasanya saya langsung ke tahap 3NF, karena jika kita telah biasa menganalisa sebuah faktur
(tanda bukti), maka tidak menjadi masalah untuk langsung ke tahap 3NF. Tahap 3NF nantinya
akan terbentuk tabel-tabel yang sudah normal dan siap untuk diimplementasi ke database.
Berikut ini gambaran tentang proses normalisasi.

FAKTUR PROSES ANALISA TABEL-TABEL DALAM


( TANDA BUKTI ) ( NORMALISASI ) KEADAAN NORMAL

Info :
Ketika kita sudah terjun ke lapangan (dunia kerja), ada kalannya terjadi ketidaksesuaian antara
hasil analisa/perencanaan dengan hasil implementasi. Yang terpenting adalah “aplikasi sesuai
dengan keinginan pengguna” dengan tidak peduli akan proses yang ada > atau dengan kata
lain kita gunakan “Management By Objective”.

Konsep Tabel
Kemudian terdapat istilah pada tabel, seperti :
Tabel Master
Tabel master merupakan tabel yang mewakili entitas tertentu, Ia berdiri independen.
Tabel master yang nantinya akan dilakukan proses manipulasi data, seperti : update,
insert dan delete. Contohnya : tabel barang, mahasiswa, dosen, mata kuliah, customer,
supplier, dan sebagainya.

Tabel Transaksi
Tabel transaksi merupakan tabel yang terbentuk dari hasil transaksi pada suatu form
transaksi, Ia tidak bersifat independen atau bergantung dengan tabel lain. Contohnya :
tabel transaksi pemesanan barang, transaksi penjualan, dsb. Tabel transaksi ini dibagi
menjadi 2, yaitu :
ƒ Transaksi Header
Tabel dimana setiap field hanya ditulis / diinput / disimpan sekali. Artinya dalam
sebuah faktur contohnya tanggal faktur, nomor faktur, id pelanggan akan ditulis /
diinput satu kali saja atau tidak berulang.
ƒ Transaksi Detail
Tabel dimana setiap field yang ditulis / diinput / disimpan boleh lebih dari satu kali.
Artinya dalam satu nomor faktur, kita dapat melakukan transaksi lebih dari satu kali.
Misalnya kita dapat memesan 2 monitor, 1 keyboard, 1 “tikus”. Dimana data tersebut
boleh berulang dalam satu nomor faktur.

Halaman 3
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Konsep Query
Query adalah sebuah objek seperti halnya tabel. Query dapat dibentuk dari satu atau lebih tabel
yang telah terelasi. Di query kita akan menemukan sebuah fleksibilitas dari perancangan tabel,
kita dapat melakukan manipulasi data, melakukan seleksi tabel berdasarkan kriteria tertentu
dan sebagainya. Intinya query ini adalah “by request” atau sesuai permintaan dari pengguna.
Nanti kita akan memanfaatkan query untuk pembuatan laporan.

Konsep Interface ke Database


Pada Visual Basic, teknik pengaksesan ke database dapat dibagi menjadi dua, yakni :
Pengaksesan Diatur Oleh Sistem Operasi
Teknik ini menggunakan Data Source (ODBC) sebagai jembatan atau perantara ketika kita
akan mengkoneksikan database dengan Visual Basic. Pada teknik ini, sistem operasi akan
melakukan tugasnya sebagai manajer yang mengatur setiap koneksi ke database yang
ada pada komputer. Tentunya database yang diakses adalah database yang sudah
terdaftar dalam sistem operasi atau dengan kata lain, database tersebut telah memiliki
driver yang ditunjukkan pada Data Source (ODBC).

Jadi untuk mengkoneksikan ke database, kita perlu membuat Data Source yang baru (new
data source) pada Tab User DSN. Pada tab itu, kita buat Data Source dengan terlebih
dahulu menentukan driver yang sesuai, kemudian nama server, teknik authentifikasi ke
database, nama database. Setelah data source terbentuk, maka kita dapat melakukan tes
koneksi ke database. Jika sukses, berarti data source kita dapat mengakses database
dengan baik.

Halaman 4
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Pengaksesan Diatur Oleh Visual Basic


Pada teknik ini, Visual Basic selain bertindak sebagai pemrograman ke databasenya, ia
juga mengatur koneksi yang terjadi pada database. Interface atau referensi yang
digunakan dapat berupa :
ƒ Data Access Objects (DAO)
ƒ Remote Data Objects (RDO)
ƒ ActiveX Data Objects (ADO)
Visual Basic juga menyediakan kontrol-kontrol interface yang terdapat pada menu
Component-nya untuk memudahkan user dalam menghubungkan databasenya dengan
Visual Basic. Seperti Data (DAO), Microsoft Remote Data Control (MSRDC), Ado Data
Control (ADODC), dan sebagainya
Namun demikian, Visual Basic juga memberikan keleluasaan bagi mereka yang menyukai
menulis program dalam menghubugkan ke databasenya. Jadi untuk menghubungkan ke
database, kita juga dapat mengetik script pada editor Visual Basic baik pada form maupun
modulenya. Bagi sebagian orang, mereka lebih menyukai teknik ini, selain fleksibel
mereka juga menganggap teknik mengkoneksikan database lewat script lebih “elegan”.

Gambar teknik pengaksesan database dari visual basic

Gambar di atas memberikan gambaran tentang bagaimana sebuah database dapat


terkoneksi ke Visual Basic. Setiap metode atau interface memiliki kelebihan dan
kekurangan masing-masing. Jadi disini dituntut kejelian pemrogram dalam memanfaatkan
fasilitas yang tersedia. Pemrogram harus tahu dengan baik, kapan ia harus memilih
sebuah interface dengan untung ruginya.

Halaman 5
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Nah yang akan kita bahas adalah ActiveX Data Object (ADO), tanya kenapa ???
Begini ceritanya. ADO merupakan teknologi terbaru Microsoft dalam pengaksesan data
(database) dan merupakan interface ke OLEDB. Sedangkan OLEDB merupakan strategi level
bawah Microsoft sebagai interface ke seluruh tipe dari data. Bingung nggak ? Sama donk, klo
bingung liat gambar aja yuk.

Gambar ADO sebagai interface pengaksesan ke database

Jadi, ADO menawarkan sesuatu yang lebih dibanding metode yang telah disebutkan.
Sebenernya sih ada yang namanya ADO Data Control (ADODC) yang terdapat pada komponen
visual basic. Menu Project Component (CTRL+T) Microsoft Ado Data Control 6.0 (OLEDB) yang
merupakan kontol bagi interface ADO. Hehehe tapi kita nggak pake tuh, kan judul workshop
kita pemrograman database, jadi kita ketik aja kali yach, I’m so sorry .

Gambar kontrol ADODC dari menu Project Component

Halaman 6
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Konsep Reference
Ketika kita akan menggunakan suatu teknik pengaksesan ke data base, jangan lupa untuk
mengaktifkan salah satu referensinya pada menu Project References. Kemudian aktifkan salah
satu saja. Jika kita gunakan ADO, maka referencesnya Microsoft ActiveX Data Objects 2.x Library
(semakin tinggi versinya semakin lengkap fitur yang ditawarkan).

Konsep Form Sebagai Interface


Form ini berguna untuk pengguna akhir (end-user) berhubungan dengan databasenya. Bagi si
perancang aplikasi, form adalah tempat kita menaruh kontrol-kontrol untuk manipulasi
database. Begitu ceritanya. Form ini juga terbagi menjadi 2, yaitu :
Form Master
Form yang ditujukan untuk menangani tabel master, biasanya lebih sederhana and simple.
Pada form ini akan dilakukan proses manipulasi data pada tabel master seperti proses
insert, update dan delete data. Selain itu kita juga akan gunakan tombol-tombol navigasi
untuk “menggerakkan” sebuah record dalam tabel.
Form Transaksi
Form yang ditujukan untuk menangani tabel transaksi, biasanya lebih rumit and kadang
bisa melibatkan lebih dari 3 tabel. Yang jelas konsep header & detail ada di situ.
Jika mendesain form, buatlah dengan perasaan yang mendalam, anggaplah kita lagi mendesain
rumah untuk kita tinggali, pasti kita akan buat sebagus mungkin kan ? hehehe jangan asal-
asalan, gunakan rasa seni kita, curahkan perasaan kita di setiap sudutnya (au ah elap). Buat
orang yang melihat itu terkesan dan betah melihat form yang kita buat. Jika perlu pasang skin
biar tambah memikat (hehehe bukan susuk loh). Jika masih belum puas, tambahkan animasi
teks biar “hidup”.
Halaman 7
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Namun tapi ada form yang digunakan untuk hal-hal khusus, seperti form untuk Menu (MDI
Multiple Document Interface), form untuk login, form untuk animasi loading, dan sebagainya.
Form-form ini memang sengaja dibuat untuk menunjang form utama kita yakni form master
dan form transaksi dalam sebuah kesatuan sistem.

Konsep Kontrol
Kontrol merupakan salah satu obyek atau komponen suatu aplikasi yang diletakkan di dalam
form untuk membentuk suatu program aplikasi. Jadi sebuah form biasanya disusun atas kontrol-
kontrol tertentu sesuai kebutuhan. Kontrol inilah yang nantinya akan berfungsi sebagai interface
antara user dengan program aplikasi yang dibangun.
Sekarang kita bahas yach sedikit mengenai kontrol yang standard, hehehe bagi yang “expert”
gak usah dibaca. Kontrol ini terletak pada Toolbox. Jika kontrol tidak terlihat, maka klik menu
View Toolbox. Tapi maaf yach, saya nggak akan jelaskan satu-satu, soalnya males dan kayaknya
dah pada tau kan ?

Pointer PictureBox

Label TextBox

Frame CommandButton

OptionButton
CheckBox

ComboBox ListBox

HScrollBar VScrollBar
Timer DriveListBox

DirListBox FileListBox

Shape Line

Image Data

OLE

Gambar Kontrol Standard Pada Visual Basic

Terlihat sebuah kontrol dengan nama Data dengan referensi Microsoft DAO 3.51 Object Library.
Data ini juga merupakan kontrol yang dapat digunakan untuk mengakses database. Namun
memiliki banyak kelemahan dalam hal fleksibilitas koneksi. Oleh karena itu kita tidak akan
memakainya.
Halaman 8
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Kontrol Untuk Database


Pada bagian ini saya akan jelaskan kontrol yang nanti kita akan pakai dalam pembuatan
database, seperti : DataGrid, ListView dan SSTab. Ketiga kontrol ini secara default tidak terdapat
di Toolbox Standard. Jadi kita perlu menambahkannya dari component.
Caranya : menu Project Components (CTRL+T)
ƒ Untuk kontrol DataGrid, pilih Microsoft DataGrid Control 6.0 (OLEDB)
ƒ Untuk Kontrol ListView, pilih Microsoft Windows Common Controls 6.0 (SP6)
ƒ Untuk kontrol SSTab, pilih Microsoft Tabbed Dialog Control 6.0

SSTab

Data Grid

List View

Gambar Kontrol Untuk Database Pada Form

Adapun fungsi dari masing-masing kontrol adalah sebagai berikut :


SSTab berfungsi untuk menghemat pemakaian form, jadi dalam sebuah form kita dapat
meletakkan banyak objek di setiap tab yang ada.
Data Grid berfungsi untuk menampilkan data maupun manipulasi (insert, update dan
delete data) langsung darinya. Juga untuk memudahkan kita dalam mengambil data dari
tabel master untuk form transaksi.
List View kita manfaatkan untuk mengentry data ke form transaksi. Jadi data yang
dimasukkan lewat list view dapat berulang. Pada List View perlu dilakukan pengaturan
sebelum digunakan. Caranya klik kanan pada list view properties. Pada combo view,
gantilah menjadi 3-IvwReport, Pada tab column header, tambahkan field judul (insert
column) & sesuaikan nama serta ukuran yang akan ditampilkan.
Halaman 9
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Konsep Report
Laporan / report berguna untuk menampilkan data yang berasal dari tabel atau query pada
database. Seperti : laporan data pelanggan, laporan data barang, dan sebagainya. Namun
laporan ini juga dapat digunakan untuk membuat tanda bukti seperti faktur. Untuk membuat
laporan, Visual Basic 6 menyediakan feature seperti data report dan crystal report. Namun jika
kita ingin membuat laporan yang benar-benar profesional, maka kita dapat menggunakan
Crystal Report Professional versi 12 (info : versi bajakannya sudah ada di pusat perbajakan di
jakarta). Namun jika kita seorang yang kreatif, maka kita dapat “mengawinkan” antara Visual
Basic dengan HTML untuk laporannya dengan VBScript tentunya.
Keuntungan dari pembuatan laporan berupa HTML adalah, ia akan kompatibel di semua
platform komputer. Namun dibutuhkan kecermatan serta ketelitian dalam pembuatan laporan
menggunakan HTML, karena menurut saya agak rumit bagi orang yang awam dengan HTML.
Jadi pada workshop kita kali ini, saya akan mencoba mengenalkan pembuatan laporan dengan
data report dengan sedikit script pemrograman.

Software Pihak Ketiga


( Crystal Report )

Data Visual Basic Report Laporan


Tabel / Query Embedded ( Report )

Primitive Report
( HTML, TXT, dsb )

Konsep Validasi
Ketika user ingin menginput field yang bertipe numerik, maka jika ia menginput berupa huruf
atau karakter spesial program akan error. Oleh karena itu dibutuhkan suatu prosedur validasi
masukan yang berfungsi mengontrol input dari user. Validasi memungkinkan kita untuk
memberi tahu pengguna jika ia salah menginput data dengan pesan yang mudah dimengerti.
Berikut ini salah satu contoh sederhana penggunaan validasi untuk mengontrol karakter bertipe
numerik :

Private Sub txtqty_KeyPress(KeyAscii As Integer)


If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack Then Exit Sub

ElseIf KeyAscii = vbKeyReturn Then


txtqty.SetFocus
Else
MsgBox "Data Harus Angka..!", vbOKOnly + vbInformation, "Pesan Kesalahan" KeyAscii =
vbKeyBack
End If
End Sub

Halaman 10
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Konsep Pengampunan
Jika kita ingin mengeksekusi suatu perintah (melalui command button) baik itu save, insert,
update dan delete data, maka kita akan dihadapkan dengan pertanyaan “Apakah Anda yakin
melakukan ini ?” jika jawabannya yakin (yes), maka proses eksekusi dilanjutkan, jika tidak yakin
(no) maka proses eksekusi dibatalkan dan keluar dari prosedur eksekusi.
Konsep ini berguna untuk meyakinkan pengguna dengan apa yang ia kerjakan. Karena biasanya
program aplikasi yang diibuat tidak menyertakan prosedur untuk membatalkan (undo). Namun
jika ditinjau dari segi pemrograman terstruktur, maka konsep ini jelas tidak sesuai, karena jika
tidak yakin maka akan keluar posedur (exit sub) begitu saja. Berikut ini adalah contoh sederhana
dari penggunaan konsep pengampunan :

Private Sub cmddel_Click()


If MsgBox("Apakah Data Akan Dihapus [Y/T] ?", vbYesNo + vbQuestion, "Pesan Hapus") =
vbYes Then
RsObat.Delete
RsObat.MoveFirst
Tampil
DataGrid1.Refresh
Else
Exit Sub
End If
End Sub

Konsep Otomatisasi Penomoran


Suatu tabel pada umumnya mempunyai suatu kunci unik (primary key). Kunci ini tentunya telah
mengikuti pola penomoran tertentu. Seperti : F0001 untuk record faktur ke-1, B0001 untuk
record barang ke-1, dan sebagainya. Ketika kita ingin melakukan penambahan record pada
suatu tabel, maka sebaiknya dilakukan penomoran kunci secara otomatis untuk menghindari
kesalahan waktu kita melakukan input. Berikut ini adalah contoh sederhana dari penggunaan
konsep otomatisasi penomoran :

Private Sub KosongPesan()


Dim NoPes As Integer
txttanggal.Text = Date
If RSPesanH.RecordCount = 1 Then
txtnopesan.Text = "F00001"
Else RSPesanH.MoveLast

NoPes = Val(Right(RSPesanH![NoPesan], 5)) + 1


txtnopesan.Text = Format(NoPes, "F00000")
End If
End Sub
Halaman 11
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Konsep Prosedur
Pada Visual Basic, kita mengenal 2 scope prosedur, yaitu : private dan public, sedang dari sisi
tipenya ada sub dan function. Pada workshop kita kali ini, kita akan menggunakan sub dan
kedua scope prosedur. Private sub berarti prosedurnya hanya dikenal di salah satu form saja.
Sedangkan Public sub berarti prosedurnya dikenal diseluruh form dan pada umumnya kita
membuatnya di sebuah module.
Nanti kita akan membuat banyak prosedur baru (private sub) pada setiap form, karena agar
program kita lebih simpel dan jika terjadi kesalahan mudah diperbaiki. Pemanggilan prosedur
dilakukan dengan menulis nama prosedurnya atau menggunakan perintah call nama prosedur.
Jadi siap-siap untuk mengetik banyak prosedur.

Konsep SQL
Kita akan memanfaatkan statement SQL dalam Visual Basic untuk melakukan seleksi atas
sesuatu hal (fungsi select). Hal ini berarti SQL bertindak sebagai embedded language. Yang
akan kita gunakan dalam hal ini adalah bahasa DML (Data Manipulation Language) terutama
perintah select. Adapun sintaks lengkap dari perintah select adalah sebagai berikut :

SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[INTO OUTFILE 'file_ name' export_options |
INTO DUMPFILE 'file_name']
[FROM table_references
[WHERE where_definition]
[GROUP BY {col_name | expr | position} [ASC
| DESC], ... [WITH ROLLUP]]
[HAVING where_definition]
[ORDER BY {col_ name | expr | position} [ASC
| DESC] , ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[FOR UPDATE | LOCK IN SHARE MODE]]
Halaman 12
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Perancangan & Implementasi

Konsep 1 Berdo’a sesuai kepercayaannya, karena ini adalah faktor x terpenting yang akan
menentukan keberhasilan kita dalam membuat sesuatu (project)

Konsep 2 Buat folder sendiri untuk menyimpan seluruh pekerjaan (database & project
visual basic) yang akan kita buat, Nama foldernya adalah nama peserta masing-
masing.

Konsep 3 Buat database menggunakan Microsoft Access berikut tabel-tabel & query yang
sudah ternormalisasi, simpan hasilnya di folder yang sudah kita buat.

Konsep 4 Setelah sukses membuat tabel-tabel & query, maka kita akan mengisi data pada
tabel master sesuai nama & fungsinya. Untuk tabel transaksinya tidak perlu diisi
datanya karena akan diisi melalui form transaksi.

Konsep 5 Buat Project baru menggunakan Visual Basic dengan kriteria “Standard EXE”,
kemudian simpan di folder yang sama dengan database Access kita.

Konsep 6 Tambahkan beberapa form, semoga waktunya cukup. Form ini mempunyai
fungsi yang khusus dan ditujukan untuk menangani database kita. Form ini
nantinya akan berupa form master, form transaksi dan form menu.

Konsep 7 Desainlah form sesuai tujuannya. Berikan nama pada masing-masing kontrol.
Setelah form selesai didesain, maka kita mulai mengetik coding pada area view
code.

Konsep8 Tambahkan sebuah modul, menu Project Add Module Open. Bagian ini
berguna untuk deklarasi variabel global dan untuk membuat prosedur koneksi ke
database, hehehe ketik terus pokoknya.

Konsep 9 Seandainya masih ada waktu, kita juga akan buat laporan “sangat sederhana”
menggunakan “data report”. Dari menu Project Add Data Report

Konsep 10 Jangan heran yach, nanti kita akan buat banyak prosedur, “hey jelasin tuh dia
fungsinya untuk apa ?” iya nanti saya jelaskan, ini baru konsep, sabar-sabar
nyebut donk.

Konsep 11 Karena ini adalah pelajaran mengetik, jadi gunakan 11 jari Anda untuk mengetik
dengan cepat dan kita berlomba dengan waktu.

Konsep 12 Berdo’a kembali, agar hasilnya sesuai yang kita inginkan


Halaman 13
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Studi Kasus

PT. JavaCom merupakan perusahaan yang bergerak dalam bidang penjualan komputer
dan aksesorisnya. PT. JavaCom ingin melakukan peningkatan pelayanan terhadap pelanggan.
Hal ini dilakukan dengan menerapkan sistem komputerisasi penjualan pada perusahaannya.
Dalam hal ini, bagian penjualan berasumsi bahwa stok barang yang akan dijual dalam
keadaan terpenuhi. Selanjutnya pembeli dapat membeli komputer dan aksesorisnya dengan
cara tunai. Dalam hal ini, pembeli tidak perlu melakukan pemesanan terlebih dahulu ketika ingin
membeli barang.
Data yang dicatat oleh bagian penjualan kemudian direkap dan dibuatkan laporan sesuai
dengan kebutuhan sistem. Laporan yang diinginkan pimpinan adalah laporan daftar barang,
laporan pembeli, dan laporan penjualan.
Dari Kegiatan permasalahan yang telah diuraikan, maka terdapat tiga proses yang terjadi
pada PT. Javacom, yakni :
1. Proses Pembelian
Pembeli dapat datang langsung untuk membeli barang yang diperlukan. Pembelian dilakukan
secara tunai. Kemudian barang-barang yang dibeli langsung direcord ke dalam komputer.
2. Proses Pembayaran
Setelah pembeli membeli barang, maka pembeli melakukan proses pembayaran berdasarkan
barang yang telah dibeli.
3. Proses Pembuatan Laporan
Setelah proses pembelian dan pembayaran dilakukan, maka dibuatlah laporan yang
dibutuhkan pimpinan perusahaan. Laporan yang diinginkan pimpinan adalah laporan daftar
barang, laporan pembeli, dan laporan penjualan.

Skema DFD

Level Kontek

Data Customer
SISTEM
CUSTOMER PENJUALA PIMPINAN
• L. Daftar Brg
Data Bukti N • L. Customer
• L. Penjualan

Halaman 14
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Level Nol

F. Barang
Data Customer PROSES
CUSTOMER BELI F. Customer
Data Customer
1.0

Data Customer
Data Barang

PROSES
BAYAR F. Bayar
Data Pembayaran
2.0

Data Customer
Data Barang
Data Bayar

PROSES
Data Bukti LAPORAN • L. Daftar Brg PIMPINAN
3.0 • L. Customer
• L. Penjualan

Skema Normalisasi 3 NF
Halaman 15
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Step By Step

Akhirnya sampailah kita pada saat yang berbahagia dengan selamat dan sentosa. Ya sudah
kita mulai membuat project…semangat !!!

Part 1. Microsoft Access


1. Buat Folder baru dengan nama masing-masing di drive D:\
2. Buka Microsoft Access, lalu buat database baru (create new database) dengan nama
penjualan.mdb, simpan di folder yang telah dibuat, misal D:\yoga\penjualan.mdb

3. Buat Tabel Barang dengan field sebagai berikut (KodeBarang sebagai primary key):

4. Isi tabel barang sesuai selera Anda (tapi yang ada hubungannya dengan komputer)
minimal 10 record barang.
5. Buat Tabel Customer dengan field sebagai berikut (KodeCustomer sebagai primary key):

6. Isi tabel customer sesuai selera Anda minimal 5 record customer.

Halaman 16
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

7. Buat Tabel BeliHeader dengan field sebagai berikut (NoFaktur sebagai primary key) :

8. Buat Tabel BeliDetail dengan field sebagai berikut :

9. Buat Tabel Pembayaran dengan field sebagai berikut (NoBayar sebagai primary key) :

10. Buat Query Qpenjualan dengan field sebagai berikut :

Halaman 17
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Part 2. Microsoft Visual Basic


1. Bukalah program visual basic, kemudian buat project baru dengan jenis Standard Exe.
2. Tambahkan 5 form baru, sehingga terdapat 6 form yang akan kita gunakan (form barang,
form customer, form laporan, form menu utama, form penjualan dan form pembayaran.
3. Sebelum mendesain form, jangan lupa tambahkan component data grid, list view dan
sstab dari menu component (CTRL+T) > lihat cara sebelumnya.
4. Kemudian gunakan referensi ADO yaitu Microsoft Activex Data Object 2.x dari menu
project references.
5. Berikut ini desain menu utama.

6. Berkut ini desain menu laporan.

Halaman 18
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

7. Berikut ini desain form barang.

8. Berikut ini desain form customer.

Halaman 19
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

9. Berikut ini desain form penjualan.

10. Berikut ini desain form pembayaran.


Halaman 20
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

11. Berikut ini desain laporan data barang

12. Berikut ini desain laporan data customer

13. Berikut ini desain laporan penjualan

Halaman 21
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

14. Berikut ini desain laporan pembayaran

15. Berikut ini desain faktur penjualan

Halaman 22
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Listing Program Lengkap

Form Barang
Public char As String
Public v, i As Integer

Private Sub Form_Load()


Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
Call BukaKoneksi
Call Tampil
Call DGBarang
Barang.Caption = " Master Barang "
char = Me.Caption
v = Len(char)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Tombol True
Call Kosong
MenuUtama.Show
Unload Me
End Sub

Private Sub Tampil() On


Error Resume Next
txtkode.Text = RSBarang!KodeBarang
txtnama.Text = RSBarang!NamaBarang
txtharga.Text = RSBarang!Harga
txtjenis.Text = RSBarang!Jenis
On Error GoTo
0 End Sub
Private Sub Kosong()
txtkode.Text = ""
txtnama.Text = ""
txtharga.Text = ""
txtjenis.Text = ""
End Sub

Private Sub DGBarang()


Set RSBarang = New ADODB.Recordset
RSBarang.CursorLocation = adUseClient
RSBarang.Open "select * from barang", DB, adOpenDynamic,
adLockOptimistic
Set DataGrid1.DataSource =
RSBarang AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub AturDataGrid()
DataGrid1.Columns(0).Width = 1200
DataGrid1.Columns(1).Width = 3200
DataGrid1.Columns(2).Width = 1600
DataGrid1.Columns(3).Width = 1600
End Sub
Halaman 23
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Private Sub Tombol(Buka As


Boolean) cmdadd.Enabled = Buka
cmdedit.Enabled = Buka
cmddel.Enabled = Buka
cmdfind.Enabled = Buka
End Sub

Private Sub KosongBarang()


Dim Kobar As Integer
If RSBarang.RecordCount = 0
Then txtkode.Text = "B0001"
Else
RSBarang.MoveLast
Kobar = Right(RSBarang![KodeBarang], 4) +
1 txtkode.Text = Format(Kobar, "B0000")
End If
End Sub
Private Sub cmdadd_Click()
Call Kosong
Tombol False Call
KosongBarang
txtnama.SetFocus
End Sub

Private Sub cmdsave_Click()


On Error Resume Next
If MsgBox("Apakah Data Akan Disimpan [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Simpan") = vbYes Then
RSBarang.AddNew
RSBarang!KodeBarang =
txtkode.Text RSBarang!NamaBarang
= txtnama.Text RSBarang!Harga =
txtharga.Text RSBarang!Jenis =
txtjenis.Text RSBarang.Update
DataGrid1.Refresh
Call Kosong
Tombol True
Else
Exit
Sub End If
On Error GoTo
0 End Sub
Private Sub cmdedit_Click()
RSBarang!KodeBarang = txtkode.Text
RSBarang!NamaBarang = txtnama.Text
RSBarang!Harga = txtharga.Text
RSBarang!Jenis = txtjenis.Text
RSBarang.Update
DataGrid1.Refresh
End Sub

Private Sub cmddel_Click()


If MsgBox("Apakah Data Akan Dihapus [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Hapus") = vbYes Then
RSBarang.Delete
RSBarang.MoveFirst
Call Tampil

Halaman 24
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

DataGrid1.Refresh
Else
Exit Sub
End If
End Sub

Private Sub cmdexit_Click()


If MsgBox("Apakah Akan Keluar Form [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Keluar") = vbYes Then
Call Kosong
Tombol True
MenuUtama.Show
Unload Me
Else
Exit
Sub End If
End Sub

Private Sub cmdfind_Click()


CARI = InputBox("Ketik Kode Barang Yang Dicari !", "Cari
Barang") Dim Ketemu As Integer
Ketemu = 0
RSBarang.MoveFirst Do
Until RSBarang.EOF
If UCase(Trim(RSBarang!KodeBarang)) = UCase(Trim(CARI))
Then Ketemu = 1
Exit
Do End If
RSBarang.MoveNext
Loop
If Ketemu = 1 Then
Call
Tampil Else
MsgBox "Data Tidak Ditemukan", vbOKOnly, "Pesan
Cari" End If
End Sub

Private Sub cmdfirst_Click()


RSBarang.MoveFirst
Call Tampil
Tombol True
End Sub

Private Sub cmdnext_Click()


RSBarang.MoveNext
If RSBarang.EOF Then
MsgBox "Data Sudah Di Akhir", vbOKOnly, "Pesan
Next" RSBarang.MoveLast
End If Call
Tampil
Tombol True
End Sub

Private Sub cmdprev_Click()


RSBarang.MovePrevious If
RSBarang.BOF Then
MsgBox "Data Sudah Di Awal", vbOKOnly, "Pesan
Previous" RSBarang.MoveFirst
End If

Halaman 25
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Call Tampil
Tombol True
End Sub

Private Sub cmdlast_Click()


RSBarang.MoveLast
Call Tampil
Tombol True
End Sub

Private Sub txtcarikode_Change()


Set RSBarang = New ADODB.Recordset
RSBarang.CursorLocation = adUseClient
RSBarang.Open "Select * From Barang Where KodeBarang Like '" &
txtcarikode.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource =
RSBarang AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub txtcarinama_Change()
Set RSBarang = New ADODB.Recordset
RSBarang.CursorLocation = adUseClient
RSBarang.Open "Select * From Barang Where NamaBarang Like '" &
txtcarinama.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource =
RSBarang AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub Timer1_Timer()
Me.Caption = Left$(char, i)
i = i + 1
If i = v Then
i = 0
End If
End Sub

Private Sub txtharga_KeyPress(KeyAscii As Integer)


If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack
Then
Exit Sub
ElseIf KeyAscii = vbKeyReturn
Then txtharga.SetFocus
Else
MsgBox "Data Harus Angka..!", vbOKOnly + vbInformation, "Pesan
Kesalahan"
KeyAscii =
vbKeyBack End If
End Sub

Form Customer
Public char As String
Public v, i As Integer

Private Sub Form_Load()


Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2

Halaman 26
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Call BukaKoneksi
Call Tampil Call
DGCustomer
Customer.Caption = " Master Customer " char =
Me.Caption
v = Len(char)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Tombol True
Call Kosong
MenuUtama.Show
Unload Me
End Sub

Private Sub Tampil() On


Error Resume Next
txtkode.Text = RSCustomer!KodeCustomer
txtnama.Text = RSCustomer!NamaCustomer
txtalamat.Text = RSCustomer!Alamat
txtkota.Text = RSCustomer!Kota
txttelepon.Text = RSCustomer!Telepon On
Error GoTo 0
End Sub

Private Sub Kosong()


txtkode.Text = ""
txtnama.Text = ""
txtalamat.Text = ""
txtkota.Text = ""
txttelepon.Text = ""
End Sub

Private Sub DGCustomer()


Set RSCustomer = New ADODB.Recordset
RSCustomer.CursorLocation = adUseClient
RSCustomer.Open "select * from customer", DB, adOpenDynamic,
adLockOptimistic
Set DataGrid1.DataSource =
RSCustomer AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub AturDataGrid()
DataGrid1.Columns(0).Width = 1200
DataGrid1.Columns(1).Width = 2000
DataGrid1.Columns(2).Width = 2000
DataGrid1.Columns(3).Width = 1200
DataGrid1.Columns(4).Width = 1200
End Sub

Private Sub Tombol(Buka As


Boolean) cmdadd.Enabled = Buka
cmdedit.Enabled = Buka
cmddel.Enabled = Buka
cmdfind.Enabled = Buka
End Sub

Private Sub KosongCustomer()

Halaman 27
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Dim Kode As Integer


If RSCustomer.RecordCount = 0
Then txtkode.Text = "K0001"
Else
RSCustomer.MoveLast
Kode = Right(RSCustomer![KodeCustomer], 4) +
1 txtkode.Text = Format(Kode, "K0000")
End If
End Sub
Private Sub cmdadd_Click()
Call Kosong
Tombol False
Call KosongCustomer
txtnama.SetFocus
End Sub

Private Sub cmdsave_Click()


On Error Resume Next
If MsgBox("Apakah Data Akan Disimpan [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Simpan") = vbYes Then
RSCustomer.AddNew
RSCustomer!KodeCustomer =
txtkode.Text RSCustomer!NamaCustomer
= txtnama.Text RSCustomer!Alamat =
txtalamat.Text RSCustomer!Kota =
txtkota.Text RSCustomer!Telepon =
txttelepon.Text RSCustomer.Update
DataGrid1.Refresh
Call Kosong
Tombol True
Else
Exit Sub
End If
Tombol True
On Error GoTo
0 End Sub
Private Sub cmdedit_Click()
RSCustomer!KodeCustomer = txtkode.Text
RSCustomer!NamaCustomer = txtnama.Text
RSCustomer!Alamat = txtalamat.Text
RSCustomer!Kota = txtkota.Text
RSCustomer!Telepon = txttelepon.Text
RSCustomer.Update
DataGrid1.Refresh
End Sub

Private Sub cmddel_Click()


If MsgBox("Apakah Data Akan Dihapus [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Hapus") = vbYes Then
RSCustomer.Delete
RSCustomer.MoveFirst
Call Tampil
DataGrid1.Refresh
Else
Exit
Sub End If
End Sub

Halaman 28
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Private Sub cmdfind_Click()


CARI = InputBox("Ketik Kode Customer Yang Dicari !", "Cari
Customer") Dim Ketemu As Integer
Ketemu = 0
RSCustomer.MoveFirst Do
Until RSCustomer.EOF
If UCase(Trim(RSCustomer!KodeCustomer)) = UCase(Trim(CARI))
Then Ketemu = 1
Exit
Do End If
RSCustomer.MoveNext
Loop
If Ketemu = 1 Then
Call
Tampil Else
MsgBox "Data Tidak Ditemukan", vbOKOnly, "Pesan
Cari" End If
End Sub

Private Sub cmdexit_Click()


If MsgBox("Apakah Akan Keluar Form [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Keluar") = vbYes Then
Call Kosong
Tombol True
MenuUtama.Show
Unload Me
Else
Exit
Sub End If
End Sub

Private Sub cmdfirst_Click()


RSCustomer.MoveFirst
Call Tampil
Tombol True
End Sub

Private Sub cmdnext_Click()


RSCustomer.MoveNext
If RSCustomer.EOF Then
MsgBox "Data Sudah Di Akhir", vbOKOnly, "Pesan
Next" RSCustomer.MoveLast
End If Call
Tampil
Tombol True
End Sub

Private Sub cmdprev_Click()


RSCustomer.MovePrevious
If RSCustomer.BOF Then
MsgBox "Data Sudah Di Awal", vbOKOnly, "Pesan
Previous" RSCustomer.MoveFirst
End If Call
Tampil
Tombol True
End Sub

Private Sub cmdlast_Click()


RSCustomer.MoveLast

Halaman 29
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Call Tampil
Tombol True
End Sub

Private Sub txtcarikode_Change()


Set RSCustomer = New ADODB.Recordset
RSCustomer.CursorLocation = adUseClient
RSCustomer.Open "Select * From Customer Where KodeCustomer Like '" &
txtcarikode.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource =
RSCustomer AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub txtcarinama_Change()
Set RSCustomer = New ADODB.Recordset
RSCustomer.CursorLocation = adUseClient
RSCustomer.Open "Select * From Customer Where NamaCustomer Like '" &
txtcarinama.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource =
RSCustomer AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub Timer1_Timer()
Me.Caption = Left$(char, i)
i = i + 1
If i = v Then
i = 0
End If
End Sub

Form Laporan
Public char As String
Public v, i As Integer

Private Sub Form_Load()


Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
Call BukaKoneksi
Laporan.Caption = " Menu Laporan "
char = Me.Caption
v = Len(char)
End Sub
Private Sub Form_Unload(Cancel As Integer)
MenuUtama.Show
Unload Me
End Sub

Private Sub cmdbarang_Click()


On Error Resume Next
Set RSBarang = New ADODB.Recordset
RSBarang.Open "select * from barang", DB, adOpenDynamic,
adLockOptimistic
Set DataReport1.DataSource = RSBarang
DataReport1.Sections("Detail").Controls("Text1").DataField =
"KodeBarang"

Halaman 30
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

DataReport1.Sections("Detail").Controls("Text2").DataField =
"NamaBarang"
DataReport1.Sections("Detail").Controls("Text3").DataField = "Harga"
DataReport1.Sections("Detail").Controls("Text4").DataField = "Jenis"
DataReport1.Show
On Error GoTo
0 End Sub
Private Sub cmdcustomer_Click()
On Error Resume Next
Set RSCustomer = New ADODB.Recordset
RSCustomer.Open "select * from customer", DB, adOpenDynamic,
adLockOptimistic
Set DataReport2.DataSource = RSCustomer
DataReport2.Sections("Detail").Controls("Text1").DataField =
"KodeCustomer"
DataReport2.Sections("Detail").Controls("Text2").DataField =
"NamaCustomer"
DataReport2.Sections("Detail").Controls("Text3").DataField = "Alamat"
DataReport2.Sections("Detail").Controls("Text4").DataField = "Kota"
DataReport2.Sections("Detail").Controls("Text5").DataField =
"Telepon" DataReport2.Show
On Error GoTo
0 End Sub
Private Sub cmdpenjualan_Click()
On Error Resume Next
Set RSBeliHeader = New ADODB.Recordset
RSBeliHeader.Open "select * from beliheader", DB, adOpenDynamic,
adLockOptimistic
Set DataReport3.DataSource = RSBeliHeader
DataReport3.Sections("Detail").Controls("Text1").DataField =
"NoFaktur"
DataReport3.Sections("Detail").Controls("Text2").DataField = "Tanggal"
DataReport3.Sections("Detail").Controls("Text3").DataField =
"KodeCustomer"
DataReport3.Sections("Detail").Controls("Text4").DataField =
"SubTotal"
DataReport3.Sections("Detail").Controls("Text5").DataField = "Diskon"
DataReport3.Sections("Detail").Controls("Text6").DataField = "Pajak"
DataReport3.Sections("Detail").Controls("Text7").DataField =
"GrandTotal"
DataReport3.Show
On Error GoTo 0
End Sub
Private Sub cmdpembayaran_Click()
On Error Resume Next
Set RSPembayaran = New ADODB.Recordset
RSPembayaran.Open "select * from pembayaran", DB, adOpenDynamic,
adLockOptimistic
Set DataReport4.DataSource = RSPembayaran
DataReport4.Sections("Detail").Controls("Text1").DataField = "NoBayar"
DataReport4.Sections("Detail").Controls("Text2").DataField =
"TanggalBayar"
DataReport4.Sections("Detail").Controls("Text3").DataField =
"KodeCustomer"
DataReport4.Sections("Detail").Controls("Text4").DataField =
"NoFaktur"
Halaman 31
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

DataReport4.Sections("Detail").Controls("Text5").DataField =
"SubTotal"
DataReport4.Sections("Detail").Controls("Text6").DataField = "Diskon"
DataReport4.Sections("Detail").Controls("Text7").DataField = "Pajak"
DataReport4.Sections("Detail").Controls("Text8").DataField =
"GrandTotal"
DataReport4.Show
On Error GoTo
0 End Sub
Private Sub cmdkembali_Click()
MenuUtama.Show
Unload
Me End Sub
Private Sub cmdbarang_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
cmdbarang.BackColor = &HE29B81
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HB0D798
cmdkembali.BackColor = &HB0D798
End Sub

Private Sub cmdcustomer_MouseMove(Button As Integer, Shift As Integer, X


As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HE29B81
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HB0D798
cmdkembali.BackColor = &HB0D798
End Sub

Private Sub cmdpenjualan_MouseMove(Button As Integer, Shift As Integer, X


As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HE29B81
cmdpembayaran.BackColor = &HB0D798
cmdkembali.BackColor = &HB0D798
End Sub

Private Sub cmdpembayaran_MouseMove(Button As Integer, Shift As Integer,


X As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HE29B81
cmdkembali.BackColor = &HB0D798
End Sub
Private Sub cmdkembali_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HB0D798
cmdkembali.BackColor = &HE29B81
End Sub
Halaman 32
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Private Sub Timer1_Timer()


Me.Caption = Left$(char, i)
i = i + 1
If i = v Then
i = 0
End If
End Sub

Form Menu Utama


Public char As String
Public v, i As Integer

Private Sub Form_Load()


Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
MenuUtama.Caption = " Menu Utama "
char = Me.Caption
v = Len(char)
End Sub

Private Sub Form_Unload(Cancel As


Integer) Me.Hide
MsgBox "Terima Kasih Telah Menggunakan Aplikasi Ini, Untuk Kritik Dan
Saran Kirimkan Ke : yoga.prihastomo@gmail.com", vbOKOnly + vbInformation,
"Pesan Keluar"
End
End Sub

Private Sub cmdbarang_Click()


Barang.Show
Me.Hide
End Sub

Private Sub cmdcustomer_Click()


Customer.Show
Me.Hide
End Sub

Private Sub cmdpenjualan_Click()


Penjualan.Show
Me.Hide
End Sub

Private Sub cmdpembayaran_Click()


Pembayaran.Show
Me.Hide
End Sub

Private Sub cmdlaporan_Click()


Laporan.Show
Me.Hide
End Sub

Private Sub cmdpenyusun_Click()


About.Show
Me.Hide
End Sub

Halaman 33
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Private Sub cmdkeluar_Click()


If MsgBox("Apakah Akan Keluar Aplikasi [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Keluar") = vbYes Then
MsgBox "Terima Kasih Telah Menggunakan Aplikasi Ini, Untuk Kritik
Dan Saran Kirimkan Ke : yoga.prihastomo@gmail.com", vbOKOnly +
vbInformation, "Pesan Keluar"
En
d
Else
Exit
Sub End If
End Sub

Private Sub cmdbarang_MouseMove(Button As Integer, Shift As Integer, X As


Single, Y As Single)
cmdbarang.BackColor = &HE29B81
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HB0D798
cmdlaporan.BackColor = &HB0D798
cmdkeluar.BackColor = &HB0D798
End Sub

Private Sub cmdcustomer_MouseMove(Button As Integer, Shift As Integer, X


As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HE29B81
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HB0D798
cmdlaporan.BackColor = &HB0D798
cmdkeluar.BackColor = &HB0D798
End Sub

Private Sub cmdpenjualan_MouseMove(Button As Integer, Shift As Integer, X


As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HE29B81
cmdpembayaran.BackColor = &HB0D798
cmdlaporan.BackColor = &HB0D798
cmdkeluar.BackColor = &HB0D798
End Sub

Private Sub cmdpembayaran_MouseMove(Button As Integer, Shift As Integer,


X As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HE29B81
cmdlaporan.BackColor = &HB0D798
cmdkeluar.BackColor = &HB0D798
End Sub
Private Sub cmdlaporan_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HB0D798
cmdlaporan.BackColor = &HE29B81
Halaman 34
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

cmdkeluar.BackColor =
&HB0D798 End Sub
Private Sub cmdpenyusun_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HB0D798
cmdlaporan.BackColor = &HB0D798
cmdkeluar.BackColor = &HB0D798
End Sub

Private Sub cmdkeluar_MouseMove(Button As Integer, Shift As Integer, X As


Single, Y As Single)
cmdbarang.BackColor = &HB0D798
cmdcustomer.BackColor = &HB0D798
cmdpenjualan.BackColor = &HB0D798
cmdpembayaran.BackColor = &HB0D798
cmdlaporan.BackColor = &HB0D798
cmdkeluar.BackColor = &HE29B81
End Sub

Private Sub Timer1_Timer()


Me.Caption = Left$(char, i)
i = i + 1
If i = v Then
i = 0
End If
End Sub

Form Pembayaran
Public char As String
Public v, i As Integer

Private Sub Form_Load()


Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
Call BukaKoneksi
Call DGPenjualan
Call DGPembayaran
Call KosongBayar
Pembayaran.Caption = " Form Pembayaran "
char = Me.Caption
v = Len(char)
End Sub
Private Sub Form_Unload(Cancel As Integer)
MenuUtama.Show
Unload Me
End Sub

Private Sub DGPenjualan()


Set RSBeliHeader = New ADODB.Recordset
RSBeliHeader.CursorLocation = adUseClient
RSBeliHeader.Open "select * from beliheader", DB, adOpenDynamic,
adLockOptimistic
Set DataGrid1.DataSource = RSBeliHeader
Halaman 35
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

DataGrid1.Refresh
End Sub

Private Sub DGPembayaran()


Set RSPembayaran = New ADODB.Recordset
RSPembayaran.CursorLocation = adUseClient
RSPembayaran.Open "select * from pembayaran", DB, adOpenDynamic,
adLockOptimistic
Set DataGrid2.DataSource =
RSPembayaran AturPembayaran
DataGrid2.Refresh
End Sub
Private Sub AturPembayaran()
DataGrid2.Columns(0).Width = 800
DataGrid2.Columns(1).Width = 1100
DataGrid2.Columns(2).Width = 1100
DataGrid2.Columns(3).Width = 1100
DataGrid2.Columns(4).Width = 1100
DataGrid2.Columns(5).Width = 1100
DataGrid2.Columns(6).Width = 1100
DataGrid2.Columns(7).Width = 1200
End Sub

Private Sub DataGrid1_Click()


txtkodecus.Text = RSBeliHeader!KodeCustomer
txtnofak.Text = RSBeliHeader!NoFaktur
txtsubtot.Text = RSBeliHeader!SubTotal
txtdiskon.Text = RSBeliHeader!Diskon
txtpajak.Text = RSBeliHeader!Pajak
txtgrand.Text = RSBeliHeader!GrandTotal
End Sub

Private Sub Kosong()


txtnobayar.Text = ""
txttanggal.Text = ""
txtkodecus.Text = ""
txtnofak.Text = ""
txtsubtot.Text = ""
txtdiskon.Text = ""
txtpajak.Text = ""
txtgrand.Text = ""
End Sub

Private Sub KosongBayar()


Dim NoBayar As Integer
txttanggal.Text = Date
If RSPembayaran.RecordCount = 0
Then txtnobayar.Text = "FB001"
Else
RSPembayaran.MoveLast
NoBayar = Right(RSPembayaran![NoBayar], 3) +
1 txtnobayar.Text = Format(NoBayar, "FB000")
End If
End Sub
Private Sub cmdsave_Click()
On Error Resume Next

Halaman 36
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

If MsgBox("Apakah Data Akan Disimpan [Y/T] ?", vbYesNo + vbQuestion,


"Pesan Simpan") = vbYes Then
RSPembayaran.AddNew RSPembayaran![NoBayar]
= txtnobayar.Text
RSPembayaran![TanggalBayar] =
txttanggal.Text RSPembayaran![KodeCustomer]
= txtkodecus.Text RSPembayaran![NoFaktur] =
txtnofak.Text RSPembayaran![SubTotal] =
txtsubtot.Text RSPembayaran![Diskon] =
txtdiskon.Text RSPembayaran![Pajak] =
txtpajak.Text RSPembayaran![GrandTotal] =
txtgrand.Text RSPembayaran.Update
DGPembayaran
Kosong
KosongBayar
Else
Exit
Sub End If
On Error GoTo
0 End Sub
Private Sub cmdadd_Click()
DGPembayaran
Call Kosong
Call KosongBayar
End Sub

Private Sub cmdcancel_Click()


Call Kosong
End Sub

Private Sub cmdexit_Click()


If MsgBox("Apakah Akan Keluar Form [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Keluar") = vbYes Then
MenuUtama.Show
Unload Me
Else
Exit
Sub End If
End Sub

Private Sub Timer1_Timer()


Me.Caption = Left$(char, i)
i = i + 1
If i = v Then
i = 0
End If
End Sub

Form Penjualan
Public char As String
Public v, i As Integer

Private Sub Form_Load()


Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
Call BukaKoneksi
Call KosongJual

Halaman 37
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Call DGCustomer
Call DGBarang
Penjualan.Caption = " Form Penjualan " char =
Me.Caption
v = Len(char)
End Sub
Private Sub Form_Unload(Cancel As Integer)
MenuUtama.Show
Unload Me
End Sub

Private Sub Kosong()


txtkobar.Text = ""
txtnabar.Text = ""
txtharga.Text = ""
txtqty.Text = ""
txttotal.Text = ""
End Sub

Private Sub KosongJual()


Dim NoFak As Integer
txttanggal.Text = Date
If RSBeliHeader.RecordCount = 0
Then txtnofak.Text = "F0001"
Else
RSBeliHeader.MoveLast
NoFak = Right(RSBeliHeader![NoFaktur], 4) +
1 txtnofak.Text = Format(NoFak, "F0000")
End If
End Sub
Private Sub DGCustomer()
Set RSCustomer = New ADODB.Recordset
RSCustomer.CursorLocation = adUseClient
RSCustomer.Open "select * from customer", DB, adOpenDynamic,
adLockOptimistic
Set DataGrid1.DataSource =
RSCustomer AturCustomer
DataGrid1.Refresh
End Sub
Private Sub AturCustomer()
DataGrid1.Columns(0).Width = 1200
DataGrid1.Columns(1).Width = 2500
DataGrid1.Columns(2).Width = 2500
DataGrid1.Columns(3).Width = 1300
DataGrid1.Columns(4).Width = 1300
End Sub

Private Sub DGBarang()


Set RSBarang = New ADODB.Recordset
RSBarang.CursorLocation = adUseClient
RSBarang.Open "select * from barang", DB, adOpenDynamic,
adLockOptimistic
Set DataGrid2.DataSource =
RSBarang AturBarang
DataGrid2.Refresh
End Sub

Halaman 38
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Private Sub AturBarang()


DataGrid2.Columns(0).Width = 1300
DataGrid2.Columns(1).Width = 3500
DataGrid2.Columns(2).Width = 2000
DataGrid2.Columns(3).Width = 2000
End Sub

Private Sub DataGrid1_Click() txtkodecus.Text


= RSCustomer!KodeCustomer txtnamacus.Text =
RSCustomer!NamaCustomer txtalamat.Text =
RSCustomer!Alamat txtkota.Text =
RSCustomer!Kota txttelepon.Text =
RSCustomer!Telepon
End Sub

Private Sub DataGrid2_Click()


txtkobar.Text = RSBarang!KodeBarang
txtnabar.Text = RSBarang!NamaBarang
txtharga.Text = RSBarang!Harga
End Sub

Private Sub ListView1_ItemClick(ByVal Item As


MSComctlLib.ListItem) X = ListView1.SelectedItem.Index
txtkobar.Text = ListView1.ListItems(X).Text
txtnabar.Text = ListView1.ListItems(X).SubItems(1)
txtharga.Text = ListView1.ListItems(X).SubItems(2)
txtqty.Text = ListView1.ListItems(X).SubItems(3)
txttotal.Text = ListView1.ListItems(X).SubItems(4)
End Sub

Private Sub txtqty_Change()


Dim vtxttotal
vtxttotal = Val(txtharga) *
Val(txtqty) txttotal.Text = vtxttotal
End Sub

Private Sub txtqty_KeyPress(KeyAscii As Integer)


If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack
Then
Exit Sub
ElseIf KeyAscii = vbKeyReturn
Then txtqty.SetFocus
Else
MsgBox "Data Harus Angka..!", vbOKOnly + vbInformation, "Pesan
Kesalahan"
KeyAscii =
vbKeyBack End If
End Sub

Private Sub cmdadd_Click()


ListView1.ListItems.Add(, , txtkobar).Text =
txtkobar.Text X = ListView1.ListItems.Count
ListView1.ListItems(X).SubItems(1) = txtnabar.Text
ListView1.ListItems(X).SubItems(2) = txtharga.Text
ListView1.ListItems(X).SubItems(3) = txtqty.Text
ListView1.ListItems(X).SubItems(4) = txttotal.Text
txtsubtot = Val(txttotal) + ListView1.ListItems(X).SubItems(4)
txtdiskon = Val(txtsubtot) * 0.05
txtpajak = Val(txtsubtot) * 0.1

Halaman 39
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

txtgrandtot = Val(txtsubtot) + Val(txtpajak) -


Val(txtdiskon) Call Kosong
txtkobar.SetFocus
End Sub
Private Sub cmdsave_Click()
On Error Resume Next
If MsgBox("Apakah Data Akan Disimpan [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Simpan") = vbYes Then
RSBeliHeader.AddNew
RSBeliHeader![NoFaktur] = txtnofak.Text
RSBeliHeader![Tanggal] = txttanggal.Text
RSBeliHeader![KodeCustomer] =
txtkodecus.Text RSBeliHeader![SubTotal] =
txtsubtot.Text RSBeliHeader![Diskon] =
txtdiskon.Text RSBeliHeader![Pajak] =
txtpajak.Text RSBeliHeader![GrandTotal] =
txtgrandtot.Text RSBeliHeader.Update
For X = 1 To ListView1.ListItems.Count
RSBeliDetail.AddNew
RSBeliDetail![NoFaktur] = txtnofak.Text
RSBeliDetail![KodeBarang] = ListView1.ListItems(X).Text
RSBeliDetail![NamaBarang] =
ListView1.ListItems(X).SubItems(1) RSBeliDetail![Harga] =
ListView1.ListItems(X).SubItems(2) RSBeliDetail![Qty] =
ListView1.ListItems(X).SubItems(3) RSBeliDetail![Total] =
ListView1.ListItems(X).SubItems(4) RSBeliDetail.Update
Next
X Else
Exit
Sub End If
On Error GoTo
0 End Sub
Private Sub cmddelete_Click()
ListView1.ListItems.Remove
(ListView1.SelectedItem.Index) Call Kosong
End Sub

Private Sub cmdedit_Click()


For X = 1 To ListView1.ListItems.Count
If ListView1.ListItems(X).Text = txtkobar.Text
Then baris = X
Exit
For End If
Next
ListView1.ListItems(baris).SubItems(3) =
txtqty.Text Call Kosong
txtkobar.SetFocus
End Sub
Private Sub cmdcancel_Click()
ListView1.ListItems.Clear
End Sub

Private Sub cmdprint_Click()


On Error Resume Next
Set RSQPenjualan = New ADODB.Recordset

Halaman 40
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Strsql = "Select * From QPenjualan Where NoFaktur = '" & txtnofak & "'
And KodeCustomer = '" & txtkodecus & "'"
RSQPenjualan.Open Strsql, DB, adOpenDynamic, adLockOptimistic
Set DataReport5.DataSource = RSQPenjualan
With DataReport5
.Sections("Header").Controls("lblnofak").Caption = txtnofak.Text
.Sections("Header").Controls("lbltanggal").Caption =
txttanggal.Text
.Sections("Header").Controls("lblkode").Caption = txtkodecus.Text
.Sections("Header").Controls("lblnama").Caption = txtnamacus.Text
.Sections("Detail").Controls("Text1").DataField = "KodeBarang"
.Sections("Detail").Controls("Text2").DataField = "NamaBarang"
.Sections("Detail").Controls("Text3").DataField = "Harga"
.Sections("Detail").Controls("Text4").DataField = "QTY"
.Sections("Detail").Controls("Text5").DataField = "Total"
End With
DataReport5.Show
On Error GoTo 0
End Sub
Private Sub cmdexit_Click()
If MsgBox("Apakah Akan Keluar Form [Y/T] ?", vbYesNo + vbQuestion,
"Pesan Keluar") = vbYes Then
MenuUtama.Show
Unload Me
Else
Exit
Sub End If
End Sub

Private Sub txtcarikodecus_Change() Set


RSCustomer = New ADODB.Recordset
RSCustomer.CursorLocation = adUseClient
RSCustomer.Open "Select * From Customer Where KodeCustomer Like '" &
txtcarikodecus.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource =
RSCustomer AturCustomer
DataGrid1.Refresh
End Sub
Private Sub txtcarinamacus_Change() Set
RSCustomer = New ADODB.Recordset
RSCustomer.CursorLocation = adUseClient
RSCustomer.Open "Select * From Customer Where NamaCustomer Like '" &
txtcarinamacus.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource =
RSCustomer AturCustomer
DataGrid1.Refresh
End Sub
Private Sub txtcarikobar_Change() Set
RSBarang = New ADODB.Recordset
RSBarang.CursorLocation = adUseClient
RSBarang.Open "Select * From Barang Where KodeBarang Like '" &
txtcarikobar.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid2.DataSource =
RSBarang AturBarang
DataGrid2.Refresh
End Sub
Halaman 41
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Private Sub txtcarinabar_Change() Set


RSBarang = New ADODB.Recordset
RSBarang.CursorLocation = adUseClient
RSBarang.Open "Select * From Barang Where NamaBarang Like '" &
txtcarinabar.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid2.DataSource =
RSBarang AturBarang
DataGrid2.Refresh
End Sub
Private Sub Timer1_Timer()
Me.Caption = Left$(char, i)
i = i + 1
If i = v Then
i = 0
End If
End Sub

Halaman 42
Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman Akhir

Akhirnya waktu jua yang memisahkan kita, padahal materi database itu sungguh sesuatu
yang menantang untuk dipelajari. Tapi semuanya berpulang pada teman-teman sekalian. Jika
teman-teman ingin menguasai seluk-beluk database perancangan & implementasinya, maka
tidak ada jalan lain selain berlatih & terus berlatih.
Software hanyalah sebuah alat, andai kita sudah mengetahui logika pemrogramannya,
maka software bukanlah seubah masalah yang besar, mulai dari Dbase, Access, MySQL,
PostgreSQL, Ms SQL Server, Paradox sampai Oracle kesemuanya adalah sama-sama software
pengolah database. Jadi mari kita pelajari semuanya agak tidak gaptek donk.
Sekali lagi saya mohon maaf jika ada kata-kata yang tidak berkenan, maklum lah nulisnya
sambil ngantuk. Dan juga minta maaf seandainya modul ini tidak sesuai harapan. Dua kali lagi
Caci-maki, sumpah-serapah, omelan, kritik, saran, pujian (maunya donk) bisa disampaikan
melalui email penulis :
eddyal2003@gmail.com atau eddy_al2003@yahoo.com.

Daftar Pustaka
Manual, Advance Microsoft Visual Basic 6, 2nd Edition, Microsoft Press
Manual, Desktop Application With MsVB 6, MCSD Training Kit, Microsoft Press
Manual, Programming Microsoft Visual Basic 6, Microsoft Press

Special Thanks To :
Rektor, Dekan, Kepala Prodi dan seluruh teman2 yang ada di Prodi Teknik Informatika
serta rekan2 di Bagian Akademik.

Wassalamu’alaikum
Hormat Saya,

Eddy Alfendy Lubis

Halaman 43

Você também pode gostar