Yogamodul PDF
Yogamodul PDF
jalan
yang
terang
mengenai
seluk-beluk
database
perancangan
dan
implementasinya. Trus pada rekan-rekan aslab yang telah memberikan saran, dan tak lupa
pada yang telah cerewet dan sabar dalam mengoreksi tata bahasa serta memberikan
semangat untuk terus menulis, uuu makasih yach ???
CD Pendukung
Wah berhubung penulis lagi baik dan waras, maka akan saya berikan segala macam
keperluan database, mulai dari source code, modul tulisan, utility pendukung, de el el.
Pokoknya mah akan ku serahkan, uuu itu bahasa apa yach, sepertinya kayak bahasa klo
penulis lagi disandra ???
mo curhat juga boleh, yang nggak boleh adalah minjem duit ama penulis, hehehe maklum lah
nasib aslab ?
Yoga Prihastomo
Halaman
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.
Lengkapi data-data pada bentuk UnNormalized, sehingga setiap record data terisi
dengan kata lain tidak ada field yang kosong (tidak terisi nilainya).
Pisahkan antara Tabel Master dan Tabel Transaksi atau dengan kata lain pisahkan
antara yang Primary Key dengan yang bukan.
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
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
( TANDA BUKTI )
PROSES ANALISA
( NORMALISASI )
TABEL-TABEL DALAM
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
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.
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
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 :
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.
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
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.
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, Im so sorry .
Halaman
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).
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
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
TextBox
Label
CommandButton
Frame
OptionButton
CheckBox
ComboBox
ListBox
HScrollBar
VScrollBar
DriveListBox
Timer
DirListBox
FileListBox
Shape
Line
Image
Data
OLE
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
Untuk Kontrol ListView, pilih Microsoft Windows Common Controls 6.0 (SP6)
SSTab
Data Grid
List View
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
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
Laporan
( 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
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
Halaman
11
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
Berdoa 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 masingmasing.
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
Konsep 7
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
Halaman
13
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
CUSTOMER
Data Bukti
B
Halaman
SISTEM
PENJUALA
N
BARANG
L. Daftar Brg
L. Customer
L. Penjualan
PIMPINAN
14
Level Nol
F. Barang
Data Customer
CUSTOMER
PROSES
BELI
1.0
F. Customer
Data Customer
Data Customer
Data Barang
PROSES
BAYAR
2.0
F. Bayar
Data Pembayaran
Data Customer
Data Barang
Data Bayar
Data Bukti
B
PROSES
LAPORAN
3.0
L. Daftar Brg
L. Customer
L. Penjualan
PIMPINAN
Skema Normalisasi 3 NF
Halaman
15
Step By Step
Akhirnya sampailah kita pada saat yang berbahagia dengan selamat dan sentosa. Ya sudah
kita mulai membuat projectsemangat !!!
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.
Halaman
16
7.
Buat Tabel BeliHeader dengan field sebagai berikut (NoFaktur sebagai primary key) :
8.
9.
Buat Tabel Pembayaran dengan field sebagai berikut (NoBayar sebagai primary key) :
10.
Halaman
17
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.
6.
Halaman
18
7.
8.
Halaman
19
9.
10.
Halaman
20
11.
12.
13.
Halaman
21
14.
15.
Halaman
22
"
Halaman
=
=
=
=
DB,
adOpenDynamic,
1200
3200
1600
1600
23
Halaman
24
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
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
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
txtcarinama.Text & "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RSBarang
AturDataGrid
DataGrid1.Refresh
End Sub
Like
'"
&
Like
'"
&
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
Call BukaKoneksi
Call Tampil
Call DGCustomer
Customer.Caption = "
char = Me.Caption
v = Len(char)
End Sub
Master Customer
"
=
=
=
=
=
DB,
adOpenDynamic,
1200
2000
2000
1200
1200
Halaman
27
Halaman
28
Halaman
29
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
"
Halaman
30
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
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
"
Halaman
33
Halaman
34
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
"
Halaman
DB,
adOpenDynamic,
35
DataGrid1.Refresh
End Sub
Private Sub DGPembayaran()
Set RSPembayaran = New ADODB.Recordset
RSPembayaran.CursorLocation = adUseClient
RSPembayaran.Open "select * from pembayaran",
adLockOptimistic
Set DataGrid2.DataSource = RSPembayaran
AturPembayaran
DataGrid2.Refresh
End Sub
Private Sub AturPembayaran()
DataGrid2.Columns(0).Width
DataGrid2.Columns(1).Width
DataGrid2.Columns(2).Width
DataGrid2.Columns(3).Width
DataGrid2.Columns(4).Width
DataGrid2.Columns(5).Width
DataGrid2.Columns(6).Width
DataGrid2.Columns(7).Width
End Sub
=
=
=
=
=
=
=
=
DB,
adOpenDynamic,
800
1100
1100
1100
1100
1100
1100
1200
Halaman
36
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
Call DGCustomer
Call DGBarang
Penjualan.Caption = "
char = Me.Caption
v = Len(char)
End Sub
Form Penjualan
"
=
=
=
=
=
adOpenDynamic,
1200
2500
2500
1300
1300
Halaman
DB,
DB,
adOpenDynamic,
38
=
=
=
=
1300
3500
2000
2000
Halaman
39
Halaman
40
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
'"
&
Halaman
42
Halaman Nyebelin
Akhirnya waktu jua yang memisahkan kita, padahal materi database itu sungguh
sesuatu yang menantang untuk dipelajari (apa iya ???). 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 :
yoga.prihastomo@gmail.com atau debiandepok@plasa.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 :
My Crazy Teacher, Pak Bimo yang telah ngajarin penulis dengan sabar, maaf pak saya
sering bolos pelajaran bapak.
My UnStructured Teacher, Pak Agung yang telah bikin bingung penulis dengan sintaks
yang semerawut.
Ay & Teroris Roi, yang suke ngeledekin penulis dengan gayanya yang cool, makasih ya
Wassalamualaikum
Hormat Saya,
Yoga Prihastomo
Orang Indonesia Biasa
Halaman
43