43
Workshop Pemrograman Dasar Database Dengan Visual Basic 6 Halaman 1 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. 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 ??? Modul Ini Untuk Siapa ? Modul ini ditujukan bagi mereka yang merasa “beginner” hehe termasuk saya donk dan ingin tau mengenai database yang akan dimanipulasi menggunakan visual basic. Trus juga harus sabar yach, karena nanti kita akan menulis banyak script or coding (hehe jadi kaya pelajaran mengetik tuh). Klo yang udah merasa “advanced” pasti akan ketawa klo melihat modul ini, abis kata mereka “wah apaan nih, kok cuma kayak gini sih ?”. Maaf yach para “advanced database admin”, hehe just kidding euy. 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” ??? Kritik & Saran Wah kayaknya modul ini teh kurang banget dari kata sempurna, so penulis mengharapkan kritik & saran yang buanyakkk untuk penyempurnaan modul ini. Caci-maki, sumpah-serapah, omelan, kritik, saran, pujian (uuu maunya donk) bisa disampaikan melalui email penulis : [email protected] atau [email protected]. Boleh tanya apa aja kok, or mo curhat juga boleh, yang nggak boleh adalah minjem duit ama penulis, hehehe maklum lah nasib aslab ? diterangi senyum rembulan, Tangerang, 17 May 2006, pukul 03.00 dini hari Yoga Prihastomo

Ucapan Terima Kasih Modul Ini Untuk Siapa ? CD Pendukung · PDF fileWorkshop Pemrograman Dasar Database Dengan Visual Basic 6 Halaman 1 Ucapan Terima Kasih ... tabel transaksi pemesanan

Embed Size (px)

Citation preview

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 1

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. 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 ???

Modul Ini Untuk Siapa ? Modul ini ditujukan bagi mereka yang merasa “beginner” hehe termasuk saya donk dan ingin

tau mengenai database yang akan dimanipulasi menggunakan visual basic. Trus juga harus

sabar yach, karena nanti kita akan menulis banyak script or coding (hehe jadi kaya pelajaran

mengetik tuh). Klo yang udah merasa “advanced” pasti akan ketawa klo melihat modul ini,

abis kata mereka “wah apaan nih, kok cuma kayak gini sih ?”. Maaf yach para “advanced

database admin”, hehe just kidding euy.

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” ???

Kritik & Saran Wah kayaknya modul ini teh kurang banget dari kata sempurna, so penulis mengharapkan

kritik & saran yang buanyakkk untuk penyempurnaan modul ini. Caci-maki, sumpah-serapah,

omelan, kritik, saran, pujian (uuu maunya donk) bisa disampaikan melalui email penulis :

[email protected] atau [email protected]. Boleh tanya apa aja kok, or

mo curhat juga boleh, yang nggak boleh adalah minjem duit ama penulis, hehehe maklum lah

nasib aslab ?

diterangi senyum rembulan, Tangerang, 17 May 2006, pukul 03.00 dini hari

Yoga Prihastomo

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 2

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.

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 3

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.

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.

FAKTUR ( TANDA BUKTI )

PROSES ANALISA ( NORMALISASI )

TABEL-TABEL DALAM KEADAAN NORMAL

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 4

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.

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 5

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.

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 7

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”.

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 8

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 ?

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.

Pointer

Label

Frame

CheckBox

ComboBox

HScrollBar

Timer

DirListBox

Image

OLE

PictureBox

TextBox

CommandButton

Shape

OptionButton

ListBox

VScrollBar

DriveListBox

FileListBox

Line

Data

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 9

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

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.

SSTab

Data Grid

List View

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 10

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.

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

Data Tabel / Query

Software Pihak Ketiga( Crystal Report )

Visual Basic Report Embedded

Primitive Report ( HTML, TXT, dsb )

Laporan ( Report )

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 11

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 :

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

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 12

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]]

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 13

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 14

Data Bukti B

SISTEM PENJUALA

N BARANG

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

• L. Daftar Brg • L. Customer • L. Penjualan

CUSTOMER PIMPINAN

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 15

Data Bukti B

PROSES BELI 1.0

PROSES BAYAR

2.0

PROSES LAPORAN

3.0

Level Nol

Skema Normalisasi 3 NF

Data Customer

Data Customer

Data Customer Data Barang Data Bayar

Data Customer Data Barang

Data Pembayaran

• L. Daftar Brg • L. Customer • L. Penjualan

F. Barang

F. Customer CUSTOMER

PIMPINAN

F. Bayar

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 16

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.

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 17

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 :

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 18

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.

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 19

7. Berikut ini desain form barang.

8. Berikut ini desain form customer.

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 20

9. Berikut ini desain form penjualan.

10. Berikut ini desain form pembayaran.

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 21

11. Berikut ini desain laporan data barang

12. Berikut ini desain laporan data customer

13. Berikut ini desain laporan penjualan

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 22

14. Berikut ini desain laporan pembayaran

15. Berikut ini desain faktur penjualan

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 23

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 24

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 25

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 26

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 27

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()

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 28

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 29

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 30

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"

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 31

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"

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 32

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 33

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 : [email protected]", 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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 34

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 : [email protected]", vbOKOnly + vbInformation, "Pesan Keluar" End 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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 35

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 36

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 37

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 38

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 39

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 40

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 41

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 42

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

Workshop Pemrograman Dasar Database Dengan Visual Basic 6

Halaman 43

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 :

[email protected] atau [email protected].

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

“Kembang Mawar & Melati” ku ???, senyum berulang padamu jua.

Wassalamu’alaikum

Hormat Saya,

Yoga Prihastomo Orang Indonesia Biasa