Disini - WordPress.com

advertisement
Pemrograman Dasar Database SQL Server 2000
Dengan Microsoft Visual Basic 6
Yoga Prihastomo
http://prihastomo.wordpress.com
Jakarta, 17 Januari 2009
LAB KOMPUTER DASAR
STT PLN JAKARTA
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
0
SEBUAH PENGANTAR
Tak ada kata yang lebih indah dari kalimat “Alhamdulillah, akhirnya selesai juga
modul ’copy-paste’ ini”. Maklumlah, modul ini jelas disusun oleh penulis saat waktu
senggang di kantor (hehe... jadi curi-curi waktu). Entah apa yang terlintas dalam pikiran
para Asisten Lab Komputer STT PLN sehingga ”menjerumuskan” penulis untuk mengajar
workshop ini hehe.
Modul ini didedikasikan untuk para peserta workshop yang telah bersedia mengikuti
workshop ini. Workshop ini kami beri judul ”Pemrograman Dasar Database SQL Server 2000
dengan Microsoft Visual Basic 6”. Apresiasi setinggi-tingginya kepada seluruh Asisten Lab
Komputer STT PLN (khususnya panitia) yang telah mempercayakan workshop kali ini untuk
disampaikan oleh saya.
Modul ini tentu banyak kelemahan dan kekurangan. Oleh karena itu penulis
menyertakan DVD yang berisi perangkat lunak untuk menunjang pembaca sekalian
mempraktekkan semua hal yang penulis sampaikan, kemudian modul-modul atau tulisantulisan lain yang menunjang pembahasan dari modul ini. Tak lupa pula, kode program
(source code) juga penulis sertakan dalam DVD kali ini.
Dengan segala kerendahan hati, penulis memohon kritik dan saran atas apa yang
penulis sampaikan melalui workshop kali ini. Penyampaian ’unek-unek’ bisa dikirim ke email
penulis : [email protected] atau [email protected] . Dan akhirnya penulis
berharap semoga workshop (modul) ini dapat menambah pengetahuan kita semua. AMIN
Tangerang, 16 Januari 2009
Kala hujan gerimis, dan angin mengeluh serta mendesah.
Yoga Prihastomo
Manusia Indonesia Biasa
1
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
1
KONSEP DATABASE & SQL
Basis Data (Database)
Basis data (bahasa Inggris: database), atau sering pula dieja basisdata, adalah
kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat
diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis
data tersebut. Ada pula yang mendefinisikan, basis data adalah kumpulan file/tabel/arsip
yang saling berhubungan (berelasi) dan disimpan dalam media penyimpanan elektronik
tanpa adanya pengulangan (redudansi) data.
Database Management System (DBMS)
DBMS adalah perangkat lunak yang menangani semua pengaksesan database.
Mempunyai fasilitas membuat, mengakses, memanipulasi dan memelihara basis data.
Fungsi DBMS antara lain :
1. Data Definition, DBMS harus dapat mengolah pendefinisian data,
2. Data Manipulation, DBMS harus dapat menangani permintaan dari pemakai untuk
mengakses data,
3. Data Security & Integrity, DBMS harus dapat memeriksa security dan integrity data
yang didefinisikan oleh DBA,
4. Data Recovery & Concurency, DBMS harus dapat menangani kegagalan–kegagalan
pengaksesan database yang dapat disebabkan oleh kesalahan sistem, kerusakan
hard disk, dsb,
5. Data Dictionary, DBMS harus menyediakan data dictionary,
6. Performance, DBMS harus menangani unjuk kerja dari semua fungsi seefisien mungkin.
Contoh DBMS seperti : Microsoft SQL Server, Oracle, IBM DB2, MySQL, PostgreSQL, Firebird,
Teradata, Informix, Sybase Adaptive Server Enterprise dan sebagainya.
2
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Tabel (Table)
Tabel adalah inti dari sebuah database. Tabel menyimpan data yang dikelompokkan
di dalam bentuk baris dan kolom seperti layaknya lembar kerja. Setiap baris mewakili
record, dan setiap kolom adalah atribut atau field. Setiap field mengandung satu jenis
informasi. Sebagai contoh : Field bernama jumlah memiliki tipe data Numeric, sementara
field bernama Name memiliki informasi bertipe Teks. Field-field pada tabel bisa memiliki
pembatasan mengenai isi yang akan disimpan ke dalam field tersebut. Sebagai contoh :
Sebuah field bernama Quantity tidak bisa menyimpan teks, hanya bisa menyimpan angka,
dan tidak bisa menerima nilai di bawah 1 atau di atas 100. 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.
Teknik Menggabungkan Tabel
Menurut beberapa literatur yang saya baca, maka teknik menggabungkan 2 tabel
atau lebih ada 3 teknik yaitu :
1.
Teknik Manual
Teknik ini adalah yang paling umum dipakai orang dalam menggabungkan tabel,
Teknik ini adalah yang paling efisien serta paling cepat untuk menghubungkan 2 tabel
atau lebih. Tapi jangan lupa dalam mengetikan nama field harus didahului nama
tabel, atau sintaknya :
[ NamaTabel.NamaField ] untuk menyingkat nama tabel yang panjang, dapat
digunakan prinsip Alias sebagai pengganti nama tabel.
3
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Kemudian untuk teknis penggabungannya, cukup menyamakan Primary Key dan
Foreign Key pada masing-masing tabel pada kondisi WHERE
Contoh :
Tampilkan nama dosen yang mengajar mata kuliah sistem basis data. Jawab :
SELECT Dosen.Nama_Dosen, Matakuliah.Nama_Matakul, Matakuliah.SKS
FROM Dosen, Matakuliah, Mengajar
WHERE Mengajar.Kode_Matakul = Matakuliah.Kode_Matakul AND
Mengajar.Kode_Dosen = Dosen.Kode_Dosen AND
Matakuliah.Nama_Matakul = 'Sistem Basis Data'
2.
Teknik Select Bertingkat (Sub Query)
Subquery adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL
Statement yang lain.
Jadi kita menyamakan Primary Key Dan Foreign Key pada
statement SELECT. Jadi ya statement select berada dalam statement select.
Contoh :
TabelRekening
4
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
TabelPelanggan
TabelKaryawan
Cari nama dan alamat pelanggan yang memiliki rekening dengan saldo lebih dari
4000000. Jawab :
SELECT Nama, Alamat FROM TabelPelanggan
WHERE No_Kartu IN
(
SELECT No_Kartu FROM TabelKaryawan
WHERE No_Rek IN
(
SELECT No_Rek FROM TabelRekening
WHERE Saldo > 4000000)
)
3.
Teknik Menggunakan Operator Join
Untuk menggabungkan tabel dengan berbagai kondisi yang lebih dinamis, maka kita
dapat menggunakan operator JOIN.
Contoh :
Tabel Pelajaran
Tabel Jadwal
5
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
1. CROSS JOIN
Syntax :
SELECT …………
FROM Tabel1 CROSS JOIN Tabel2
WHERE Kondisi
Contoh :
SELECT * FROM Pelajaran CROSS JOIN Jadwal
WHERE Pelajaran.KodePel = Jadwal.KodePel
2. INNER JOIN
Penggunaannya sama dengan CROSS JOIN, namun kondisinya menggunakan kata
ON untuk menyamakan keynya.
Syntax :
SELECT …………
FROM Tabel1 INNER JOIN Tabel2
ON Kondisi
Contoh :
SELECT * FROM Pelajaran INNER JOIN Jadwal
ON Pelajaran.KodePel = Jadwal.KodePel
6
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
3. RIGHT JOIN
Apabila kita ingin menampilkan dua tabel, maka tabel yang pertama dianggap
tabel kiri (LEFT) dan tabel yang kedua sebagai tabel kanan (RIGHT).
Penggunaan operator RIGHT JOIN akan mengakibatkan seluruh data dari tabel
kanan tampil seluruhnya, dan apabila salah satu kolom anggota tabel kanan tidak
memiliki hubungan dengan data pada tabel kiri (LEFT), maka data pada tabel
pertama (LEFT) akan diisi NULL. Nilai NULL berarti tidak ada data yang direlasikan
antara tabel pertama dengan tabel kedua.
Syntax :
SELECT …………
FROM Tabel1 RIGHT JOIN Tabel2
ON Kondisi
Contoh :
SELECT * FROM Jadwal RIGHT JOIN Pelajaran
ON Pelajaran.KodePel = Jadwal.KodePel
4. LEFT JOIN
Operator LEFT JOIN memiliki fungsi yang terbalik dengan RIGHT JOIN. Jika RIGHT JOIN
menampilkan semua data dari tabel yang dianggap berada di sebelah kanan,
maka LEFT JOIN menampilkan seluruh data pada tabel pertama (LEFT)
Syntax :
SELECT …………
FROM Tabel1 LEFT JOIN Tabel2
ON Kondisi
Contoh :
SELECT * FROM Pelajaran LEFT JOIN Jadwal
ON Pelajaran.KodePel = Jadwal.KodePel
7
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Pandangan (View)
View adalah tabel virtual yang isinya ditentukan oleh query ke dalam database. View
ini bukanlah tabel fisik, tetapi sekumpulan instruksi yang memberikan hasil serangkaian
data. Karakteristik dari view adalah sebagai berikut :
Tidak dapat diberi parameter
Tidak menyimpan data di dalamnya, melainkan definisi (query) suatu tabel
View sebaiknya digunakan apabila kita sering menggunakan query select yang sama
dan berulang untuk mengambil data
View sangat membantu kita untuk merefleksikan field-field yang tidak ada di satu table
tetapi ada di table lain, untuk itu kita bisa gunakan view ini dengan cara membuat
relasi (join) antar table-table tersebut
View adalah untuk merefleksikan sebuah metadata
View menghasilkan result set sedangkan SP tidak (di SP disebutnya return value)
Stored Pocedure
Sebuah stored procedure adalah precompiled executable object yang terdiri dari
satu atau lebih statement SQL. SQL Server memiliki system stored procedure yang sejatinya
telah ada untuk memudahkan melakukan administrasi terhadap SQL Server itu sendiri.
Selain itu kita juga dapat membuat stored procedure sesuai kebutuhan kita. Karakteristik
dari stored procedure adalah sebagai berikut :
Dapat menggunakan parameter
SP umumnya digunakan untuk mengirim nilai (send return values), mengirim parameter
output ataupun enkapsulasi bisnis logic.
SP di kompile terlebih dahulu pada saat pertama kali di jalankan.
Dari pertimbangan security, stored procedure lebih aman.
Stored Procedure sebaiknya digunakan apabila database server terpisah secara fisik
dengan aplikasi atau aplikasi Multi Tier
Dapat menggunakan T-SQL sehingga dapat melakukan logic business
Untuk melakukan suatu proses pengolahan data yang dilakukan di server side
8
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Normalisasi
Proses normalisasi merupakan proses pengelompokan data elemen menjadi tabeltabel yang menujukan entity dan relasinya. Pada proses normalisasi selalu diuji pada
beberapa kondisi. Apakah ada kesulitan pada saat menambah (insert), menghapus
(delete), mengubah (update), membaca (retrieve) pada suatu database. Bila ada
kesulitan maka relasi tersebut dipecahkan pada beberapa tabel lagi atau dengan kata
lain normalisasi merupakan suatu teknik dalam logical desain sebuah database.
Suatu bentuk normalisasi dikatakan sudah berada pada bentuk normal tertentu jika
memenuhi beberapa batasan dari tingkatan tertentu. Tingkatan normalisasi yang lebih
tinggi dianggap lebih baik dari tingkat di bawahnya. Bentuk-bentuk normalisasi :
1. Bentuk Tidak Normal (UnNormalized)
Bentuk ini merupakan sekumpulan data yang akan direkam, tidak ada keharusan
mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi. Data
dikumpulkan apa adanya sesuai dengan kedatangannya.
2. Bentuk Normal Kesatu (1NF atau First Normal Form)
Bentuk normal kesatu mempunyai ciri yaitu setiap data dibentuk dalam flat file (file
data / rata), data dibentuk dalam satu demi satu record dan nilai dari field-field
berupa “atomic value”. Tidak ada set atribut yang berulang-ulang atau atribut bernilai
ganda (multi value). Tiap field hanya satu pengertian, bukan merupakan kumpulan
data yang mempunyai arti mendua, hanya satu arti saja serta bukanlah pecahan
kata-kata sehingga artinya lain.
3. Bentuk Normal Kedua (2NF atau Second Normal Form)
Bentuk normal kedua mempunyai syarat yaitu bentuk data telah memenuhi kriteria
bentuk normal kesatu. Atribut bukan kunci haruslah bergabung secara fungsi pada
kunci utama atau primary key. Sehingga untuk membentuk normal kedua sudah
ditentukan kunci-kunci field. Kunci field haruslah unik dan dapat mewakili atribut lain
yang menjadi anggotanya.
4. Bentuk Normal Ketiga (3 NF atau Third Normal Form)
Untuk membentuk normal ketiga, maka relasi haruslah dalam bentuk normal kedua
dan semua atribut bukan primer tidak punya hubungan yang transitif. Dengan kata
lain, setiap atribut bukan kunci haruslah bergantung hanya pada primary key secara
menyeluruh.
9
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Mengenal SQL
SQL adalah kependekan dari Stuctured Query Language. Dalam bahasa Inggris, SQL
biasa dibaca sebagai SEQUEL dan bukan ES-KYU-EL. Bahasa ini merupakan standard yang
digunakan untuk mengakses basis data relasional. Standar SQL mula-mula didefinisikan
oleh ISO (International Standards Organization) dan ANSI (the American National Standards
Institute), yang dikenal dengan sebutan SQL86. Seiring dengan perjalanan waktu, sejumlah
standar telah ditetapkan. Tabel berikut memperlihatkan keseluruhan standard yang pernah
dibuat.
STANDARD SQL
KETERANGAN
SQL86
Standard pertama SQL, yang mendefinisikan fungsi-fungsi minimal
dalam produk-produk SQL
SQL89
Standard kedua yang menambahkan mekanisme untuk mengimplementasikan hubungan kunci asing (integritas referensial)
SQL92
Menentukan hal-hal yang menjadi fitur SQL sebagai bahasa di masa
mendatang. Banyak produk DBMS yang mengacu standar ini
SQL99
SQL2003
SQL2006
SQL2008
Memperluas SQL92, yang antara lain menyertakan integrasi terhadap
pendekatan berorientasi objek
Mengenalkan fitur-fitur yang berhubungan dengan XML, fungsi
windows, standarisasi sekuesnsial dan kolom dengan property auto
generate
Mendefinisikan metode bagaimana SQL dapat digunakan dalam
konjungsi dengan XML. Export/import data dalam format XML juga
makin dipertegas. Sebagai tambahan, fasilitas ini membolehkan
aplikasi untuk mengintegrasikan kode SQL untuk digunalan XQuery.
Melegalisasi statement Order By diluar definisi kursor. Ditambahkan
instead of trigger dan truncate
SQL Sebagai Sub Bahasa
Penyebutan SQL sebagai bahasa query sebenarnya kurang tepat. Mengapa
demikian ? Sebab, fungsi SQL tidak sekedar untuk melakukan query (memperoleh data),
melainkan juga dapat digunakan untuk kepentingan lain dalam memanipulasi data. Oleh
karena itu, SQL sering kali disebut sebagai suatu subbahasa. Alasannya, walaupun bukan
sekedar untuk query, SQL tidak memenuhi persyaratan sebagai bahasa. Beberapa hal
yang menjadikan SQL tidak tergolong sebagai bahasa adalah karena tidak ada dukungan
Pernyataan penguji kondisi (semacam if pada COBOL), dan
Pernyataan pengulangan (semacam while pada C atau repeat pada Pascal).
Walaupun hanya sebagai sub bahasa, SQL memungkinkan pemrogram ataupun
administrator basis data melakukan hal-hal berikut :
Menciptakan dan memodifikasi struktur tabel
Mengatur sekuritas pengaksesan terhadap basis data
Memperoleh informasi
Melakukan peremajaan data dan penambahan isi basis data.
10
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Bentuk-Bentuk SQL
Terdapat tiga bentuk SQL, yaitu Interactive, Static dan Dynamic.
Interactive
SQL bentuk ini digunakan untuk beroperasi secara langsung dengan basisdata untuk
menghasilkan keluaran yang ditujukan penggunaan oleh manusia. Pada bentuk ini, SQL
dimasukkan lewat kalimat, langsung dieksekusi dan kita dapat melihat hasilnya (jika
ada) secara langsung.
Static
SQL bentuk ini berisi kalimat SQL yang dikodekan (hard code) sebagai bagian aplikasi
atau modul kode. Kebanyakan bentuk adalah Embedded SQL dimana kode SQL
ditempelkan di kode sumber program yang ditulis dengan bahasa lain seperti C atau
Pascal. Agar SQL dapat berhubungan dengan bahasa pemrograman maka diperlukan
perluasan terhadap SQL. Keluaran dan Embedded SQL dilewatkan ke variabel anau
parameter yang digunakan oleh program.
Dynamic
SQL bentuk ini merupakan bagian aplikasi atau modul kode tapi kode SQL spesifik yang
dieksekusi dihasilkan saat jalan bukan dikodekan di program sebelumnya. Terdapat
beberapa perluasan terhadap Static SQL agar memungkinkan Dynamic SQL.
Bahasa SQL
Bahasa SQL mempunyai beberapa bagian (sub bahasa) :
1. Data Definition Language (DDL). DDL memberikan perintah untuk mendefinisikan
skema relasi, penghapusan relasi, membuat indeks dan modifikasi skema relasi.
Perintah yang berhubungan seperti : CREATE, ALTER, DROP.
2. Interactive Data Manipulation Language. DML merupakan bahasa query yang
berdasarkan pada aljabar relasi dan kalkulus relasi tuple. Termasuk didalamnya adalah
perintah untuk penyisipan, penghapusan dan modifikasi. Perintah yang berhubungan
seperti : SELECT, INSERT, UPDATE, DELETE.
3. Embedded DML.
Bentuk
embedded
SQL
biasanya
terdapat
dalam bahasa
pemrograman multi guna seperti Visual Basic, Delphi, dsb.
4. View Definition. DDL SQL memasukkan perintah untuk mendefinisikan view.
5. Authorization. DDL SQL memasukkan perintah untuk menentukan hak-hak akses ke
relasi dan view. Perintah yang berhubungan seperti : GRANT, REVOKE, DENY.
6. Integrity. DDL SQL memasukkan perintah untuk menentukan konstrain integritas yang
harus dipenuhi oleh data yang tersimpan dalam basis data. Perintah yang
berhubungan seperti : ADD CONSTRAINT, ON DELETE CASCADE, dsb.
7. Transaction control. SQL memasukkan perintah-perintah untuk menentukan awal dan
akhir transaksi. Beberapa implementasi juga memungkinkan locking data untuk
concurrency control. Perintah yang berhubungan seperti :
BEGIN TRANSACTION,
COMMIT, ROLLBACK, SAVE.
11
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Perkembangan Microsoft SQL Server
Microsoft SQL Server dikenalkan pada tahun 1990 untuk platform Microsoft OS/2
dalam kerjasamanya dengan Sybase. Produk ini berasal dari Sybase SQL Server 4.x untuk
platform Unix. Dengan adanya Windows NT, muncul inisiatif untuk membangun SQL Server
versi Windows NT sehingga dihasilkan Microsoft SQL Server versi 4.2 untuk platform Windows
NT. Kerjasama dengan Sybase masih berlanjut dan diluncurkan SQL Server 6.0 pada tahun
1995 dan setahun kemudian SQL Server versi 6.5 diluncurkan.
SQL Server 6.5 memperbarui kemampuan transaksi dan menjadi produk database
client/server yang banyak dipakai pada platform Windows NT. Untuk memenuhi kebutuhan
pengguna yang makin meningkat, maka SQL Server perlu didisain ulang dan kerjasama
dengan Sybase dihentikan. Kemudian Microsoft mengembangkan SQL Server 7.0 yang
difokuskan pada tiga area yaitu : Easy to use, Scalability dan Data Warehousing. Pada
tahun 2000, kemudian Microsoft meluncurkan SQL Server 2000.
Butuh sekitar lima tahun bagi Microsoft untuk meluncurkan Microsoft SQL Server 2005
di tahun 2005 ini bersamaan dengan peluncuran Microsoft Visual Studio 2005. Dan sekitar
tiga tahun kemudian, Microsoft kembali mengeluarkan produk DBMS andalan mereka
yakni Microsoft SQL Server 2008 yang juga diikuti dengan Microsoft Visual Studio 2008.
Pada modul ini akan difokuskan untuk membahas Microsoft SQL Server 2000. SQL
Server 2000 mempunyai beberapa edisi. Setiap edisi memberikan performansi dan harga
yang berbeda pula, sehingga pemakaiannya dapat disesuaikan dengan kebutuhan si
pengguna. Adapun edisi yang dimaksud adalah :
EDISI
FITUR
Enterprise
Merupakan edisi terlengkap yang mendukung hingga 32 CPU dan RAM
hingga 64 GB. Cocok digunakan untuk perusahaan besar yang
membutuhkan performa yang maksimal.
Standard
Cocok digunakan untuk perusahaan kecil dan menengah. Edisi ini
mampu mendukung hingga 4 CPU dan RAM hingga 2 GB
Personal
Edisi ini berisi alat bantu manajemen lengkap dan fungsi-fungsi umum
dari edisi Standard serta cocok digunakan untuk keperluan individu. Edisi
ini dijalankan pada sistem operasi yang bukan server, seperti Windows NT
Workstation 4.0, Windows 9x, Windows 2000 Professional dan Windows XP.
Edisi ini mendukung 2 processor dan performansinya dioptimalkan untuk
pemakai tunggal dan workgroup kecil serta mampu menangani lima
user yang konkuren.
Developer
Diluncurkan bersama-sama dengan Microsoft Visual Studio dan hanya
disarankan untuk pengembangan aplikasi yang memakai Visual Studio
Desktop
Engine
(MSDE)
Edisi ini mempunyai fasilitas mesin database dasar dari SQL Server 2000.
Edisi ini tidak mempunyai interface, alat bantu manajemen,
kemampuan analisis, penggabungan replikasi, online book. Edisi ini
membatasi ukuran database dan beban user
Windows CE
Merupakan versi SQL Server 2000 untuk alat-alat yang menjalankan
Windows CE. Versi Windows CE biasa digunakan untuk PDA & Pocket PC.
12
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Tipe Data
SQL-92 standar mendukung bermacam-macam tipe domain yang built-in sebagai berikut :
Char(n) : tipe karakter dengan panjang yang tetap (n) (fixed-length character)
Varchar(n) : tipe karakter dengan panjang bervariasi. Maksimum panjang n.
Int : integer
Smallint : small integer
Numeric (p,d) : p menunjukkan jumlah digit bilangan dan d menunjukkan jumlah digit
dibelakang titik desimal.
Real, double precision : floating-point dan double-precision floating point
Float (n) : floating-point number
Date : tipe kalender
SQL Server 2000 sendiri, mendukung sekitar 30 tipe data. Untuk melihatnya, silahkan
gunakan perintah sp_datatype_info pada jendela Query Analyzer. Atau bisa dilihat pada
Obejct Browser pada Query Analyzaer (F8).
Keamanan SQL Server
Sekuritas Basis Data (Database security) merupakan proteksi basis data terhadap
ancaman atau gangguan melalui kendali yang bersifat teknis maupun administrasi. SQL
Server menerapkan :
1. Autentikasi Login. Untuk login, SQL Server menawarkan 2 metode, yang pertama yakni
Windows Authentication dan yang kedua SQL Server Authentication.
2. SQL Server juga menerapkan Server Role terhadap user-user yang berada dalam sistem,
sehingga hak akses dari masing-masing user dapat diatur.
3. Database Access. User-user juga diberikan limitasi terhadap basis data yang boleh
mereka akses. Disini diperlukan peran seorang DBA untuk mengatur manajemen user.
4. Dari segi Control Language, SQL Server menyediakan perintah-perintah untuk mengatur
hak akses user seperti : GRANT, REVOKE, DENY dan beberapa stored procedure yang
ditujukan untuk maksud ini.
Arsitektur Client/Server
Microsoft SQL-Server dirancang agar efektif dalam sejumlah lingkungan :
1. Sebagai 2-tier atau multi-tier Client/Server Database System,
System client/server dikembangkan sedemikian rupa dimana database ditempatkan
pada suatu komputer pusat, disebut sebagai server, dan dibagi-pakai (share) kepada
sejumlah user. User melakukan akses ke server rnelalui suatu aplikasi client atau aplikasi
server :
Dalam 2-tier client/server system, user menjalankan suatu aplikasi pada lokal
komputer, disebut sebagai client, yang terkoneksi melatui network ke server yang
menjalankan SQL-Server. Aplikasi Client yang menjalankan business logic dan code
untuk menampilkan output kepada user, dikenal sebagai thin client.
Dalam multi-tier client/server system, logic aplikasi client dijalankan pada 2 lokasi :
13
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Thin client berjalan pada komputer lokal dan focus pada penampilan (display)
hasik-hasil ke user.
Business logic ditempatkan pada aplikasi server yang dijalankan pada suatu
server. Thin client memanggil fungsi-fungsi dan aplikasi server, dimana server
memiliki kemampuan multithread yang bekerja dengan beberapa user pada
saat yang sama. Server aplikasi membuka suatu koneksi dengan server
database. Server database dapat merupakan server yang sama atau dapat
juga merupakan server database terpisah yang terkoneksi melalui jaringan.
Client Computer
SQL Server
Client Apllication
SQL Server
Client Apllication
Database Computer
SQL Server
SQL Server
Client Apllication
Server
Application
Internet
Information Server
Internet Server
Internet Client
Gambar Client/Server Database System
2. Sebagai Desktop Database System.
SQL-Server juga dapat digunakan pada aplikasi yang membutuhkan database stand
alone dan tersimpan secara lokal pada komputer client. SQL-Server dapat
mengkoordinasi sendiri secara dinamis untuk berjalan efektif dengan resource yang
tersedia pada client, tanpa memerlukan administrator database tersendiri. Pembuat
aplikasi dapat menyertakan SQL-Server sebagai komponen data storage pada aplikasi
mereka.
14
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Localhost Computer
Sql Server
Databases
SQL Server
Manager Tools
ODBC
Driver
Microsoft
Visual Basic
Borland
Delphi
PHP/ASP
(HTML)
Other Prog
Language
Stand Alone Komputer - Arsitektur Pada Aplikasi
Tools Management SQL Server
Untuk memudahkan melakukan administrasi terhadap basis data, maka SQL Server
menyediakan beberapa tools (kakas) seperti :
1. Service Manager
Utilitas Service Manager dipakai untuk menjalankan (start) atau memberhentikan (stop
dan pause) komponen-komponen server. Komponen-komponen tersebut dijalankan
sebagai service pada Microsoft Windows NT, Windows 9x, dan Windows XP sebagai
program executable yang terpisah.
Gambar Service Manager & Service ManagerOptions
15
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Field Server berisi nama server yang sedang dimonitor. Kotak Services menampilkan
servis-servis yang ada serta tampilan grafis dari status servis. Jika sebuah service sedang
aktif, ditampilan tanda (icon) berwarna panah hijau. Service Manager mempunyai
beberapa
fungsionalitas
yang
tersembunyi.
Klik
kanan
pada
title
bar
akan
menampilkan menu aplikasi dengan dua menu tambahan, yaitu Connect dan Options.
Jika kita memilih sebuah komputer remote pada kotak server, kita dapat terhubung
dengan menu Connect bukan dengan memilih pada kotak Services. Jika kita memilih
Options dari menu konteks, maka akan ditampilkan interface dialog Option.
2. Query Analyzer
Query Analyzer merupakan alat bantu grafis yang dapat digunakan untuk mendesain,
mengetes, dan menjalankan perintah-perintah Transact SQL, stored procedure, batch,
dan script secara interaktif. Kita dapat menjalankan Query Analyzer dengan cara :
Memanggil dari Enterprise Manager
Dari menu Start
Dari command prompt dengan menjalankan utilitas isqlw
Gambar Query Analyzer
3. Enterprise Manager
Enterprise Manager adalah alat bantu administratif yang bersifat Graphical User
Interface (GUI). Hal-hal yang dapat kita lakukan melalui Enteprise Manager adalah :
Mendefinisikan kelompok-kelompok server yang menjalankan SQL Server,
Mendaftarkan sebuah server ke dalam sebuah group,
Membuat database, object, login user, dan hak-hak pada setiap server,
Memanggil Query Analyzer untuk membuat dan mengeksekusi perintah SQL,
Memanggil berbagai wizard yang tersedia.
16
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Gambar SQL Server Enterprise Manager
Klik tanda + pada simpul Microsoft SQL Server, akan ditampilkan simpul SQL Server
Group, klik tanda + lagi, maka akan ditampilan nama server kita. Klik kanan pada
simpul tersebut, kemudian pilih View
TaskPad. Ada dua macam tab yang
ditampilkan, yaitu General dan Wizards. Tab General menampilkan informasi umum dan
tab Wizards akan menampilkan pilihan wizard yang tersedia dan kita dapat memilih
dengan mengklik salah satu wizard untuk mengaktifkannya.
17
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Sekilas Database di SQL Server
Data Microsoft SQL Server disimpan dalam beberapa database. Data dalam suatu
database terorganisasi ke dalam komponen logis bagi user. Suatu database juga secara
fisik teridiri dua atau lebih file pada disk. Bila menggunakan suatu database, pekerjaan
terutama berlangsung pada komponen logis seperti table, view, file procedure, dan user.
Sedangkan secara fisik, file database dapat terlihat pada disk, dan umumnya hanya
database administrator yang perlu bekerja dengan komponen fisik tersebut.
Database XYZ
User View
Physical Implementation
Data.mdf
Data.ndf
Log.ldf
Gambar Physical Implementation
SQL-Server Database File
File Database dan SQL-Server dapat dikategorikan menjadi 3 jenis :
1.
PRIMARY DATA FILE. Data disimpan dalam file dengan ekstensi “.mdf”. File ini
merupakan database yang sesungguhnya, berisi tabel dan objek lain dan database.
File ini disebut juga sebagal Primary Data File.
2.
SECONDARY DATA FILE. File secondary memiliki ekstensi “.ndf”. File ini merupakan
tempat penyimpanan data dan object yang tidak disimpan pada pada file primary.
Database tidak harus memiliki file sekunder, tetapi dapat memiliki beberapa file
sekunder.
3.
LOG. File ini berisi catatan antara lain mengenai modifikasi tabel (UPDATE), input data
baru (INSERT), dan penghapusan data (DELETE). Catatan tersebut akan dimanfaatkan
oteh SQL-Server jika terjadi kegagalan sistem yang mengakibatkan crash. Dengan
catatan yang ada pada file log, SQL-Server melakukan proses recovery, dan
melakukan proses “rollback” untuk transaksi yang belum selesai. File LOG memiliki
ekstensi “.ldf”. Secara default besar file log adalah 25% dan file data.
18
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
2
KONEKSI, TRANSFORMASI, VB, KONSEP-KONSEP
Konsep Connection String
Connection String dapat diartikan sebagai kumpulan kata (string) yang mengandung
informasi
tentang
sebuah
sumber
data
(data
source)
dan
secara
langsung
mengkoneksikannya melalui Driver atau Provider dari masing-masing database sebagai
inisialisasi koneksi. Connection string dapat berisi atribut seperti nama driver, nama server /
ip server, nama database termasuk didalamnya metode keamanan seperti user name dan
password. Berikut ini adalah contoh connection string ke berbagai database :
DATABASE
SQL Server
7 & 2000
SQL Server
2005
CONNECTION STRING
KET
JENIS
Provider=sqloledb; Data Dource=myServerAddress;
Initial Catalog=myDataBase;
User Id=myUsername; Password=myPassword;
SS
OLDB
Provider=sqloledb; Data Source=myServerAddress;
Initial Catalog=myDataBase;Integrated Security=SSPI;
TC
OLDB
Driver={SQL Server}; Server=myServerAddress;
Database=myDataBase; Uid=myUsername; Pwd=myPassword;
SS
ODBC
Driver={SQL Server}; Server=myServerAddress;
Database=myDataBase; Trusted_Connection=Yes;
TC
ODBC
Provider=SQLNCLI; Server=myServerAddress;
Database=myDataBase; Uid=myUsername; Pwd=myPassword;
SS
OLDB
Provider=SQLNCLI; Server=myServerAddress;
Database=myDataBase; Trusted_Connection=yes;
TC
OLDB
Driver={SQL Native Client}; Server=myServerAddress;
Database=myDataBase; Uid=myUsername; Pwd=myPassword;
SS
ODBC
Driver={SQL Native Client}; Server=myServerAddress;
Database=myDataBase; Trusted_Connection=yes;
TC
ODBC
19
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
SQL Server
2008
MySQL
Postgre
SQL
Oracle
IBM DB2
Ms Access
2007
Ms Access
2000/2003
Provider=SQLNCLI10; Server=myServerAddress;
Database=myDataBase; Uid=myUsername; Pwd=myPassword;
SS
OLDB
Provider=SQLNCLI10; Server=myServerAddress;
Database=myDataBase; Trusted_Connection=yes;
TC
OLDB
Driver={SQL Server Native Client 10.0};
Server=myServerAddress; Database=myDataBase;
Uid=myUsername; Pwd=myPassword;
SS
ODBC
Driver={SQL Server Native Client 10.0};
Server=myServerAddress; Database=myDataBase;
Trusted_Connection=yes;
TC
ODBC
Provider=MySQLProv; Data Source=mydb;
User Id=myUsername; Password=myPassword;
SS
OLEDB
Driver={MySQL ODBC 3.51 Driver};Server=
myServerAddress; Port=3306; Database=myDataBase;
User=myUsername; Password=myPassword; Option=3;
SS
ODBC
3.51
Driver={MySQL ODBC 5.1 Driver}; Server=
myServerAddress;Port=3306;Database=myDataBase;User=m
yUsername;Password=myPassword;Option=3;
SS
ODBC
5.1
Provider=PostgreSQL OLE DB Provider; Data
Source=myServerAddress; location=myDataBase; User
ID=myUsername; password=myPassword; timeout=1000;
SS
OLEDB
Driver={PostgreSQL};Server=IP address; Port=5432;
Database=myDataBase; Uid=myUsername; Pwd=myPassword;
SS
ODBC
Provider=OraOLEDB.Oracle; Data Source=MyOracleDB;
User Id=myUsername; Password=myPassword;
SS
OLEDB
Provider=OraOLEDB.Oracle; Data Source=MyOracleDB;
OSAuthent=1;
TC
OLEDB
Driver={Microsoft ODBC for Oracle};
Server=myServerAddress; Uid=myUsername;
Pwd=myPassword;
SS
ODBC
Provider=IBMDADB2; Database=myDataBase;
Hostname=myServerAddress;Protocol=TCPIP;Port=50000;
Uid=myUsername; Pwd=myPassword;
SS
IBM
OLEDB
Provider=DB2OLEDB; Network Transport Library=TCPIP;
Network Address=myServerAddress; Initial
Catalog=MyCtlg; Package Collection=MyPkgCol;
Default Schema=Schema; User ID=myUsername;
Password=myPassword;
SS
MS
OLEDB
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\myFolder\myAccess2007file.accdb;
Persist Security Info=False;
SS
OLEDB
Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\mydatabase.mdb;User Id=admin;Password=;
SS
OLEDB
Driver={Microsoft Access Driver
(*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;
SS
ODBC
Keterangan :
SS = Standard Security
TC = Trusted Connection
20
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
ODBC (Open Database Connectivity)
ODBC merupakan suatu protokol yang berdasarkan database realtional SQL. Secara
singkat, begitu suatu driver ODBC diinstall dari suatu produk database, maka dapat
mengakses isi dari database tersebut tanpa harus mengetahui kerumitan dibaliknya. ODBC
dapat mengakses database apa saja apabila driver database tersebut sudah diinstall.
Meskipun demikian teorinya, masih banyak developer yang mengunakan interface lain
seperti OLE DB dari Microsoft. ada 3 alasan utama yang menyebabkan developer enggan
menggunakan ODBC, yaitu :
Terbatas
ODBC biasanya mendefinisikan interface saat ODBC driver dikeluarkan. Sehingga
apabila muncul fitur baru, ODBC tersebut tidak akan bisa digunakan untuk
mengaksesnya.
Lambat
Dengan interface yang rumit sekali tentunya akan lebih susah untuk mengoptimalkan
suatu aplikasi pada platform tertentu. Developer lebih banyak menemui kesulitan saat
ingin mengoptimalkan aplikasi mereka. Vendor database tertentu menawarkan solusi
mereka sendiri untuk mengoptimalkan penggunaan database mereka.
Kemungkinan sulit untuk digunakan
Low level fungsi API ODBC jelas menyulitkan developer, baik untuk menggunakan
maupun untuk mempelajarinya.
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 System DSN. Pada tab itu, kita buat Data Source
dengan terlebih dahulu menentukan driver yang sesuai, kemudian nama server, teknik
authentikasi 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.
Setelah koneksi terbentuk dengan benar. Maka berbagai aplikasi seperti Visual
Baisc, Miceosoft Access, Microsoft Excel, ASP, dsb, dapat menggunakan fasilitas koneksi
ini untuk menghubungkan sumber data dengan aplikasi.
21
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
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.
22
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
ADO (ActiveX Data Object)
ADO merupakan terobosan yang baru ada mulai Visual Basic 6.0. ADO menjadi
interface antara Visual Basic developer dengan data. Sebuah ADO bertindak seperti
halnya objek lain yaitu dipanggil metodenya, referensikan propertinya, memonitor
eventnya. Dengan menggunakan ADO, gaya pemrograman untuk mengakses database
lokal maupun remote menjadi sama yang dapat dilakukan secara universal.
Sejak hadirnya Visual Basic 6.0, Microsoft mengenalkan objek baru sebagi standar
akses data, yaitu ADO dengan tujuan untuk mempermudah developer mengakses data
dari berbagai sumber yang tentu bervariasi, seperti relasional database, mainframe,
directory service, dan bahkan web-based content.
Gambar ADO Sebagai Interface Pengaksesan Ke Database
ADO pertama kali muncul dan disambut baik oleh pasar, pada bulan juli 1998. ADO
saat itu baru mencapai versi 2.0. Yang membuat ADO diterima baik oleh banyak
developer adalah karena fleksibilitasnya yang tinggi, penggabungan ADO dengan OLE DB
yang menghadirkan high-level dan low-level interface untuk akses data. Pada versi 2.7, RDS
(Remote Data Service) 1.5 juga telah digabungkan ke dalam ADO sehingga model
pemrograman ADO lebih sederhana, handal, dan efesien. Banyak keuntungan yang
ditawarkan oleh ADO, antara lain :
23
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Model pemrograman yang mudah dengan model objek yang sederhana
Penggunaan bandwidth network yang kecil serta kebutuhan memori (RAM) klien yang
lebih rendah.
Operasi asynchronous
Mendukung lokasi kursor pada client-side maupun server-side
Kemampuan menyimpan record set ke dalam suatu file.
Jadi,
ADO menawarkan sesuatu yang lebih dibanding metode yang telah
disebutkan. Sebenernya 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.
Gambar Kontrol ADODC
Transformasi Data
Data Transformation Services (DTS) adalah salah satu modul pada SQL Server yang
bisa mengkonversi data dari SQL Server ke format data yang lain yang kompatibel dengan
OLE DB, ODBC, dan file teks. Sebuah paket DTS pada dasarnya adalah keterangan yang
terperinci mengenai operasi-operasi yang harus dilakukan untuk mengimpor, mengekspor,
atau mentransformasi suatu data.
Gambar Wizard DTS Import/Export
24
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Paket
DTS
bisa
mencakup
meng-copy
tabel-tabel
antar
database
dan
mentransformasi data dari 1 format ke format yang lain dengan menggunakan ODBC,
ActiveX, dan perintah SQL, atau bahkan program-program eksternal yangbisa menjadi
bagian dari paket DTS. Jadi kita dapat melakukan transformasi data dari satu format ke
format yang lain dalam satu atau beda server dengan mudah menggunakan DTS.
Sebagai info. Di SQL Server 2005, Fungsi transformasi data yang selama ini telah
ditangani oleh DTS, maka sekarang diganti menjadi SSIS (SQL Server Information Services)
dengan kemampuan yang lebih baik dari DTS.
Konsep Reference
Ketika kita akan menggunakan suatu teknik pengaksesan ke database, atau
menggunakan fungsi library Microsoft Excel, dan sebagainya, maka 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).
Gambar References Sebuah Project
Konsep Form Sebagai Interface
Visual Basic menyediakan suatu fasilitas yang fleksibel, yang membolehkan Anda
untuk mengkonfigurasikan lingkungan pengembangan pada suatu pilihan yang Anda
inginkan. Anda dapat memilih antar muka yang terdiri dari sebuah dokumen atau banyak
dokumen, dan Anda dapat menyesuaikan dan memposisikan bermacam IDE (Integrated
Development Environment) atau Lingkungan Pengembangan yang saling terintegrasi atau
terhubung satu sama lain. Layout Anda akan tetap di antara session atau bagian-bagian
antar muka Visual Basic.
Form berguna bagi pengguna akhir (end-user) berhubungan/berinteraksi dengan
databasenya. Bagi si perancang aplikasi, form adalah tempat kita menaruh kontrol-kontrol
untuk manipulasi database. Form ini juga terbagi menjadi 2, yaitu :
25
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Form Master
Form yang ditujukan untuk menangani tabel master, biasanya lebih sederhana dan
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 ini
berjenis SDI (Single Document Interface)
Form Transaksi
Form yang ditujukan untuk menangani tabel transaksi, biasanya lebih rumit dan
kadang bisa melibatkan lebih dari 3 tabel. Yang jelas konsep header & detail ada
pada form transaksi ini.
Jika mendesain form, buatlah dengan perasaan yang mendalam, anggaplah kita
lagi mendesain rumah untuk kita tinggali, pasti kita akan buat sebagus mungkin kan ?
usahakan jangan asal-asalan, gunakan rasa seni kita, curahkan perasaan kita di setiap
sudutnya (hehehe). Buatlah 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”.
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 sedikit mengenai kontrol yang standard, bagi yang “expert”
tidak perlu dibaca bagian ini. Kontrol ini terletak pada Toolbox. Jika kontrol tidak terlihat,
maka klik menu View Toolbox. Berikut ini standar penamaan kontrol (walaupun tidak ada
konvensinya secara tertulis).
AWALAN
cbo
chk
cmd
dir
drv
fil
fra
frm
grd
hsb
img
KONTROL
Combo Box
Check Box
Command Button
Directory List Box
Drive List Box
File List Box
Frame
Form
Grid
Horizontal Scrollbar
Image
AWALAN
lbl
lin
lst
mnu
ole
opt
pic
shp
tmr
txt
vsb
KONTROL
Label
Line
List Box
Menu
Ole Client
Option Button
Picture Box
Shape
Timer
Text Box
Vertical Scrollbar
26
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Pointer
PictureBox
TextBox
Label
CommandButton
Frame
OptionButton
CheckBox
ComboBox
ListBox
HScrollBar
VScrollBar
DriveListBox
Timer
DirListBox
FileListBox
Shape
Line
Image
Data
OLE
Gambar Kontrol Standard Pada ToolBox 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.
Kontrol Untuk Database
Pada bagian ini akan dijelaskan kontrol yang nantinya kita akan pakai dalam
pengolahan 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
Setelah ketiganya ter-checklist. Kemudian tekan tombol OK. Maka pada ToolBox
akan ditambahkan beberapa komponen seperti DataGrid, ListView dan SSTab. Maka
ketiga kontrol ini siap digunakan untuk menyajika data pada database kita.
27
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
SSTab
Data Grid
List View
Gambar Kontrol Untuk Database Pada Form
Adapun fungsi dari masing-masing kontrol adalah sebagai berikut :
SSTab berfungsi untuk menghemat pemakaian form, jadi dalam sebuah form kita dapat
meletakkan banyak objek di setiap tab yang ada.
Data Grid berfungsi untuk menampilkan data maupun manipulasi (insert, update dan
delete data) langsung darinya. Juga untuk memudahkan kita dalam mengambil data
dari tabel master untuk form transaksi.
List View kita manfaatkan untuk mengentry data ke form transaksi. Jadi data yang
dimasukkan lewat list view dapat berulang. Pada List View perlu dilakukan pengaturan
sebelum digunakan. Caranya klik kanan pada list view properties. Pada combo view,
gantilah menjadi 3-IvwReport, Pada tab column header, tambahkan field judul (insert
column) & sesuaikan nama serta ukuran yang akan ditampilkan.
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 Seagate Crystal Report Professional versi terbaru atau
Active Report Pro. Namun jika kita seorang yang kreatif, maka kita dapat “mengawinkan”
antara Visual Basic dengan HTML untuk laporannya dengan VBScript tentunya.
28
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
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, kita akan mencoba mengenal
pembuatan laporan dengan data report dengan sedikit script pemrograman. Jika masih
ada waktu, kita akan bahas sedikit Export Data ke Microsof Excel.
Software Pihak Ketiga
( Crystal Report, Active Report )
Data
Tabel / Query
Visual Basic Report
Embedded
Laporan
( Hard/Soft )
Primitive Report
( HTML, TXT, Excel, dsb )
Gambar Konsep Pembuatan Laporan
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
Konsep validasi juga berguna selain untuk memudahkan pengguna dalam
menginput data, mencegah error pada aplikasi, juga berguna untuk meningkatkan
keamanan pada aplikasi. Serangan-serangan pada aplikasi dengan memanfaatkan teknik
seperti SQL Injection dapat diminimalisir jika salah satunya kita gunakan teknik validasi
terhadap suatu inputan.
29
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Konsep Pengampunan
Jika kita ingin mengeksekusi suatu perintah (melalui command button) baik itu save,
insert, update dan delete data, maka kita akan dihadapkan dengan pertanyaan “Apakah
Anda yakin melakukan ini ?” jika jawabannya yakin (yes), maka proses eksekusi dilanjutkan,
jika tidak yakin (no) maka proses eksekusi dibatalkan dan keluar dari prosedur eksekusi.
Konsep ini berguna untuk meyakinkan pengguna dengan apa yang ia kerjakan.
Karena biasanya program aplikasi yang diibuat tidak menyertakan prosedur untuk
membatalkan (undo). Namun jika ditinjau dari segi pemrograman terstruktur, maka konsep
ini jelas tidak sesuai, karena jika tidak yakin maka akan keluar posedur (exit sub) begitu saja.
Berikut ini adalah contoh sederhana dari penggunaan konsep pengampunan :
Private Sub cmddel_Click()
If MsgBox("Apakah Data Akan Dihapus [Y/T] ?", vbYesNo + vbQuestion, "Pesan
Hapus") = vbYes Then
RsObat.Delete
RsObat.MoveFirst
Tampil
DataGrid1.Refresh
Else
Exit Sub
End If
End Sub
Konsep Otomatisasi Penomoran
Suatu tabel pada umumnya mempunyai suatu kunci unik (primary key). Kunci ini
tentunya telah mengikuti pola penomoran tertentu. Seperti : F0001 untuk record faktur ke-1,
B0001 untuk record barang ke-1, dan sebagainya. Ketika kita ingin melakukan
penambahan record pada suatu tabel, maka sebaiknya dilakukan penomoran kunci
secara otomatis untuk menghindari kesalahan waktu kita melakukan input, hal ini juga
meminimaliasasi kerangkapan data (redudansi data).
Dengan otomatisasi penomoran, berbagai format dari sebuah inputan dapat kita
bentuk sesuai dengan kebutuhan. Berikut ini adalah contoh sederhana dari penggunaan
konsep otomatisasi penomoran :
Private Sub KosongPesan()
Dim NoPes As Integer
txttanggal.Text = Date
If RSPesanH.RecordCount = 1 Then
txtnopesan.Text = "F00001"
Else
RSPesanH.MoveLast
NoPes = Val(Right(RSPesanH![NoPesan], 5)) + 1
txtnopesan.Text = Format(NoPes, "F00000")
End If
End Sub
30
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
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. Structured Query Language (SQL) adalah bahasa database
relasional yang dibuat berdasarkan suatu standart. Bentuk dasar dari SQL adalah sebagai
berikut :
SELECT [DISTINCT] select-list
FROM from-list
WHERE qualification
Setiap query dalam SQL harus memiliki klausa SELECT, yang menentukan kolom yang
akan ditampilkan pada hasil, dan klausa FROM yang menentukan cross product table.
Klausa optional WHERE menentukan syarat-syarat seleksi pada table yang ditunjukkan oleh
FROM. Berikut ini akan dibahas sintaksis query SQL dasar dengan lebih mendetail :
From list pada klausa FROM adalah daftar nama table. Nama tabel dapat diikuti oleh
nama alias; nama alias berguna ketika nama tabel yang sama muncul lebih dari sekali
pada from list
Select-list adalah daftar nama kolom (termasuk ekspresinya) dari tabel-tabel yang
tercantum pada form list. Nama kolom dapat diawali dengan nama alias dari tabel.
Kualifikasi pada klausa WHERE merupakan kombinasi boolean atau pernyataan
kata sambung logika dari kondisi yang menggunakan eksepresi yang melibatkan
operator pembanding.
Sedangkan ekspresi itu sendiri dapat berupa nama kolom,
konstanta atau aritmatika dan string.
Kata kunci distinct bersifat pilihan yang menghapus duplikat dari hasil query.
31
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Konsep Penanganan Kesalahan
Konsep penanganan kesalahan (error handling) diperlukan dalam aplikasi agar ada
interaksi dari sistem yang memberitahukan kepada pengguna bahwa sistem sedang
mengalami kesalahan (error). Penanganan dapat meminimalisasi aplikasi berhenti bekerja
(hang) jika terjadi kesalahan. Beberapa statement yang dapat digunakan untuk
menangani kesahan sbb :
On Error Resume Next
On Error GoTo 0
On Error GoTo label
Dsb.
Berikut ini contoh penanganan kesalahan pada aplikasi :
Private Sub Command1_Click()
Dim salah As Label
On Error GoTo salah
Text3.Text = Val(Text1.Text) / Val(Text2.Text)
salah:
MsgBox "Deskripsi Salah : " & Err.Description & vbLf _
& "Nomor Kesalahan : " & Err.Number & vbLf _
& "Sumber Kesalahan :" & Err.Source, vbOKOnly + vbInformation, "Pesan Salah"
Exit Sub
End Sub
Batasan Sebuah Project
Sebuah project di Visual Basic dapat terdiri sampai 32.000 "penanda" (kata kunci
"non-reserved") termasuk di dalamnya, tetapi tidak terbatas untuk jumlah form, control,
module, variabel, konstanta, prosedur, fungsi, dan objek. Jumlah penanda ini pada
kenyataannya tergantung pada jumlah memori yang tersedia.
Nama variabel di Visual Basic tidak boleh lebih panjang dari 255 karakter, dan nama
untuk form, control, module, dan class tidak boleh lebih panjang dari 40 karakter. Visual
Basic tidak membatasi terhadap jumlah objek yang benar-benar digunakan dalam suatu
project.
Microsoft Visual Basic
Microsoft Visual Basic (sering disingkat sebagai VB saja) merupakan sebuah bahasa
pemrograman yang bersifat event driven dan menawarkan Integrated Development
Environment (IDE) visual untuk membuat program aplikasi berbasis sistem operasi Microsoft
Windows dengan menggunakan model pemrograman Common Object Model (COM).
Visual Basic merupakan turunan bahasa BASIC dan menawarkan pengembangan aplikasi
komputer berbasis grafik dengan cepat, akses ke basis data menggunakan Data Access
Objects (DAO), Remote Data Objects (RDO), atau ActiveX Data Object (ADO), serta
menawarkan pembuatan kontrol ActiveX dan objek ActiveX.
32
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Beberapa bahasa skrip seperti Visual Basic for Applications (VBA) dan Visual Basic
Scripting Edition (VBScript), mirip seperti halnya Visual Basic, tetapi cara kerjanya yang
berbeda.
Para
programmer
dapat
membangun
aplikasi
dengan
menggunakan
komponen-komponen yang disediakan oleh Microsoft Visual Basic Program-program yang
ditulis dengan Visual Basic juga dapat menggunakan Windows API, tapi membutuhkan
deklarasi fungsi eksternal tambahan.
Dalam pemrograman untuk bisnis, Visual Basic memiliki pangsa pasar yang sangat
luas. Dalam sebuah survey yang dilakukan pada tahun 2005, 62% pengembang perangkat
lunak dilaporkan menggunakan berbagai bentuk Visual Basic, yang diikuti oleh C++,
JavaScript, C#, dan Java.
VB Codding Style
Ketika telah ada dalam lingkungan pemrograman database (ADO), maka ada 2
style penulisan sintaks VB dalam mengolah record-record pada basis data :
1. VB Style
Perintah2 seperti : AddNew, Delete, Update, Requery dan sebagainya dapat kita
gunakan dalam mengolah record2 pada basis data, Misalnya untuk menambad
sebuah record :
RS.AddNew
RS!Kode = txtKode.Text
RS!Judul = txtJudul.Text
Rs!Pengarang = txtPengarang.Text
RS.Update
atau untuk menghapus record :
If (MsgBox "Apakah Record akan dihapus ? Y/N",VbYesNo,"Pesan") = vbYes Then
RS.Delete
If RS.RecordCount = 0 Then MsgBox "Record Kosong" : Exit Sub
RS.MoveFirst
Call Tampil
Else
Exit Sub
End If
2. SQL Style
Perintah2 seperti : Insert, Alter, Update, Delete, Drop, dll bisa digunakan dalam VB. Nah
ada kalanya kita menggunakan sintax SQL dalam mengolah record-record pada basis
data, misalnya untuk menambah sebuah record, maka yang kita lakukan dengan
perintah sql yang di embededkan di vb adalah sbb :
33
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
CN.Execute "Insert Into Buku Values Kode = ’" & txtKode.Text & "', _
& Judul = ’" & txtJudul.Text & "', Pengarang = '" & txtPengarang.Text & "'"
RS.Requery
atau untuk menghapus record :
If (MsgBox "Apakah Record akan dihapus ? Y/N",VbYesNo,"Pesan") = vbYes Then
CN.Execute "Delete From Buku Where Kode like '" & txtKode.Text & "'%"
RS.Requery
Call Tampil
Else
Exit Sub
End If
34
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
3
PERANCANGAN, PENGKODEAN, IMPLEMENTASI
Mukadimah
Bagian ini akan menjelaskan bagaimana membuat database, tabel-tabel dan view
pada Microsoft SQL Server. Ada paling tidak dua cara yang dapat dilakukan :
1. Secara Grafis
Dengan cara ini, database, tabel & view dibuat secara grafis (GUI) menggunakan
Enterprise Manager (EM). Dengan menggunakan EM, maka pekerjaan ini menjadi
”sangat mudah” karena semuanya tinggal klik, dana ada pula fasilitas Wizardnya.
2. Secara Penulisan Kode SQL
Dengan cara ini, database, tabel & view dibuat dengan menuliskan kode-kode SQL di
dalam Query Analyzer. Workshop ini tentu akan menerapkan cara yang kedua ini, agar
peserta sekalian terbiasa dengan kode-kode SQL ini.
Mulai Merancang Database
1. Berdo’a dahulu, agar hasilnya maksimal ☺
2. Buka program Query Analyzer. Menu Start All Programs Microsoft SQL Server
Query Analyzer
3. Loginlah, tentukan Nama Server & Metode Autentikasi. Bisa menggunakan Windows
Authentication atau SQL Server Authentication.
Gambar Connect To SQL Server
35
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
4. Jika berhasil maka jendela kerja Query Analyzer akan ditampilkan. Maka mulailah kita
untuk mengetik kode berikut ini :
/* MEMBUAT DATABASE */
CREATE DATABASE Workshop
/* MENGGUNAKAN DATABASE */
USE Workshop
/* MEMBUAT TABEL OBAT */
CREATE TABLE Obat
(
KodeObat VARCHAR(10) NOT NULL,
NamaObat VARCHAR(50) NULL,
Harga INT NULL ,
Jenis VARCHAR(30) NULL
PRIMARY KEY (KodeObat)
)
/* MEMBUAT TABEL SUPPLIER */
CREATE TABLE Supplier
(
KodeSupp VARCHAR(10) NOT NULL,
NamaSupp VARCHAR(50) NULL,
Alamat VARCHAR(100) NULL,
Telepon VARCHAR(30) NULL,
KontakPerson VARCHAR(50)NULL
PRIMARY KEY (KodeSupp)
)
/* MEMBUAT TABEL PESAN HEADER */
CREATE TABLE PesanHeader
(
NoPesan VARCHAR(10) NOT NULL,
Tanggal SMALLDATETIME NULL,
KodeSupp VARCHAR(10) NOT NULL,
SubTotal INT NULL,
Diskon INT NULL,
Pajak INT NULL,
GrandTotal INT NULL
PRIMARY KEY (NoPesan)
)
/* MEMBUAT TABEL PESAN DETAIL */
CREATE TABLE PesanDetail
(
NoPesan VARCHAR(10) NOT NULL,
KodeObat VARCHAR(10) NOT NULL,
NamaObat VARCHAR(50) NULL,
Harga INT NULL,
QTY INT NULL,
Total INT NULL
)
/* MEMBUAT TABEL PEMBAYARAN */
CREATE TABLE Pembayaran
(
NoBayar VARCHAR(10) NOT NULL ,
Tanggal SMALLDATETIME NULL ,
36
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
KodeSupp VARCHAR(10) NULL,
NoPesan VARCHAR(10) NULL,
SubTotal INT NULL,
Diskon INT NULL,
Pajak INT NULL,
GrandTotal INT NULL
PRIMARY KEY (NoBayar)
)
/* MEMASUKKAN DATA KE TABEL OBAT */
INSERT INTO OBAT VALUES ('B00001','Panadol',40000,'Obat Sakit Kepala')
INSERT INTO OBAT VALUES ('B00002','Bodrek',35000,'Obat Sakit Kepala')
INSERT INTO OBAT VALUES ('B00003','Puyer 16',32000,'Obat Sakit Kepala')
INSERT INTO OBAT VALUES ('B00004','Mylanta',300000,'Obat Sakit Maag')
INSERT INTO OBAT VALUES ('B00005','Promag',60000,'Obat Sakit Maag')
INSERT INTO OBAT VALUES ('B00006','Aleryn Expectorant',250000,'Obat Batuk Cair')
INSERT INTO OBAT VALUES ('B00007','Vicks Formula 44',210000,'Obat Batuk Cair')
INSERT INTO OBAT VALUES ('B00008','Woods',213000,'Obat Batuk Cair')
INSERT INTO OBAT VALUES ('B00009','Diapet',80000,'Obat Sakit Diare')
INSERT INTO OBAT VALUES ('B00010','Entrostop',60000,'Obat Sakit Diare')
SELECT * FROM OBAT
/* MEMASUKKAN DATA KE TABEL SUPPLIER */
INSERT
INTO
SUPPLIER
VALUES
('K00001','PT.
Risalah
Hati','Jl.
Jambu
No.12','87686789','Taufik')
INSERT
INTO
SUPPLIER
VALUES
('K00002','PT.
Terbaik-Terbaik','Jl.
Mangga
No.89','78968689','Nunung')
INSERT
INTO
SUPPLIER
VALUES
('K00003','PT.
Roman
Picisan','Jl.
Apel
No.45','78946869','Awal')
INSERT INTO SUPPLIER VALUES ('K00004','PT. Kangen','Jl. Durian No.32','55758757','Shinta')
INSERT INTO SUPPLIER VALUES ('K00005','PT. Satu Hati','Jl. Melon No.22','85654464','Adi')
SELECT * FROM SUPPLIER
/* MEMBUAT VIEW VPESAN */
CREATE VIEW VPESAN AS
(
SELECT
PesanHeader.NoPesan,
PesanHeader.Tanggal,
PesanHeader.KodeSupp,
Supplier.NamaSupp,
PesanDetail.KodeObat,
PesanDetail.NamaObat,
PesanDetail.Harga,
PesanDetail.QTY,
PesanDetail.Total
FROM Supplier INNER JOIN PesanHeader
ON Supplier.KodeSupp = PesanHeader.KodeSupp
INNER JOIN.PesanDetail
ON PesanHeader.NoPesan = PesanDetail.NoPesan
)
5. Eksekusilah dengan cara menekan (F5). Atau dari menu Query Execute. Namun perlu
di Blok per blok SQL sebelum di Eksekusi / RUN.
6. Setelah datanbase, tabel & view terbentuk. Maka database workshop siap digunakan.
7. Tahap ini selesai sampai di sini.
37
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Merancang Form & Report Visual Basic
1. Bukalah program Visual Basic, Start All Programs Microsoft Visual Basic 6 Microsoft Visual Basic 6
2. Kemudian buat project baru dengan jenis Standard Exe.
3. Tambahkan 4 form baru, sehingga terdapat 5 form yang akan kita gunakan (form obat,
form supplier, form pemesanan obat, form pembayaran dan form menu utama.
4. Tambahkan pula 2 Data Report untuk desain laporan.
5. Sebelum mendesain form, jangan lupa tambahkan component data grid, list view dan
sstab dari menu component (CTRL+T) > lihat cara sebelumnya.
6. Kemudian gunakan referensi ADO yaitu Microsoft Activex Data Object 2.0 dari menu
Project References.
Berikut ini desain Form Menu Utama
Berikut ini desain Form Master Data Obat
38
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Berikut ini desain Form Master Data Supplier
Berikut ini desain Form Transaksi Pemesanan Obat
39
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Berikut ini desain Form Transaksi Pembayaran Obat
Berikut ini desain Data Report Faktur Pembayaran
40
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Berikut ini desain Data Report Faktur Pemesanan Obat
Pengkodean
Setelah selesai dengan mendesain database dan form-form. Maka tahap selanjutnya
adalah menambahkan kode program. Logika sebelum menuliskan kode progarm :
1. Kita perlu mendefiniskan variabel koneksi ke database, tabel dan view. Jika kita
mendeklarasikan variabel tersebut di module, maka kita dapat menggunakan deklarasi
Public/Global. Jika kita mendekarasikannya di form, maka kita dapat menggunakan
DIM sebagai keyword untuk deklarasi.
Misalnya :
Dim Con As New ADODB.Connection
Dim RsObat As New ADODB.Recordset
2. Setelah mendeklarasikan variabel koneksi, maka langkah selanjutnya adalah membuka
koneksi melalui variabel tersebut. Misalnya untuk membuka koneksi database :
Set Con = New ADODB.Connection
Con.CursorLocation= AdUseClient
Con.Open "Provider=SqlOledb; Data Source=Server; Initial Catalog=Workshop; User ID=sa;
Password=password;"
Untuk mengetes koneksi database : kita dapat menggunakan sintaks seperti :
If Con.State = 1 Then MsgBox "Koneksi Sukses" Else MsgBox "koneksi Gagal"
Jika sukses, maka variabel Con siap digunakan untuk menghubungkan database
dengan visual basic.
41
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Untuk variabel koneksi tabel, kita dapat menggunakan kode :
Set RsObat = New ADODB.Recordset
RsObat.CursorLocation = AdUseClient
StrSql = "SELEcT KodeObat, NamaObat, Harga, Jenis FROM Obat ORDER BY KodeObat"
RsObat.Open StrSql, Con, 1,2
Membuka koneksi dapat diletakkan pada even Private Sub Form_Load() atau dalam
sebuah prosedur baru.
3. Setelah koneksi / hubungan antara aplikasi dan database terbentuk, maka, kita perlu
membuat procedur-procedur tambahan yang ditujukkan untuk meningkatkan efisiensi
pengkodean kita. Misalnya Procedure untuk mengkosongkan Kontrol TextBox. Procedur
untuk pengisian Kode/ID secara otomatis dan sebagainya.
4. Setelah
prosedur-prosedur
menambahkan
kode
tambahan
program
di
terbentuk,
setiap
kontrol
maka
selanjutnya
sesuai
dengan
adalah
kebutuhan.
Penambahan kode program ini juga dipengaruhi oleh logika dari jalannya sistem.
5. Dalam menulisakan kode, sebaiknya kita selalu melakukas tes Trial and Error untuk
menemukan kesalahan pada logika program kita. Tahap ini tentunya dibutuhkan
ketelitian dan kecermatan si pemrogram aplikasi.
42
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Kode Module
'Deklarasi Variabel Global
Global DB As New ADODB.Connection
Global RsObat As New ADODB.Recordset
Global RSSupplier As New ADODB.Recordset
Global RSPesanH As New ADODB.Recordset
Global RSPesanD As New ADODB.Recordset
Global RSBayar As New ADODB.Recordset
Global RSQPesan As New ADODB.Recordset
Global char As String
Global v, i As Integer
'Prosedur Buka Koneksi Database
Public Sub BukaKoneksi()
Set DB = New ADODB.Connection
DB.CursorLocation = adUseClient
DB.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User
ID=sa;Initial Catalog=Workshop;Data Source=TI-04"
End Sub
'Prosedure Buka Koneksi Tabel Obat
Public Sub BukaObat()
Set RsObat = New ADODB.Recordset
RsObat.CursorLocation = adUseClient
RsObat.Open "SELECT KodeObat, " _
& "NamaObat, " _
& "Harga, " _
& "Jenis " _
& "FROM Obat", DB, adOpenDynamic, adLockOptimistic
End Sub
'Prosedure Buka Koneksi Tabel Supplier
Public Sub BukaSupplier()
Set RSSupplier = New ADODB.Recordset
RSSupplier.CursorLocation = adUseClient
RSSupplier.Open "SELECT KodeSupp, " _
& "NamaSupp, " _
& "Alamat, " _
& "Telepon, " _
& "KontakPerson " _
& "FROM Supplier", DB, adOpenDynamic, adLockOptimistic
End Sub
'Prosedure Buka Koneksi Tabel PesanHeader
Public Sub BukaPesanH()
Set RSPesanH = New ADODB.Recordset
RSPesanH.CursorLocation = adUseClient
RSPesanH.Open "SELECT NoPesan, " _
& "Tanggal, " _
& "KodeSupp, " _
& "SubTotal, " _
& "Diskon, " _
& "Pajak, " _
& "GrandTotal " _
& "FROM PesanHeader", DB, adOpenDynamic, adLockOptimistic
End Sub
43
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
'Prosedure Buka Koneksi Tabel PesanDetail
Public Sub BukaPesanD()
Set RSPesanD = New ADODB.Recordset
RSPesanD.CursorLocation = adUseClient
RSPesanD.Open "SELECT NoPesan, " _
& "KodeObat, " _
& "NamaObat, " _
& "Harga, " _
& "QTY, " _
& "Total " _
& "FROM PesanDetail", DB, adOpenDynamic, adLockOptimistic
End Sub
'Prosedure Buka Koneksi Tabel Pembayaran
Public Sub BukaBayar()
Set RSBayar = New ADODB.Recordset
RSBayar.CursorLocation = adUseClient
RSBayar.Open "SELECT NoBayar, " _
& "Tanggal, " _
& "KodeSupp, " _
& "NoPesan, " _
& "SubTotal, " _
& "Diskon, " _
& "Pajak, " _
& "GrandTotal " _
& "FROM Pembayaran", DB, adOpenDynamic, adLockOptimistic
End Sub
Kode 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
Form5.Caption = "
Menu Utama
char = Me.Caption
v = Len(char)
End Sub
"
Private Sub Form_Unload(Cancel As Integer)
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 cmdobat_Click()
Form1.Show
Me.Hide
End Sub
Private Sub cmdsupp_Click()
Form2.Show
44
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Me.Hide
End Sub
Private Sub cmdpesan_Click()
Form3.Show
Me.Hide
End Sub
Private Sub cmdbayar_Click()
Form4.Show
Me.Hide
End Sub
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 cmdobat_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdobat.BackColor = &HE29B81
cmdsupp.BackColor = &HB0D798
cmdpesan.BackColor = &HB0D798
cmdbayar.BackColor = &HB0D798
cmdkeluar.BackColor = &HB0D798
End Sub
Private Sub cmdsupp_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdobat.BackColor = &HB0D798
cmdsupp.BackColor = &HE29B81
cmdpesan.BackColor = &HB0D798
cmdbayar.BackColor = &HB0D798
cmdkeluar.BackColor = &HB0D798
End Sub
Private Sub cmdpesan_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As
Single)
cmdobat.BackColor = &HB0D798
cmdsupp.BackColor = &HB0D798
cmdpesan.BackColor = &HE29B81
cmdbayar.BackColor = &HB0D798
cmdkeluar.BackColor = &HB0D798
End Sub
Private Sub cmdbayar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdobat.BackColor = &HB0D798
cmdsupp.BackColor = &HB0D798
cmdpesan.BackColor = &HB0D798
cmdbayar.BackColor = &HE29B81
cmdkeluar.BackColor = &HB0D798
End Sub
Private Sub cmdkeluar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As
Single)
45
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
cmdobat.BackColor = &HB0D798
cmdsupp.BackColor = &HB0D798
cmdpesan.BackColor = &HB0D798
cmdbayar.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
Kode Form Obat
Private Sub Form_Load()
Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
Call BukaKoneksi
Call BukaObat
If RsObat.RecordCount > 0 Then Call Tampil
Call DGObat
Form1.Caption = " Form Master Obat
End Sub
"
Private Sub Form_Unload(Cancel As Integer)
Tombol True
Call Kosong
Call TutupKoneksi
Form5.Show
Unload Me
End Sub
Private Sub Tampil()
txtkode.Text = RsObat!KodeObat
txtnama.Text = RsObat!NamaObat
txtharga.Text = RsObat!Harga
txtjenis.Text = RsObat!Jenis
End Sub
Private Sub Kosong()
txtkode.Text = ""
txtnama.Text = ""
txtharga.Text = ""
txtjenis.Text = ""
End Sub
Private Sub DGObat()
Set RsObat = New ADODB.Recordset
RsObat.CursorLocation = adUseClient
RsObat.Open "select * from Obat", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RsObat
AturDataGrid
DataGrid1.Refresh
46
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
End Sub
Private Sub AturDataGrid()
DataGrid1.Columns(0).Width
DataGrid1.Columns(1).Width
DataGrid1.Columns(2).Width
DataGrid1.Columns(3).Width
End Sub
=
=
=
=
1200
2200
1600
1800
Private Sub Tombol(Buka As Boolean)
cmdadd.Enabled = Buka
cmdedit.Enabled = Buka
cmddel.Enabled = Buka
cmdfind.Enabled = Buka
End Sub
Private Sub KosongObat()
Dim KodeObat As Integer
If RsObat.RecordCount = 0 Then
txtkode.Text = "B00001"
Else
RsObat.MoveLast
KodeObat = Val(Right(RsObat![KodeObat], 5)) + 1
txtkode.Text = Format(KodeObat, "B00000")
End If
End Sub
Private Sub TutupKoneksi()
RsObat.Close
Set RsObat = Nothing
DB.Close
Set DB = Nothing
End Sub
Private Sub cmdadd_Click()
Kosong
Tombol False
KosongObat
txtnama.SetFocus
End Sub
Private Sub cmdsave_Click()
If MsgBox("Apakah Data Akan Disimpan [Y/T] ?", vbYesNo + vbQuestion, "Pesan Simpan") =
vbYes Then
RsObat.AddNew
RsObat!KodeObat = txtkode.Text
RsObat!NamaObat = txtnama.Text
RsObat!Harga = txtharga.Text
RsObat!Jenis = txtjenis.Text
RsObat.Update
DataGrid1.Refresh
Kosong
Tombol True
Else
Exit Sub
End If
Tampil
End Sub
47
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Private Sub cmdedit_Click()
RsObat!KodeObat = txtkode.Text
RsObat!NamaObat = txtnama.Text
RsObat!Harga = txtharga.Text
RsObat!Jenis = txtjenis.Text
RsObat.Update
DataGrid1.Refresh
End Sub
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 cmdfind_Click()
CARI = InputBox("Ketik Kode Obat Yang Dicari !", "Cari Obat")
Dim Ketemu As Integer
Ketemu = 0
RsObat.MoveFirst
Do Until RsObat.EOF
If UCase(Trim(RsObat!KodeObat)) = UCase(Trim(CARI)) Then
Ketemu = 1
Exit Do
End If
RsObat.MoveNext
Loop
If Ketemu = 1 Then
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
Kosong
Tombol True
TutupKoneksi
Form5.Show
Unload Me
Else
Exit Sub
End If
End Sub
Private Sub cmdfirst_Click()
RsObat.MoveFirst
Tampil
Tombol True
End Sub
48
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Private Sub cmdnext_Click()
RsObat.MoveNext
If RsObat.EOF Then
MsgBox "Data Sudah Di Akhir", vbOKOnly, "Pesan Next"
RsObat.MoveLast
End If
Tampil
Tombol True
End Sub
Private Sub cmdprev_Click()
RsObat.MovePrevious
If RsObat.BOF Then
MsgBox "Data Sudah Di Awal", vbOKOnly, "Pesan Previous"
RsObat.MoveFirst
End If
Tampil
Tombol True
End Sub
Private Sub cmdlast_Click()
RsObat.MoveLast
Tampil
Tombol True
End Sub
Private Sub txtcarikode_Change()
Set RsObat = New ADODB.Recordset
RsObat.CursorLocation = adUseClient
RsObat.Open "Select * From Obat Where KodeObat Like '" & txtcarikode.Text & "%'", DB,
adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RsObat
AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub txtcarinama_Change()
Set RsObat = New ADODB.Recordset
RsObat.CursorLocation = adUseClient
RsObat.Open "Select * From Obat Where NamaObat Like '" & txtcarinama.Text & "%'", DB,
adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RsObat
AturDataGrid
DataGrid1.Refresh
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
49
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Kode Form Supplier
Private Sub Form_Load()
Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
Call BukaKoneksi
Call BukaSupplier
If RSSupplier.RecordCount > 0 Then Call Tampil
Call DGSUpplier
Form2.Caption = " Form Master Supplier
End Sub
"
Private Sub Form_Unload(Cancel As Integer)
Tombol True
Call Kosong
Call TutupKoneksi
Form5.Show
Unload Me
End Sub
Private Sub Tampil()
txtkode.Text = RSSupplier!KodeSupp
txtnama.Text = RSSupplier!NamaSupp
txtalamat.Text = RSSupplier!Alamat
txttelepon.Text = RSSupplier!Telepon
txtkontak.Text = RSSupplier!KontakPerson
End Sub
Private Sub Kosong()
txtkode.Text = ""
txtnama.Text = ""
txtalamat.Text = ""
txttelepon.Text = ""
txtkontak.Text = ""
End Sub
Private Sub DGSUpplier()
Set RSSupplier = New ADODB.Recordset
RSSupplier.CursorLocation = adUseClient
RSSupplier.Open "select * from Supplier", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RSSupplier
AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub AturDataGrid()
DataGrid1.Columns(0).Width
DataGrid1.Columns(1).Width
DataGrid1.Columns(2).Width
DataGrid1.Columns(3).Width
DataGrid1.Columns(4).Width
End Sub
=
=
=
=
=
850
2200
1700
1000
1200
Private Sub Tombol(Buka As Boolean)
cmdadd.Enabled = Buka
50
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
cmdedit.Enabled = Buka
cmddel.Enabled = Buka
cmdfind.Enabled = Buka
End Sub
Private Sub KosongSupp()
Dim KodeSupp As Integer
If RSSupplier.RecordCount = 0 Then
txtkode.Text = "K00001"
Else
RSSupplier.MoveLast
KodeSupp = Val(Right(RSSupplier![KodeSupp], 5)) + 1
txtkode.Text = Format(KodeSupp, "K00000")
End If
End Sub
Private Sub TutupKoneksi()
RSSupplier.Close
Set RSSupplier = Nothing
DB.Close
Set DB = Nothing
End Sub
Private Sub cmdadd_Click()
Kosong
Tombol False
KosongSupp
txtnama.SetFocus
End Sub
Private Sub cmdsave_Click()
If MsgBox("Apakah Data Akan Disimpan [Y/T] ?", vbYesNo + vbQuestion, "Pesan Simpan") =
vbYes Then
RSSupplier.AddNew
RSSupplier!KodeSupp = txtkode.Text
RSSupplier!NamaSupp = txtnama.Text
RSSupplier!Alamat = txtalamat.Text
RSSupplier!Telepon = txttelepon.Text
RSSupplier!KontakPerson = txtkontak.Text
RSSupplier.Update
DataGrid1.Refresh
Kosong
Tombol True
Else
Exit Sub
End If
Tampil
End Sub
Private Sub cmdedit_Click()
RSSupplier!KodeSupp = txtkode.Text
RSSupplier!NamaSupp = txtnama.Text
RSSupplier!Alamat = txtalamat.Text
RSSupplier!Telepon = txttelepon.Text
RSSupplier!KontakPerson = txtkontak.Text
RSSupplier.Update
DataGrid1.Refresh
End Sub
51
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Private Sub cmddel_Click()
If MsgBox("Apakah Data Akan Dihapus [Y/T] ?", vbYesNo + vbQuestion, "Pesan Hapus") =
vbYes Then
RSSupplier.Delete
RSSupplier.MoveFirst
Tampil
DataGrid1.Refresh
Else
Exit Sub
End If
End Sub
Private Sub cmdfind_Click()
CARI = InputBox("Ketik Kode Supplier Yang Dicari !", "Cari Supplier")
Dim Ketemu As Integer
Ketemu = 0
RSSupplier.MoveFirst
Do Until RSSupplier.EOF
If UCase(Trim(RSSupplier!KodeSupp)) = UCase(Trim(CARI)) Then
Ketemu = 1
Exit Do
End If
RSSupplier.MoveNext
Loop
If Ketemu = 1 Then
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
Call TutupKoneksi
Form5.Show
Unload Me
Else
Exit Sub
End If
End Sub
Private Sub cmdfirst_Click()
RSSupplier.MoveFirst
Tampil
Tombol True
End Sub
Private Sub cmdnext_Click()
RSSupplier.MoveNext
If RSSupplier.EOF Then
MsgBox "Data Sudah Di Akhir", vbOKOnly, "Pesan Next"
RSSupplier.MoveLast
End If
Tampil
Tombol True
52
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
End Sub
Private Sub cmdprev_Click()
RSSupplier.MovePrevious
If RSSupplier.BOF Then
MsgBox "Data Sudah Di Awal", vbOKOnly, "Pesan Previous"
RSSupplier.MoveFirst
End If
Tampil
Tombol True
End Sub
Private Sub cmdlast_Click()
RSSupplier.MoveLast
Tampil
Tombol True
End Sub
Private Sub txtcarikode_Change()
Set RSSupplier = New ADODB.Recordset
RSSupplier.CursorLocation = adUseClient
RSSupplier.Open "Select * From Supplier Where KodeSupp Like '" & txtcarikode.Text & "%'",
DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RSSupplier
AturDataGrid
DataGrid1.Refresh
End Sub
Private Sub txtcarinama_Change()
Set RSSupplier = New ADODB.Recordset
RSSupplier.CursorLocation = adUseClient
RSSupplier.Open "Select * From Supplier Where NamaSupp Like '" & txtcarinama.Text &
"%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RSSupplier
AturDataGrid
DataGrid1.Refresh
End Sub
\
Kode Form Transaksi
Private Sub Form_Load()
Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
Call
Call
Call
Call
Call
BukaKoneksi
BukaPesanH
BukaPesanD
BukaObat
BukaSupplier
If RSSupplier.RecordCount > 1 Then Call DGSUpplier
If RsObat.RecordCount > 1 Then Call DGObat
Call KosongPesan
Form1.Caption = " Form Transaksi Pemesanan
End Sub
"
Private Sub Form_Unload(Cancel As Integer)
53
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Form5.Show
Unload Me
End Sub
Private Sub Kosong()
txtkodeobat.Text = ""
txtnamaobat.Text = ""
txtharga.Text = ""
txtqty.Text = ""
txttotal.Text = ""
End Sub
Private Sub KosongPesan()
Dim NoPes As Integer
txttanggal.Text = Date
If RSPesanH.RecordCount = 0 Then
txtnopesan.Text = "F00001"
Else
RSPesanH.MoveLast
NoPes = Val(Right(RSPesanH![NoPesan], 5)) + 1
txtnopesan.Text = Format(NoPes, "F00000")
End If
End Sub
Private Sub DGSUpplier()
Set RSSupplier = New ADODB.Recordset
RSSupplier.CursorLocation = adUseClient
RSSupplier.Open "select * from Supplier", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RSSupplier
AturSupplier
DataGrid1.Refresh
End Sub
Private Sub AturSupplier()
DataGrid1.Columns(0).Width
DataGrid1.Columns(1).Width
DataGrid1.Columns(2).Width
DataGrid1.Columns(3).Width
DataGrid1.Columns(4).Width
End Sub
=
=
=
=
=
1000
2500
2500
1300
1300
Private Sub DGObat()
Set RsObat = New ADODB.Recordset
RsObat.CursorLocation = adUseClient
RsObat.Open "select * from Obat", DB, adOpenDynamic, adLockOptimistic
Set DataGrid2.DataSource = RsObat
AturObat
DataGrid2.Refresh
End Sub
Private Sub AturObat()
DataGrid2.Columns(0).Width
DataGrid2.Columns(1).Width
DataGrid2.Columns(2).Width
DataGrid2.Columns(3).Width
End Sub
=
=
=
=
1300
3500
1800
2000
Private Sub DataGrid1_Click()
txtkodesupp.Text = RSSupplier!KodeSupp
54
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
txtnamasupp.Text = RSSupplier!NamaSupp
txtalamat.Text = RSSupplier!Alamat
txttelepon.Text = RSSupplier!Telepon
txtkontak.Text = RSSupplier!KontakPerson
End Sub
Private Sub DataGrid2_Click()
txtkodeobat.Text = RsObat!KodeObat
txtnamaobat.Text = RsObat!NamaObat
txtharga.Text = RsObat!Harga
End Sub
Private Sub DataGrid2_ColEdit(ByVal ColIndex As Integer)
DataGrid2_Click
End Sub
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
X = ListView1.SelectedItem.Index
txtkodeobat.Text = ListView1.ListItems(X).Text
txtnamaobat.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()
If txtqty.Text = "" Or txtkodeobat.Text = "" Then Exit Sub
ListView1.ListItems.Add(, , txtkodeobat).Text = txtkodeobat.Text
X = ListView1.ListItems.Count
ListView1.ListItems(X).SubItems(1) = txtnamaobat.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
txtgrandtot = Val(txtsubtot) + Val(txtpajak) - Val(txtdiskon)
Kosong
txtkodeobat.SetFocus
End Sub
Private Sub cmdsave_Click()
55
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
If MsgBox("Apakah Data Akan Disimpan [Y/T] ?", vbYesNo + vbQuestion, "Pesan Simpan") =
vbYes Then
RSPesanH.AddNew
RSPesanH![NoPesan] = txtnopesan.Text
RSPesanH![Tanggal] = txttanggal.Text
RSPesanH![KodeSupp] = txtkodesupp.Text
RSPesanH![SubTotal] = txtsubtot.Text
RSPesanH![Diskon] = txtdiskon.Text
RSPesanH![Pajak] = txtpajak.Text
RSPesanH![GrandTotal] = txtgrandtot.Text
RSPesanH.Update
For X = 1 To ListView1.ListItems.Count
RSPesanD.AddNew
RSPesanD![NoPesan] = txtnopesan.Text
RSPesanD![KodeObat] = ListView1.ListItems(X).Text
RSPesanD![NamaObat] = ListView1.ListItems(X).SubItems(1)
RSPesanD![Harga] = ListView1.ListItems(X).SubItems(2)
RSPesanD![Qty] = ListView1.ListItems(X).SubItems(3)
RSPesanD![Total] = ListView1.ListItems(X).SubItems(4)
RSPesanD.Update
Next X
Else
Exit Sub
End If
End Sub
Private Sub cmddel_Click()
If txtqty.Text = "" Or txtkodeobat.Text = "" Then Exit Sub
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
Kosong
End Sub
Private Sub cmdedit_Click()
If txtqty.Text = "" Or txtkodeobat.Text = "" Then Exit Sub
For X = 1 To ListView1.ListItems.Count
If ListView1.ListItems(X).Text = txtkodeobat.Text Then
baris = X
Exit For
End If
Next
ListView1.ListItems(baris).SubItems(3) = txtqty.Text
Kosong
txtkodeobat.SetFocus
End Sub
Private Sub cmdcancel_Click()
ListView1.ListItems.Clear
End Sub
Private Sub cmdprint_Click()
Set RSQPesan = New ADODB.Recordset
Strsql = "Select * From vPesan Where NoPesan = '" & txtnopesan & "' And KodeSupp = '" &
txtkodesupp & "'"
RSQPesan.Open Strsql, DB, adOpenDynamic, adLockOptimistic
Set DataReport1.DataSource = RSQPesan
With DataReport1
.Sections("Header").Controls("lblnopesan").Caption = txtnopesan.Text
56
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
.Sections("Header").Controls("lbltanggal").Caption = txttanggal.Text
.Sections("Header").Controls("lblkodesupp").Caption = txtkodesupp.Text
.Sections("Header").Controls("lblnamasupp").Caption = txtnamasupp.Text
.Sections("Detail").Controls("Text1").DataField = "KodeObat"
.Sections("Detail").Controls("Text2").DataField = "NamaObat"
.Sections("Detail").Controls("Text3").DataField = "Harga"
.Sections("Detail").Controls("Text4").DataField = "QTY"
.Sections("Detail").Controls("Text5").DataField = "Total"
End With
DataReport1.Show
End Sub
Private Sub cmdexit_Click()
If MsgBox("Apakah Akan Keluar Form [Y/T] ?", vbYesNo + vbQuestion, "Pesan Keluar") =
vbYes Then
Form5.Show
Unload Me
Else
Exit Sub
End If
End Sub
Private Sub txtcarikodesupp_Change()
Set RSSupplier = New ADODB.Recordset
RSSupplier.CursorLocation = adUseClient
RSSupplier.Open "Select * From Supplier Where KodeSupp Like '" & txtcarikodesupp.Text &
"%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RSSupplier
AturSupplier
DataGrid1.Refresh
End Sub
Private Sub txtcarinamasupp_Change()
Set RSSupplier = New ADODB.Recordset
RSSupplier.CursorLocation = adUseClient
RSSupplier.Open "Select * From Supplier Where NamaSupp Like '" & txtcarinamasupp.Text
& "%'", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RSSupplier
AturSupplier
DataGrid1.Refresh
End Sub
Private Sub txtcarikodeobat_Change()
Set RsObat = New ADODB.Recordset
RsObat.CursorLocation = adUseClient
RsObat.Open "Select * From Obat Where KodeObat Like '" & txtcarikodeobat.Text & "%'", DB,
adOpenDynamic, adLockOptimistic
Set DataGrid2.DataSource = RsObat
AturObat
DataGrid2.Refresh
End Sub
Private Sub txtcarinamaobat_Change()
Set RsObat = New ADODB.Recordset
RsObat.CursorLocation = adUseClient
RsObat.Open "Select * From Obat Where NamaObat Like '" & txtcarinamaobat.Text & "%'",
DB, adOpenDynamic, adLockOptimistic
Set DataGrid2.DataSource = RsObat
AturObat
57
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
DataGrid2.Refresh
End Sub
Kode Form Pembayaran
Private Sub Form_Load()
Me.Top = (Screen.Height - Height) / 2
Me.Left = (Screen.Width - Width) / 2
Call BukaKoneksi
Call DGBayar
Call DGPesan
KosongBayar
Form4.Caption = "
End Sub
Form Transaksi Pembayaran
"
Private Sub Form_Unload(Cancel As Integer)
Form5.Show
Unload Me
End Sub
Private Sub DGPesan()
Set RSPesanH = New ADODB.Recordset
RSPesanH.CursorLocation = adUseClient
RSPesanH.Open "select * from pesanheader", DB, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = RSPesanH
DataGrid1.Refresh
End Sub
Private Sub DGBayar()
Set RSBayar = New ADODB.Recordset
RSBayar.CursorLocation = adUseClient
RSBayar.Open "select * from pembayaran", DB, adOpenDynamic, adLockOptimistic
Set DataGrid2.DataSource = RSBayar
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
=
=
=
=
=
=
=
=
800
1100
1100
1100
1100
1100
1100
1200
Private Sub DataGrid1_Click()
txtkodesupp.Text = RSPesanH!KodeSupp
txtnopesan.Text = RSPesanH!NoPesan
txtsubtotal.Text = RSPesanH!SubTotal
txtdiskon.Text = RSPesanH!Diskon
txtpajak.Text = RSPesanH!Pajak
txtgrandtotal.Text = RSPesanH!GrandTotal
End Sub
58
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Private Sub DataGrid1_ColEdit(ByVal ColIndex As Integer)
DataGrid1_Click
End Sub
Private Sub Kosong()
txtnobayar.Text = ""
txttanggal.Text = ""
txtkodesupp.Text = ""
txtnopesan.Text = ""
txtsubtotal.Text = ""
txtdiskon.Text = ""
txtpajak.Text = ""
txtgrandtotal.Text = ""
End Sub
Private Sub KosongBayar()
Dim NoBayar As Integer
txttanggal.Text = Date
If RSBayar.RecordCount = 0 Then
txtnobayar.Text = "F00001"
Else
RSBayar.MoveLast
NoBayar = Val(Right(RSBayar![NoBayar], 5)) + 1
txtnobayar.Text = Format(NoBayar, "F00000")
End If
End Sub
Private Sub cmdsave_Click()
If txtkodesupp.Text = "" Then Exit Sub
If MsgBox("Apakah Data Akan Disimpan [Y/T] ?", vbYesNo + vbQuestion, "Pesan Simpan") =
vbYes Then
RSBayar.AddNew
RSBayar![NoBayar] = txtnobayar.Text
RSBayar![Tanggal] = txttanggal.Text
RSBayar![KodeSupp] = txtkodesupp.Text
RSBayar![NoPesan] = txtnopesan.Text
RSBayar![SubTotal] = txtsubtotal.Text
RSBayar![Diskon] = txtdiskon.Text
RSBayar![Pajak] = txtpajak.Text
RSBayar![GrandTotal] = txtgrandtotal.Text
RSBayar.Update
DGBayar
Kosong
KosongBayar
Else
Exit Sub
End If
End Sub
Private Sub cmdcancel_Click()
Kosong
KosongBayar
End Sub
Private Sub cmdprint_Click()
Set RSPesanH = New ADODB.Recordset
Strsql = "Select * From Pembayaran Where NoBayar = '" & txtnobayar & "'"
RSPesanH.Open Strsql, DB, adOpenDynamic, adLockOptimistic
Set DataReport2.DataSource = RSPesanH
59
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
With DataReport2
.Sections("Header").Controls("lblnobayar").Caption = txtnobayar.Text
.Sections("Header").Controls("lbltanggal").Caption = txttanggal.Text
.Sections("Header").Controls("lblkodesupp").Caption = txtkodesupp.Text
.Sections("Header").Controls("lblnopesan").Caption = txtnopesan.Text
.Sections("Header").Controls("lblsubtotal").Caption = txtsubtotal.Text
.Sections("Header").Controls("lbldiskon").Caption = txtdiskon.Text
.Sections("Header").Controls("lblpajak").Caption = txtpajak.Text
.Sections("Header").Controls("lblgrandtotal").Caption = txtgrandtotal.Text
End With
DataReport2.Show
End Sub
Private Sub cmdexit_Click()
If MsgBox("Apakah Akan Keluar Form [Y/T] ?", vbYesNo + vbQuestion, "Pesan Keluar") =
vbYes Then
Form5.Show
Unload Me
Else
Exit Sub
End If
End Sub
..:: SILAHKAN TAMBAHKAN/UBAH KODE PROGRAM AGAR PERFORMANSINYA LEBIH BAIK ::..
60
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
Pendistribusian Aplikasi
Jika ternyata setelah pengecekan aplikasi tidak ditemukan bug yang signifikan. Maka
tahap akhir dari pembuatan aplikasi adalah mendistribusikannya. Visual Basic 6
menyediakan fasilitas untuk mendistribusikan palikasi melalui menu Addins Paackage &
Dployment Wizard.
Selain menggunakan fasilitas pendisribusian aplikasi kepunyaan Visual Basic 6, maka
kita dapat menggunakan perangkat lunak pihak ketiga seperti InstallShield. Biasanya,
software pihak ketiga menawarkan fasilitas yang "lebih" baik dalam melakukan kustomasi /
pengaturan pembuatan paket distribusi aplikasi. Namun sayangnya... software-software in
biasanya tidak gratis hehe. Kecuali Anda membelinya di pusat perbajakan :)
61
W
orkshop MsVB 6 & SQL Server 2000 | Yoga |
4
HALAMAN MENYEBALKAN & NARSIS
Harus Berakhir
Akhirnya workshop ini harus berakhir sampai disini. Terima kasih yang tak terhingga
kepada para peserta & panitia yang sudah dengan sabar mengikuti workshop ini.
Sekali lagi saya mohon maaf jika ada kata-kata yang tidak berkenan dan salah ketik,
maklum lah nulisnya sambil ngantuk. Dan juga minta maaf seandainya modul ini tidak
sesuai harapan. Segala caci-maki, sumpah-serapah, omelan, kritik, saran, pujian, unekunek bisa disampaikan melalui email penulis :
Email/YM
:
1. [email protected]
2. [email protected]
Blog
:
http://prihastomo.wordpress.com
Plurk
:
http://www.plurk.com/yogap
Daftar Pustaka
http://www.globalkomputer.com/Bahasan/Database
http://id.wikipedia.org
http://en.wikipedia.org
Manual, Advance Microsoft Visual Basic 6, 2nd Edition, Microsoft Press
Manual SQL Server 2000 Online Book
Wassalamu’alaikum Wr. Wb.
Hormat Saya,
Yoga Prihastomo
Orang Indonesia Biasa
62
Download