KONSEP DA N A PLIKASI PEMROGRA MA N MENGGUNAKAN BOR LA ND C++ BUILDER 6
BAGIAN 2: APLIKASI VISUAL DATABASE DENGAN ADO .NET ( M S AC C E S S & M S S Q L S E RV E R 2 0 0 0 ) M .
F A C H R U R R O Z I
F E R R Y
G U S T I A W A N
Daftar Isi MUQADDIMAH 1.
PENDAHULUAN
2.
KONSEP DASAR PEMROGRAMAN VISUAL
3.
PEMROGRAMAN VISUAL MENGGUNAKAN BORLAND C++ BUILDER 6
4.
KONSEP DASAR PERANCANGAN DATABASE
5.
PENGENALAN BORLAND DATABASE DESKTOP INTERFACE
6.
APLIKASI DATABASE SEDERHANA MENGGUNAKAN BORLAND DATABASE ENGINE (BDE)
7.
APLIKASI DATABASE MENGGUNAKAN ADO.NET – MS ACCESS DATABASE
8.
APLIKASI DATABASE MENGGUNAKAN ADO.NET – MS SQL SERVER DATABASE
9.
TIPS & TRIKS
10. PENUTUP REFERENSI RIWAYAT HIDUP
2
Muqaddimah
“Allah mengangkat derajat orang yang beriman dan orang yang berilmu pengetahuan beberapa derajat”. (Mujaddalah 11)
“Abu Hurairah r.a. berkata: Rasulullah SAW bersabda: Barang siapa yang ditanya suatu ilmu agama lalu menyembunyikannya, maka akan dikendalikan mulutnya pada hari kiamat dengan kendali dari api neraka”. (Abu Dawud, Attirmidzi) “Tiada akan pernah mampu seseorang dalam mengerjakan sesuatu tanpa pernah mencobanya terlebih dahulu”. Dari ketiga sumber ilmu inilah penulis ingin berusaha membuat sesuatu yang bermanfaat bagi orang lain, walaupun masih banyak kekurangan yang terdapat di dalam buku ini.
3
Buku merupakan lanjutan dari Konsep dan Aplikasi Pemrograman mengunakan Borland C++ Builder 6 Bagian 1 : Aplikasi Konsol. Buku ini membahas mengenai permograman secara visual yang berorientaskan database. Adapun jenis database yang digunakan adalah MS Acces dan MS SQL Server 2000. Sebagian besar isi dari buku ini merupakan rangkuman dari sumber-sumber yang telah dibuat penulis lain. Penulis berharap agar buku ini dapat bermanfaat bagi semua kalangan pembaca. Terima kasih untuk semuanya yang telah memberikan banyak kritik dan saran serta dukungan dalam penulisan buku ini. Dunia akan selalu indah karena kejujuran dan kebersamaan. Palembang,
Penulis
4
Juni 2005
1. Pendahuluan Situasi persaingan bidang teknologi informasi membuat semua kalangan berlombalomba untuk menjadi yang terbaik. Dimulai dari produk sistem informasi yang berbasis konsol (dos) maupun yang berbasis wndow. Perusahaan-perusahaan telah melirik ke arah pengembangan sistem informasi yang berbasis window, selain penggunaannya tidak sulit, fungsi dan fasilitasnya sudah memnuhi kebutuhan mereka. Seperti kalu dilihat pada masa lalu, perusahaaan menggunakan aplikasi dos untuk pelayanan terhadap kastamernya.. Selain penggunaannya yang berbelit-belit, penampilan dan fasilitasnya tidak memenuhi kebutuhan mereka. Ambil sebuah contoh kasus sederhana. Sebuah perusahaan yang bergerak di bidang tekstil. Perusahaan terserbut memiliki bagian-bagian kerja yang saling berkait. Ada bagian keuangan yang mengatur pengeluaran dan pemasukkan perusahaan, ada bagian produksi yang hanya memproduksi saja, ada bagian personalia yang mengatur jumlah dan kinerja para karyawan, dan ada bagian pemasaran yang akan menawarkan produk ke konsmen. Bayangkan, jika perusahaan tersebut tidak mempunyai sistem informasi yang baik untuk pengelolaan perusahaannya, bagaimana bagian pemasarannya bisa bekerja jika informasi dari bagian produksi tidak cepat diterima atau tidak sama sekali, bagaimana bagian produksi bisa menghasilkan sebuah produk yang baik jika informasi kinerja dan kebutuhan pegawai produksi lambat diterima oleh bagian personalia, dan bagaimana bagian keuangan bisa menerima dan mengeluarkan dana jika informasi dari personalia dan pemasaran tidak jelas diterima. Maka akan terjadi inefisiensi dari perusahaan tersebut, baik dari segi waktu, maupun dari segi materi. Masalah di atas banyak terjadi di perusahaan-perusahaan, untuk itu perlu dirancang sebuah sistem informasi yang tepat untuk mengelola alur kerja di perusahaan tersebut. Analisa penyebab keterlambatan penyampaian informasi, misalkan informasi yang digunakan masih menggunakan kertas., tidak terkomputerisasi, atau data yang dimasukkan tiap-tiap bagian tidak terintegrasi ke satu tempat, sehingga menyebabkan data yang ada di tiap bagian itu berbeda satu sama lain. Dikarenakan keadaan inilah Beberapa pengembang meningkatakan kemampuan mereka dengan mendalami software yang berbasi window untuk membangun sebuah sistem informasi yang dapat memenuhi kebutuhan kastamer. Salah satu software pengembang yang mampu memberikan hal itu adalah Borland C++ Builder 6. Borland C++ Builder 6 memiliki fasilitas-fasilitas yang penuh dalam mendukung pengembang software sistem informasi, selain mampu untuk aplikasi-aplikasi yang
5
sederhana, ia juga mampu untuk pengembangan softaware yang berorientasikan database standalone (tunggal) maupun client-server (database jaringan). Sampai saat ini, pembuatan aplikasi visual dengan menggunakan bahasa C++ masih merupakan sebuah mimpi buruk bagi para programmer, karena di dalamnya banyak menuntut pembuatan file-file library yang sangat rumit. Namun sekarang Borland C++ Builder 6 telah mengembangkan aplikasi visual secara mudah dan cepat dimengerti. Namum bagi para pemula yang ingin mengembangkan aplikasi visual dengan bahasa C++, ada baiknya tanamkan konsep-konsep dasarnya dulu yang disediakan di buku dari Konsep dan Aplikasi Pemrograman mengunakan Borland C++ Builder 6 Bagian 1 : Aplikasi Konsol, karena di dalam buku ini merupakan lanjutan dari buku tersebut dan tidak membahas lagi mengenai sintak-sintak dasar bahasa C++.
6
2. Konsep Dasar Pemrograman Visual Borland C++ Builder 6 merupakan salah aplikasi pengembang terbaik yang mempunyai fasilitas yang lengkap. Aplikasi secara visual secara logika hampir sama dengan aplikasi secara konsol, karena aplikasi secara visual merupakan pengembangan aplikasi secara konsol. PERBEDAAN PEMROGRAMAN VISUA L PEMROGRAMAN TERSTRUKTUR
DENGAN
Dalam pengeksekusian kode programnya, pemrograman visual menerapkan konsep event-driven, yaitu peksekusian yang didasarkan atas kejadian (event) tertentu. Setiap kejadian tersebut mempunyai kode program sendiri yang disimpan dalam sebuah fungsi. Berbeda dengan pemrograman terstruktur atau prosedural yang mengeksekusi kode-kode programnya mulai dari awal sampai akhir program secara beruntun. Pada dasarnya konsep pemrograman visual sama dengan konsep pemrograman prosedura, yaitu adanya input, proses dan output. Tapi ada penambahan konsep pemilihan untuk mengeksekusi proses programnya. Konsep pemilihan inilah yang dipakai untuk menjalankan eventnya.
event execute
yes
Input
no other action
Process
Output
7
Untuk memahami konsep dasar pemrograman secara visual yang menerapkan konsep event-driven, perhatikan pada saat menggunakan aplikasi-aplikasi yang yang terdapat pada Microsoft Windows. Pada Windows pertama kali berjalan (running), aplikasi tersebut masih berada dalam keadaan diam. Jika ingin menampilkan menu start, maka harus mengklik tombol start yang terdapat di pojok kanan paling bawah, tampilan yang akan muncul sebagai berikut:
Gambar 2.1 Menu Start artinya, event (kejadian)nya adalah apakah tombol Start diklik. Jika diklik, maka akan melakukan input data yang diperlukan, lalu memproses pengalohan data, kemudian menampilkan data , yaitu menampilkan menu start seperti pada Gambar 2.1., dan hanya proses itu yang dilakukan oleh aplikasi windows, aplikasi lainnya tetap berjalan seperti semula. Secara umum konsep pemrograman visual dapat digambarkan sebagai berikut:
8
Unit
Prosedur A
Prosedur B
Prosedur C
Prosedur D
Project
Unit 1
Unit 2
Unit 3
Unit 4
9
Dari gambar di atas, dapat dijelskan bahwa setiap prosedur atau fungsi yang terdapat di dalam unit, dapat saling bebas mengekspresikan pernyataan di dalam tubuhnya masingmasing, namun bisa juga saling membutuhkan. Jika suatu prosedur membutuhkan informasi dari prosedur lain, maka ia harus mendefinisikan atau memasukkan (include) nama prosedur yang ia ingingkan tersebut. Begitu juga yang terjadi di dalam suatu project.
10
3. Pemrograman Visual Menggunakan Borland C++ Builder 6 Borland C++ Builder 6, merupakan bahasa pemrograman yang mempunyai cakupan kemampuan yang luas dan sangat canggih. Berbagai jenis aplikasi dapat dibuat dengan software ini, termasuk aplikasi untuk mengolah teks, grafik, angka, database dan aplikasi web. Khusus untuk pemrograman database, software ini menyediakan object yang sangat kuat, canggih dan lengkap, sehingga memudahkan pemrogram dalam merancang, membuat dan menyelesaikan aplikasi database yang diinginkan. Selain itu software ini juga menangani data dalam berbagai format database, misalnya format MS Access, Sybase, Oracle, FoxPro, dBase, Informix, MS SQL Server, MySQL dan lain-lain. Namun secara default software menggunakan format Paradox dan dBase. APLIKASI SEDERHAN BUILD ER 6
MENGUNAKAN
BORLAND
C++
Untuk membuat aplikasi baru, langkah-langkah yang harus dilakukan yaitu: 1. Tutup semua aplikasi yang ada dengan cara memilih menu File à Close All. 2. Buka aplikasi baru dengan memilih menu File à New à Application, seperti pada tampilan berikut:
11
3. Setelah itu akan muncul aplikasi baru dengan tampilan Form awal yang masih kosong.
4. Untuk aplikasi pertama ini, pengaturan properti untuk aplikasi ini, tetap dibiarkan secara default terlebih dahulu, sebagai dasar pemahaman kerja sebuah aplikasi visual. Simpan aplikasi baru yang telah dibuat dengan memilih menu File à Save All. Pastikan selalu memilih Save All setiap kali penyimpanan,
12
karena semua file-file yang terbentuk (file project, file source, file h, dll) akan tersimpan secara keseluruhan. 5. Buat folder baru sebagai tempat penyimpanan file-file aplikasi, agar tidak berantakan dan bercampur dengan file-file selain file aplikasi yang telah dibuat.
6. Pada setelah menyimpan, beberapa file terbentuk (created) secara otomatis, seperti terlihat pada tampilan berikut:
13
a. File Project1.bpr (berektensi bpr) File ini merupakan file project yang berfungsi sebagai penggabung antara unit – unit yang terbentuk dengan program utama. b. File Project1.cpp (berektensi cpp) File ini merupakan program utama yang berisi kode untuk proses inisialisasi dan jalannya aplikasi (application running). Bagi programmer pemula, file ini biasanya tidak diubah. Namun bagi programmer yang berpengalaman sering kali melakukan penambahan kode program pada file ini untuk keperluan – keperluan tertentu. Untuk melihat isi file ini, pilihlah menu project – view source pada C++ Builder IDE. Adapun kerangka dari file ini dapat di lihat pada listing dibawah ini. //---------------------------------------------------------------------------
14
#include
#pragma hdrstop //--------------------------------------------------------------------------USEFORM("Unit1.cpp", Form1); //--------------------------------------------------------------------------WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //--------------------------------------------------------------------------c. Unit1.h (berekstensi h) File ini merupakan file header yang berisi pendeklarasian data dan fungsi – fungsi yang akan digunakan di dalam pembuatan aplikasi. Untuk melihat dan memodifikasi isi file ini, tekanlah tombol F12 dan memilih tab Unit1.h di bawah source code atau lakukan klik kanan pada Code Editor dalam IDE C++ Builder, kemudian akan tampil sebuah popup menu, pilih menu open
15
source / header file. Adapun kerangka dari file ini dapat dilihat pada listing di bawah ini. //--------------------------------------------------------------------------#ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------#include #include #include <StdCtrls.hpp> #include //--------------------------------------------------------------------------class TForm1 : public TForm { __published: // IDE-managed Components private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------#endif d. Unit1.cpp (berekstensi cpp) File ini merupakan file yang bertipe C++ Builder Source dan akan digunakan untuk mendefinisikan fungsi – fungsi yang telah dideklarasikan pada file header (unit1.h) di atas. Pada file inilah programmer akan banyak bekerja untuk menuliskan kode – kode program. Adapun kerangka dari file ini dapat dilihat pada listing di bawah ini. //--------------------------------------------------------------------------#include #pragma hdrstop #include "Unit1.h" //---------------------------------------------------------------------------
16
#pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------e. Unit1.dfm (berekstensi dfm) File ini berfungsi menyimpan form yang dibuat. f. Project1.res (berekstensi res) File ini berfungsi sebagai compiled resource yang berisi file-file pelengkap yang digunakan oleh aplikasi, misalnya file gambar ataupun suara. Setelah aplikasi disimpan, maka aplikasi siap untuk dimodifikasi sesuai kebutuhan. BORLAND
C++
BUILD ER
6
BAGI
PROGRAMMER
C++
C++ Builder tentu mudah sekali digunakan oleh mereka yang telah terbiasa membuat program dengan compiler C++. Meskipun demikian terdapat sedikit perbedaan antara bahasa C++ tradisional dengan C++ Builder. C++ Builder tidak mengizinkan programmer C++ untuk melakukan visualisasi program seperti yang biasa mereka lakukan dalam compiler C++. Perbedaan yang paling terlihat adalah bahwa C++ Builder itu didasarkan pada pemrograman dengan model property method – event (PME), sedangkan C++ masih bersifat prosedural. VCL
(VI SUAL
COMPON ENT
LIBRARY)
Istilah VCL (Visual Component Library) pada C++ Builder sebenarnya adalah sebuah kelas juga, sama halnya dengan kelas – kelas yang didefinisikan di dalam C++. Namun keduanya berbeda dalam hal –hal berikut. - VCL dan kelas dalam C++ mempunyai induk hirarki yang berbeda. Semua VCL pada C++ Builder diturunkan dari kelas TObject. - Pada VCL proses pengesetan data dilakukan melalui propertinya, sedangkan pada C++ dilakukan melalui penggunaan atau pendefenisian fungsi.
17
-
Setiap VCL hanya dapat dialokasikan pada head memory, bukan pada stack. Artinya, VCL harus dibuat dengan menggunakan operator new, sedangkan kelas dalam C++ masih dapat dialokasikan di dalam stack.
Komponen-komponen yang sering digunakan di dalam aplikasi visual Borland C++ Builder 6. Gambar
Nama Komponen
Default Name
Posisi Tab
Button
Button1
Standard
Edit
Edit1
Standard
ListBox
ListBox1
Standard
ComboBox
ComboBox1
Fungsi Dasar Proses/event
MaskEdit, LabeledEdit, DBEdit DBListBox, DBLookupListBox
Standard
Input berupa pilihan
DBComboBox, DBLookupComboBox
Input/output dengan length yang lebih panjang
DBMemo
Memo1
Standard
Label
Label1
Standard
CheckBox
CheckBox1
Standard
RadioButton
RadioButton1
Standard
GroupBox
GroupBox1
Standard
Panel
Panel1
Standard
Image
Image1
Additional
Memasukkan gambar
Additional
Membuat bentuk gambar bulat, lingkaran dll
System
Proses perulangan menggunakan satuan interval 1
Timer
Shape1
Timer1
BitBtn, SpeedButton
Input/output berupa teks Input/output berupa pilihan
Memo
Shape
Komponen Sejenis
18
Teks tetap, output Input dengan nilai True or False Input berupa pilihan Group beberapa komponen Group beberapa komponen
DBLabel DBCheckBox RadioGroup, DBRadioGroup Panel
GroupBox DBImage
MainMenu
MainMenu1
Standard
UpDown
UpDown1
Win32
mili detik Membuat menu aplikasi Menambahkan/ mengurangkan nilai dengan step tertentu
CSpinEdit
Kasus 1 (Penerapan konsep dasar pemrograman visual): Buat Aplikasi menghitung Luas Segitiga sama kaki. Langkah-langkah: 1. Buat aplikasi baru, lalu set properti-properti komponen sebagai berikut: No 1
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width
Single Aplikasi Segitiga Verdana 10 300 FUtama poScreenCenter 300
2
Label1
Caption Font
Mencari Luas Segitiga Verdana 12 Bold
3 4 5
Label2 Label3 Label4
Caption Caption Caption
Luas Alas Tinggi Luas
6
Button1
Caption
Hitung
7 8 9
Edit1 Edit2 Edit3
MaxLength MaxLength ReadOnly
5 5 true
Hasilnya seperti pada tampilan berikut:
19
Nilai
2. Simpan aplikasi dengan memilih menu File à Save All. Pada saat menyimpan, buat folder tersendiri untuk aplikasi ini dengan nama Aplikasi_Segitiga. • Ganti Unit1.cpp dengan nama lain yaitu dengan nama utama.cpp. • Ganti Project1.bpr dengan nama lain yaitu dengan nama Segitiga.bpr. 3. Lihat ke bagian object inspector à Button1à event à Klik 2 kali pada event OnClick atau langsung double klik pada komponen Button1, akan muncul tampilan source code sebagai berikut:
Isi dengan sintak seperti pada tampilan berikut:
20
Artinya, sintak yang ada di dalam fungsi ini akan diproses pada saat Button1 diklik satu kali. Penjelasan sintak: • StrToInt, berfungsi untuk mengkonversi nilai string ke integer. Dalam kasus di atas, jika nilai dari Edit1 dan Edit2 yang diinput tidak dikonversi, maka angka yang dibaca oleh komputer adalah sebagai string, artinya tidak dapat dieksekusi secara aritmatik. Ilustrasinya seperti berikut: Jika nilai 2 dan 3 bertipe string, maka: 2 + 3 = 23, 2 * 3 = Error Jika nilai 2 dan 3 bertipe integer, maka: 2+3=5 2 * 3 = 6. • Edit1->Text dan Edit2-> Text, adalah mengambil nilai yang berupa teks/string di komponen Edit1 dan Edit2. • Edit3-> Text = Luas, adalah nilai Luas akan dioutputkan di komponen Edit3.
4. Lihat ke bagian object inspector à FUtamaà event à Klik 2 kali pada event OnCreate atau langsung double klik pada komponen FUtama, akan muncul tampilan source code sebagai berikut:
21
Isi dengan sintak sebagai berikut:
Artinya, Text di Edit1, Edit2 dan Edit3 akan dihapus (dikosongkan). Sintaksintak yang ada di dalam fungsi ini akan diproses pada saat Futama dibuat (create). 5. Simpan aplikasi, lalu tekan Alt + F9 untuk Compiling. Jika ada error, akan muncul pesan error. Lihat letak kesalahan yang dibuat, lalu perbaiki. Contoh kesalahan yang terjadi terlihat pada tampilan berikut:
22
Keterangan error: • Statement Missing ; , artinya ada baris yang tidak memberikan tanda tutup baris dengan Semicolon (;). • Undefined symbol ‘t’, artinya variabel t tidak dideklarasikan dahulu, sehingga program tidak kenal dengan variabel tersbut. • Warning, ‘A’ is assigned a value that is never used, artinya variabel dideklarasikan, tapi tidak berfungsi pada program tersebut. 6. Setelah semua program benar, maka tekan F9 untuk menjalankan aplikasi, seperti pada tampilan berikut ini:
23
Seluruh source program di utama.cpp adalah sebagai berikut: //--------------------------------------------------------------------------#include #pragma hdrstop #include "utama.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TFUtama *FUtama; //--------------------------------------------------------------------------__fastcall TFUtama::TFUtama(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TFUtama::Button1Click(TObject *Sender) { int A,t; float Luas;
24
A = StrToInt(Edit1->Text); t = StrToInt(Edit2->Text); Luas = 0.5 * A * t; Edit3->Text = Luas;
} //--------------------------------------------------------------------------void __fastcall TFUtama::FormCreate(TObject *Sender) { Edit1->Clear(); Edit2->Clear(); Edit3->Clear(); } //--------------------------------------------------------------------------Isi dari file header utama.h adalah sebagai berikut: //--------------------------------------------------------------------------#ifndef utamaH #define utamaH //--------------------------------------------------------------------------#include #include #include <StdCtrls.hpp> #include //--------------------------------------------------------------------------class TFUtama : public TForm { __published: // IDE-managed Components TLabel *Label1; TLabel *Label2; TLabel *Label3; TLabel *Label4; TButton *Button1; TEdit *Edit1; TEdit *Edit2;
25
TEdit *Edit3; void __fastcall Button1Click(TObject *Sender); void __fastcall FormCreate(TObject *Sender); private: // User declarations public: // User declarations __fastcall TFUtama(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TFUtama *FUtama; //--------------------------------------------------------------------------#endif
Kasus 2 (Penerapan konsep logika pemilihan): Buat aplikasi dimana user harus memasukkan password untuk masuk ke aplikasi tertentu. Langkah-langkah: 1. Tutup semua aplikasi yang sedang berjalan dengan memilih menu File à Close All. 2. Buka aplikasi baru dengan memilih menu File à New à Application. 3. Setelah tampilan aplikasi baru muncul, atur tampilan seperti terlihat di bawah ini:
4. Atur properti komponen sebagai berikut
26
No 1
2 3
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width
Nilai Single Login Verdana 12 250 FUtama poScreenCenter 400
Edit1 Edit2
MaxLength MaxLength PasswordChar
20 20 #
5. Simpan seluruh unit aplikasi dengan memilih menu File à Save All. Ganti nama unit1.cpp dengan password1.cpp dan project dengan Password.bpr. 6. Klik 2 kali di Button1 (login) untuk event Button1Click, isi sintak seperti berikut:
7. Klik 2 kali di FUtama untuk event FormCreate, isi sintak sebagai berikut:
27
8. Klik 2 kali di Button2 (Exit) untuk event Button2Click, isi sintak sebagai berikut:
9. Tekan Alt + F9 untuk kompilasi. Jika tidak ada yang error, tekan F9 untuk menjalankan aplikasi. Hasil akhir seperti tampilan berikut:
Isi sintak secara keseluruhan di password1.cpp //--------------------------------------------------------------------------#include #pragma hdrstop #include "password1.h" //--------------------------------------------------------------------------#pragma package(smart_init)
28
#pragma resource "*.dfm" TFUtama *FUtama; //--------------------------------------------------------------------------__fastcall TFUtama::TFUtama(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TFUtama::Button1Click(TObject *Sender) { if(Edit1->Text=="User"&&Edit2->Text=="oke") { ShowMessage("Selamat datang di aplikasi ini"); } else { ShowMessage("Username dan Password Anda SALAH!"); } } //--------------------------------------------------------------------------void __fastcall TFUtama::FormCreate(TObject *Sender) { Edit1->Clear(); Edit2->Clear(); } //--------------------------------------------------------------------------void __fastcall TFUtama::Button2Click(TObject *Sender) { Application->Terminate(); } //--------------------------------------------------------------------------Isi sintak di password1.h: //--------------------------------------------------------------------------#ifndef password1H #define password1H //---------------------------------------------------------------------------
29
#include #include #include <StdCtrls.hpp> #include //--------------------------------------------------------------------------class TFUtama : public TForm { __published: // IDE-managed Components TLabel *Label1; TLabel *Label2; TButton *Button1; TButton *Button2; TEdit *Edit1; TEdit *Edit2; void __fastcall Button1Click(TObject *Sender); void __fastcall FormCreate(TObject *Sender); void __fastcall Button2Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TFUtama(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TFUtama *FUtama; //--------------------------------------------------------------------------#endif
Kasus 3 (Latihan logika TRUE dan FALSE pada komponen) Buat aplikasi untuk menghitung total biaya pembelian untuk suatu barang tertentu. Langkah-langkah 1. Tutup semua aplikasi yang sedang berjalan dengan memilih menu File à Close All. 2. Buka aplikasi baru dengan memilih menu File à New à Application. 3. Setelah tampilan aplikasi baru muncul, atur tampilan seperti terlihat di bawah ini:
30
4. Atur properti komponen sebagai berikut No 1
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width
Single Total Biaya Pembelian Verdana 12 300 FUtama poScreenCenter 400
2
Panel1
Caption BorderStyle Height&Width
(kosong) Single Sesuaikan dengan tampilan
2
Edit1
MaxLength
20
3
Edit2
MaxLength Text
10 0
4
Edit3
ReadOnly Text
true 0
31
Nilai
6
CSpinEdit (Tab Sample)
Increment Max Value TabOrder
50 1000000 1
7
UpDown1
Associate Increment Max
Edit2 1 200
8
BitBtn1
Caption Glyph
9
BitBtn2
Caption Glyph
Mulai Browse (*.bmp), biasanya ada di C:\Program Files\Common Files\Borland Shared\Images\Buttons Selesai Browse (*.bmp)
5. Simpan seluruh unit aplikasi dengan memilih menu File à Save All. Ganti nama unit1.cpp utama.cpp dan project dengan Barang.bpr. 6. Klik 2 kali di FUtama untuk event FormCreate, isi sintak sebagai berikut:
7. Klik 2 Kali di Edit2 untuk event Edit2Change, artinya proses akan dijalankan pada saat nilai di dalam Edit2 berubah. Isi sintak sebagai berikut:
32
8. Klik 2 Kali di CSpinEdit1 untuk event CSpin1EditChange, artinya proses akan dijalankan pada saat nilai di dalam CSpinEdit1 berubah. isi sintak sebagai berikut:
9. Klik ganda di BitBtn1, lalu isi sintak dibawah ini:
10. Klik ganda di BitBtn2, lalu isi sintak dibawah ini:
11. Tekan Alt + F9 untuk kompilasi. Jika tidak ada yang error, tekan F9 untuk menjalankan aplikasi. Hasil akhir seperti tampilan berikut:
33
Isi sintak secara keseluruhan di utama.cpp //--------------------------------------------------------------------------#include #pragma hdrstop #include "utama.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma link "CSPIN" #pragma resource "*.dfm" TFUtama *FUtama; //--------------------------------------------------------------------------__fastcall TFUtama::TFUtama(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TFUtama::FormCreate(TObject *Sender) { Edit1->Clear(); BitBtn1->Enabled = true; BitBtn2->Enabled = false; Panel1->Enabled = false;
34
} //--------------------------------------------------------------------------void __fastcall TFUtama::Edit2Change(TObject *Sender) { Edit3->Text = StrToInt(CSpinEdit1->Text) * StrToInt(Edit2->Text); } //--------------------------------------------------------------------------void __fastcall TFUtama::CSpinEdit1Change(TObject *Sender) { Edit3->Text = StrToInt(CSpinEdit1->Text) * StrToInt(Edit2->Text); } //--------------------------------------------------------------------------void __fastcall TFUtama::BitBtn2Click(TObject *Sender) { BitBtn1->Enabled = true; BitBtn2->Enabled = false; Panel1->Enabled = false; } //--------------------------------------------------------------------------void __fastcall TFUtama::BitBtn1Click(TObject *Sender) { BitBtn1->Enabled = false; BitBtn2->Enabled = true; Panel1->Enabled = true; } //--------------------------------------------------------------------------Isi utama.h secara keseluruhan //--------------------------------------------------------------------------#ifndef utamaH #define utamaH //--------------------------------------------------------------------------#include #include #include <StdCtrls.hpp> #include #include <Buttons.hpp>
35
#include #include "CSPIN.h" #include <ExtCtrls.hpp> //--------------------------------------------------------------------------class TFUtama : public TForm { __published: // IDE-managed Components TBitBtn *BitBtn1; TBitBtn *BitBtn2; TPanel *Panel1; TLabel *Label1; TLabel *Label2; TLabel *Label3; TLabel *Label4; TEdit *Edit1; TEdit *Edit2; TEdit *Edit3; TUpDown *UpDown1; TCSpinEdit *CSpinEdit1; void __fastcall FormCreate(TObject *Sender); void __fastcall Edit2Change(TObject *Sender); void __fastcall CSpinEdit1Change(TObject *Sender); void __fastcall BitBtn2Click(TObject *Sender); void __fastcall BitBtn1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TFUtama(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TFUtama *FUtama; //--------------------------------------------------------------------------#endif
Kasus 4 (Aplikasi menggunakan komponen ComboBox, CheckBox dan RadioButton). Buat aplikasi untuk menghitung total biaya pembelian untuk suatu barang, dengan diskon tertentu.
36
Jika pembeli adalah langganan lama, maka diskon 20%. Jika pembeli membayar dengan LUNAS, maka diskon 10%. Langkah-langkah: 1. Tutup semua aplikasi yang sedang berjalan dengan memilih menu File à Close All. 2. Buka aplikasi baru dengan memilih menu File à New à Application. 3. Setelah tampilan aplikasi baru muncul, atur tampilan seperti terlihat di bawah ini:
4. Atur properti komponen sebagai berikut No 1
Komponen Form1
Properti BorderStyle Caption
37
Nilai Single Total Biaya Pembelian
Font Height Name Position Width
Verdana 12 420 FUtama poScreenCenter 400
2
Panel1
Caption BorderStyle Height&Width
(kosong) Single Sesuaikan dengan tampilan
3
ComboBox1
MaxLength CharCase Text Items
20 ecUpperCase NAMA BARANG PENA PENSIL PENGHAPUS
4
Edit1
ReadOnly Text
true 0
5
CSpinEdit (Tab Sample)
Increment Max Value
1 100
6
RadioGroup1
Caption Columns Items
Langganan? 2 Ya Tidak
7
CheckBox1
Caption State
Lunas cbChecked
8
Edit2
Text ReadOnly
0 true
9
Edit3
Text ReadOnly
0 true
38
10
Edit4
Text ReadOnly
0 true
11
BitBtn1
Caption Glyph
12
BitBtn2
Caption Glyph
Hitung Browse (*.bmp), biasanya ada di C:\Program Files\Common Files\Borland Shared\Images\Buttons Keluar Browse (*.bmp)
5. Simpan seluruh unit aplikasi dengan memilih menu File à Save All. Ganti nama unit1.cpp dengan utama.cpp dan project dengan Barang2.bpr. 6. Klik ganda di komponen ComboBox1 untuk event ComboBox1Change, isi sintak berikut:
7. Klik ganda di komponen BitBtn1 (Hitung) dan isi sintak berikut:
39
8. Klik ganda di BitBtn2 (Keluar) untuk event BitBtn2Click, isi sintak sebagai berikut:
40
9. Simpan aplikasi, tekan Alt + F9 untuk kompilasi. Jika tidak ada yang error, tekan F9 untuk menjalankan aplikasi. Hasil akhir seperti tampilan berikut:
Isi sintak utama.cpp secara keseluruhan: //--------------------------------------------------------------------------#include #pragma hdrstop #include "utama.h" //---------------------------------------------------------------------------
41
#pragma package(smart_init) #pragma link "CSPIN" #pragma resource "*.dfm" TFUtama *FUtama; //--------------------------------------------------------------------------__fastcall TFUtama::TFUtama(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TFUtama::ComboBox1Change(TObject *Sender) { if(ComboBox1->Text == "PENA") { Edit1->Text = 10000; } else if(ComboBox1->Text == "PENSIL") { Edit1->Text = 7000; } else if(ComboBox1->Text == "PENGHAPUS") { Edit1->Text = 4000; } else { Edit1->Text = 0; }
} //--------------------------------------------------------------------------void __fastcall TFUtama::BitBtn1Click(TObject *Sender) { float Jumlah, Total; float Diskon1,Diskon2,TotDisk; /* Jumlah awal */ Jumlah = StrToInt(Edit1->Text) * StrToInt(CSpinEdit1->Text);
42
Edit2->Text = Jumlah; /* Diskon Langganan */ if(RadioGroup1->ItemIndex == 0) { Diskon1 = 0.2; } else { Diskon1 = 0; } /* Diskon Lunas */ if(CheckBox1->State == cbChecked) { Diskon2 = 0.1; } else { Diskon2 = 0; } TotDisk = Jumlah * (Diskon1 + Diskon2); Total = Jumlah - TotDisk; Edit3->Text = TotDisk; Edit4->Text = Total;
} //--------------------------------------------------------------------------void __fastcall TFUtama::BitBtn2Click(TObject *Sender) { Application->Terminate(); } //---------------------------------------------------------------------------
43
KONSEP
TIMER
Secara umum Timer didefinisikan sebagai event/proses yang terjadi secara berulang dengan satuan/interval waktu tertentu. Konsep kerja Timer adalah menggunakan konsep perulangan for, hanya saja proses dan step perulangan ditentukan oleh interval waktu yang ditentukan. Sebagai contoh, untuk penulisan jam. Jika tanpa menggunakan timer, output yang dihasilkan menunjukkan jam pada saat proses itu saja, dan tidak berubah lagi selayaknya jam pada umumnya. Jika menggunakan timer, maka akan menunjukkan yang selalu berubah hasilnya setiap interval waktu 1 detik. Kasus 5 (penerapan konsep Timer): Membuat aplikasi jam digital. Langkah-langkah: 1. Tutup semua aplikasi yang sedang berjalan dengan memilih menu File à Close All. 2. Buka aplikasi baru dengan memilih menu File à New à Application. 3. Setelah tampilan aplikasi baru muncul, atur tampilan seperti terlihat di bawah ini:
4. Atur properti komponen sebagai berikut No 1
Komponen Form1
Properti BorderStyle Caption
44
Nilai Single Jam Digital
Font Height Name Position Width
Verdana 22 200 FUtama poScreenCenter 300
2
Timer1
Interval
1000
3
Label1
Alignment Autosize
taCenter false
5. Simpan seluruh unit aplikasi dengan memilih menu File à Save All. Ganti nama unit1.cpp dengan utama.cpp dan project dengan JamDigital.bpr. 6. Klik ganda di komponen Timer1 untuk event Timer1Timer, isi sintak berikut:
7. Simpan aplikasi, tekan Alt + F9 untuk kompilasi. Jika tidak ada yang error, tekan F9 untuk menjalankan aplikasi. Hasil akhir seperti tampilan berikut:
45
4. Konsep Dasar Perancangan Database Sebelum merancang sebuah aplikasi database, haruslah dipahami dulu apa itu database, bagaimana konsep database dan bagaiman merancang sebuah database. APA
I TU
DATABASE
Database adalah suatu unit yang berisikan data-data yang tersimpan di dalam tabel dan query. Tabel adalah tempat record disimpan berdasarkan baris dan kolom. Query adalah satu kolom atau lebih yang diambil dan diacu dari satu atau beberapa tabel dalam satu database.
Tabel
Tabel
Tabel
Query
Tabel
Query
Database
TIPS
PERANCANGAN
DATABASE
Dalam perancangan database, perhatikan betul mana data-data yang harus diinput, jangan sembarangan dalam menentukan kolom-kolom tabel. Buatlah kolom-kolom sesuai dengan kebutuhan klien. Dalam hal perancangan, database dibedakan menjadi 3 jenis tempat data disimpan, yaitu: 1. Data Master
46
Data master adalah identitas yang didapat dari objek tertentu. Misalkan data mahasiswa, mata kuliah, barang, pegawai, dll. 2. Data Transaksi Data transaksi adalah data yang diambil dengan mengacu ke data lain. Misalkan data pembelian, penjualan, pengambilan mata kuliah, dll. 3. Data Report Data yang dikeluarkan ke laporan berdasarkan data-data yang ada di data transaksi dan data master. Misalnya Rekap tahunan penjualan, rekap bulanan pembelian, dll. Contoh Kasus: Sebuah toko alat tulis ingin membuat sistem pendataan secara komputerisasi untuk data barang yang masuk dan data barang yang keluar. Data yang masuk artinya barang yang dibeli dari agen, dan data yang keluar artinya barang yang dijual ke pelanggan. Dari hasil transaksi penjualan dan pembelian akan direkap setiap satu bulan sekali. Kebutuhan: - Jumlah inventaris barang (stock) ditampilkan dalam satu tabel/query Perancangan database: Nama database : dbtoko. Dari kasus di atas, data dapat dibagi menjadi 3 bagian, yaitu: 1. Data Master a. Data Barang (nama tabel : barang) b. Data Agen (nama tabel : agen) c. Data Pelanggan (nama tabel : pelanggan) 2. Data Transaksi a. Data Penjualan Bulanan (nama tabel : t_jual) b. Data Pembelian Bulanan (nama tabel : (t_beli) 3. Report (Laporan) yang berupa Rekap. a. Rekap Penjualan Bulanan (nama query : q_jual) b. Rekap Pembelian Bulanan (nama query : q_beli)
47
Dari hasil survei terhadap toko tersebut, diperoleh filed-field yang dibutuhkan untuk diinput dari ketiga jenis data di atas, yaitu: 1. Data Master : Data Barang (nama tabel : barang) Index 0 1 4 5 6 7
Nama Field kodebrg namabrg satuan hjual hbeli gambar
Type
Size
Char Char Char Number Number Char
6 50 20 10 10 50
Default
0 0
Allow NULL No No Yes Yes Yes Yes
Unique Primary Yes No No No No No
Yes No No No No No
Arahan Kode Barang Nama Barang Satuan Ukuran Harga Jual Harga Beli Gambar Barang
Mengapa Field gambar menggunakan Char? Karena data gambar tidak disimpan di tabel, field tersebut hanya berisikan alamat tempat gambar itu berada. 2. Data Master : Data Agen (nama tabel : agen) Index 0 1 2 3
Nama Field kodeagen namagen alamat telepon
Type
Size
Char Char Char Char
6 50 50 25
Default
Allow NULL No No Yes Yes
Unique Primary Yes No No No
Yes No No No
Arahan Kode Agen Nama Agen Alamat Agen Nomor Telepon
3. Data Master : Data Pelanggan (nama tabel : pelangan) Index 0 1 2 3
Nama Field kodeplgn namaplgn alamat telepon
Type
Size
Char Char Char Char
6 50 50 25
Default
Allow NULL No No Yes Yes
Unique Primary Yes No No No
Yes No No No
Arahan Kode Pelanggan Nama Pelanggan Alamat Pelanggan Nomor Telepon
4. Data Transaksi : Data Penjualan Bulanan (nama tabel : t_jual) Inde x 0
Nama Field bulan
Type Char
Siz e 10
Defaul t
48
Allow NULL No
Arahan Bulan Pembelian
Keterangan
1
tahun
2 3
kodeplgn kodebrg
4 5
qty lunas
Char
4
No
Tahun Pembelian
Char Char Numbe r Logical
6 6
No No
Kode Agen Kode Barang Jumlah Pembelian Status Pelunasan
4
0
No Yes
dari tabel pelanggan dari tabel barang
True atau False
5. Data Transaksi : Data Pembelian Bulanan (nama tabel : t_beli) Index 0 1 2 3 4 5
Nama Field bulan tahun kodeagen kodebrg qty lunas
Type Char Char Char Char Number Logical
Size 10 4 6 6 4
Default
0
Allow NULL No No No No No Yes
Arahan Bulan Pembelian Tahun Pembelian Kode Pelanggan Kode Barang Jumlah Pembelian Status Pelunasan
Keterangan
dari tabel agen dari tabel barang True atau False
6. Data Report : Rekap Penjualan Bulanan (nama tabel : q_jual) Index 0 1 2 3 4 5 6 7 8 9
Nama Field bulan tahun kodeplgn namaplgn kodebrg namabrg satuan hjual qty lunas
Type Char Char Char Char Char Char Char Number Number Logical
Size 10 4 6 50 6 50 20 10 3
Arahan Bulan Pembelian Tahun Pembelian Kode Pelanggan Nama Pelanggan Kode Barang Nama Barang Satuan Ukuran Harga Satuan Jumlah Pembelian Status Pelunasan
dari dari dari dari dari dari dari dari dari dari
Keterangan tabel t_jual tabel t_jual tabel t_jual tabel pelanggan tabel t_jual tabel barang tabel barang tabel barang tabel t_jual tabel t_jual
7. Data Report : Rekap Pembelian Bulanan (nama tabel : q_beli) Index 0 1 2 3
Nama Field bulan tahun kodeagen namagen
Type Char Char Char Char
Size 10 4 6 50
Arahan Bulan Pembelian Tahun Pembelian Kode Pelanggan Nama Pelanggan
49
dari dari dari dari
Keterangan tabel t_beli tabel t_beli tabel t_beli tabel agen
4 5 8 9 11 12
kodebrg namabrg satuan hbeli qty lunas
Char Char Char Number Number Logical
6 50 20 9 3
Kode Barang Nama Barang Satuan Ukuran Harga Satuan Jumlah Pembelian Status Pelunasan
dari dari dari dari dari dari
tabel tabel tabel tabel tabel tabel
t_jual barang barang barang t_beli t_beli
Tabel Relationships 1. Transaksi Penjualan
2. Transaksi Pembelian
Setelah rancangan database dibuat, tentukan jenis format tabel yang sesuai. Misalnya dengan dBase, Ms Access, MySQL, MS SQL Server, dll. Format ini ditentukan sesuai dengan kebutuhan. 1. Untuk aplikasi yang standalone (tunggal), gunakan dBase atau Paradox. 2. Untuk aplikasi yang datanya terintegrasi ke satu komputer, gunakan MS Access, MySQL atau MS SQL Server atau Oracle.
50
51
5. Pengenalan Borland Database Desktop Interface Borland Database Desktop Interface adalah salah satu program aplikasi yang tergabung di Borland C++ Builder 6. Fasilitas ini berfungsi untuk membuat dan mengolah database yang menggunakan Jenis Borland Database Engine (BDE) dengan format utama adalah dBase dan Paradox. Fasilitas ini terinstal secara bersamaan pada saat menginstal Borland C++ Builder 6. MENGGUNAKAN
DATABASE
DESK TO P
Cara memanggil aplikasi ini yaitu dengan mengklik menu Start à Programs à Borland C++ Builder 6 à Database Desktop. Setelah aplikasi terbuka, akan muncul tampilan awal seperti berikut:
52
File Database Secara default, database yang digunakan di aplikasi ini adalah dengan nama “BCDEMOS”, dengan dBase dan Paradox (STANDARD) sebagai format tabelnya. Namun jika ingin membuat database selain itu, caranya adalah: 1. Pilih menu Tools à Alias Manager. Muncul tampilan berikut:
2. Klin New, kemudian ketik nama database dan pilih format tabelnya. Membuat Tabel Baru 1. Pilih menu File à New à Table sehingga muncul tampilan berikut ini:
53
2. Pilih jenis tabel yang diinginkan, lalu klik OK. Lalu akan muncul tampil an sebagai berikut:
Keterangan: • Pada kolom Field Name, tentukan nama field yang diinginkan. Nama Field adalah nama pengenal kolom dalam tabel database. Aturan pemberian nama filed adalah sebagai berikut: i. Panjang maksimum 10 karakter untuk format dBase, dan 25 Karakter untuk Paradox. ii. Tidak boleh diawali dengan spasi, tapi boleh mengandung spasi. iii. Harus unik, artinya setiap nama field harus berbeda dalam satu tabel. iv. Jangan menggunakan tanda koma (,), tanda pipe (|) dan data seru (!). v. Hindarkan penggunaan kata perintah SQL, misalnya SELECT, WHERE, COUNT. • Pada kolom Type, tentukan tipe field yang tepat sesuai kebutuhan. Tekan spasi untuk menampilkan pilihan yang tersedia. Untuk format dBase, jenis tipe yang ada, yaitu:
54
i. Character (C), untuk menampung kumpulan karakter huruf, angka dan karakter ASCII dapat tercetak, ukuran field tipe ini antara 1 sampai 255 byte. Jenis ini tidak dapat dieksekusi secara aritmatika. ii. Float (F), untuk menampung kumpulan angka yang dapat diproses secara aritmatika dengan range dari -10307 sampai dengan 10308 dengan 15 digit angka signifikan. iii. Number (N), untuk menampung kumpulan angka yang dapat diproses secara aritmatika dengan range dari -2147483648 sampai dengan 2147483647. iv. Date (D), untuk menampung tanggal sampai dengan 31 Desember 9999. v. Logical (L), untuk menampung data yang berjenis boolean. vi. Memo (M), untuk menampung kumpulan karakter huruf, angka dan karakter ASCII dapat tercetak, ukuran field tipe ini antara 1 sampai 255 MB. Jenis ini tidak dapat dieksekusi secara aritmatika. 3. Setelah semuanya diisi, klik Define untuk menentukan kolom kunci (index primary key) tabel tersebut. Klik ganda pada filed yang akan dijadikan index seperti tampilan berikut ini:
55
Jika selesai tekan OK. 4. Setelah semuanya selesai, simpan dengan menekan Save As, letakkan di folder yang tepat, misalnya di folder data bersamaan dengan folder aplikasi yang akan dibuat. 5. Untuk memodifikasi tabel, pilih menu Table à Restructure. Setelah semua tabel dibuat, selanjutkan menghubungkan tabel-tabel tersebut ke dalam aplikasi Borland C++ Builder 6.
56
6. Aplikasi Database Sederhana Menggunakan Borland Database Engine (BDE) MEMBUAT
APLIKASI
DATABASE
SEDERHANA
Dari tabel yang telah dirancang di bab 4 di atas, sekarang bagaimana merancang aplikasi dengan menggunakan tabel tersebut. Persiapan: - Software Borland C++ Builder 6 - Database Desktop - Jenis Database menggunakan Borland Database Engine (BDE) - Tabel menggunakan format dBase IV Perancangan Form Aplikasi dengan Borland C++ Builder 6 No 1 2 3 4 5 6 7 8 9 10 11 12
Nama Form Menu Utama Fmenu Data Modul untuk database DM1 Input Data Barang Fbarang Input Data Agen Fagen Input Data Pelanggan Fpelanggan Transaksi Penjualan Ft_jual Transaksi Pembelian Ft_beli Lookup Data Barang, Data Agen, Flookup Data Pelanggan Konfirmasi Rekap Bulanan Penjualan FKRek dan Pembelian Report Rekap Bulanan Penjualan FRekJual Report Rekap Bulanan Pembelian FRekBeli Password Fpassword Arahan
57
*.cpp
*.h
menu.cpp modul1.cpp barang.cpp agen.cpp pelanggan.cpp t_jual.cpp t_beli.cpp lookup.cpp
menu.h modul1.h barang.h agen.h pelanggan.h t_jual.h t_beli.h lookup.h
krek.cpp
krek.h
RekJual.cpp RekBeli.cpp password.cpp
RekJual.h RekBeli.h password.h
Persiapan Folder: Buat Folder baru dengan nama Aplikasi_BDE untuk meletakkan data-data aplikasi dan tabel yang akan dibuat. Di dalam folder tersebut buat 2 folder lagi dengan nama Data dan Program. Folder Data sebagai tempat menyimpan tabel dan folder Program tempat menyimpan data program aplikasi Borland C++ Builder 6, hasilnya seperti pada tampilan berikut:
Pembuatan Tabel: Sebelum membuat tabel, atur dulu Working Directory di Database Desktop, arahkan (browse) ke Folder Data yang telah dibuat di atas. Kemudian buat tabel-tabel dengan spesifikasi seperti tabel-tabel pada kasus di bab 4 dengan menggunakan Database Desktop (cara membuat tabel dijelaskan di bab 5). Letakkan semua folder di dalam folder Data dengan hasil akhir seperti pada tampilan berikut:
58
Pembuatan Form Aplikasi: Setelah semua tabel dibuat, buka aplikasi baru di Borland C++ Builder 6, dengan menutup semua aplikasi yang berjalan terlebih dahulu. 1. Form Menu Utama (Fmenu, menu.cpp, menu.h) Form menu ini adalah form pertama pada saat membuka aplikasi baru. Tambahkan komponen-komponen ke dalam form ini seperti terlihat pada tampilan berikut:
59
Klik ganda di toolbar Menu yang ada di Form, isi menu sesuai kebutuhan ditambahkan dengan menu Help yang isinya ada pilihan Exit:
60
Setelah selesai, tutup isian Menu, kemudian pilih menu Exit, lalu isi sintak seperti di bawah ini:
Atur properti komponen seperti dalam tabel berikut: No 1
Komponen Form1
Properti BorderStyle Caption Font Height Name
61
Nilai Single Toko Maya Verdana 10 450 Fmenu
Position Width FormStyle 2
MainMenu1
poScreenCenter 600 fsMDIForm
(lihat di gambar 6.2)
Simpan seluruh aplikasi (Save All), ganti project dengan nama TokoMaya.bpr
2. Data Modul (DM1, modul1.cpp, modul1.h) Untuk membuat Data Modul,pil menu File à New à Data Modul. Karena kasus ini menggunakan format tabel dBase, maka digunakan Database STANDARD yang ditambahkan dari tab BDE. Seperti pada tampilan berikut:
DataSource, berfungsi sebagai penghubung antar tabel/query ke form
Atur properti komponen sebagai berikut: No 1 2
Komponen DataModule1 Database1
Properti
Nilai
Name
DM1
DatabaseName Name DriverName LoginPrompt Connected
dbtoko dbtoko STANDARD false True
62
3
Tabel1
DatabaseName TableName IndexFieldName Name Active
dbtoko ../data/barang.dbf KODEBRG barang true
4
Tabel2
DatabaseName TableName IndexFieldName Name Active
dbtoko ../data/agen.dbf KODEAGEN agen true
5
Tabel3
DatabaseName TableName IndexFieldName Name Active
Dbtoko ../data/pelanggan.dbf KODEPLGN pelanggan true
6
DataSource1
Name DataSet
DSbarang barang
7
DataSource2
Name DataSet
DSagen agen
8
DataSource3
Name DataSet
DSpelanggan pelanggan
9
Query1
DatabaseName Name
dbtoko Qjual
10
Query2
DatabaseName Name
dbtoko Qbeli
11
Query3
DatabaseName Name
dbtoko Qlookup
12
DataSource4
Name DataSet
DSQjual Qjual
13
DataSource5
Name DataSet
DSQbeli Qbeli
14
DataSource6
Name DataSet
DSlookup lookup
63
3. Form Input Data Barang (Fbarang, barang.cpp, barang.h) Buka Form baru, dengan memilih menu File à New à Form. Lalu tambahkan dan atur setiap komponen dengan mengacu pada rancangan tabel yang telah dibuat, seperti pada tampilan berikut: Tab Data Controls
Tambahkan unit Modul (DM1) ke barang.cpp dengan sintak sebagai berikut:
No 1
Komponen Form1
Properti BorderStyle
64
Nilai bsNone
Caption Font Height Name Position Width FormStyle BorderIcons WindowStatae
Data Barang Verdana 10 400 Fbarang poMainFormCenter 590 fsMDIChild [biMaximize] wsMaximized
2
Panel1
Caption BorderStyle
(kosong) bsSingle
3
DBEdit1
DataSource DataField CharCase
DSbarang KODEBRG ecUpperCase
4
DBEdit2
DataSource DataField CharCase
DSbarang NAMABRG ecUpperCase
5
DBEdit3
DataSource DataField
DSbarang SATUAN
6
DBEdit4
DataSource DataField
DSbarang HJUAL
7
DBEdit5
DataSource DataField
DSbarang HBELI
8
DBEdit6
DataSource DataField
DSbarang GAMBAR
9
BitBtn1
Caption Glyph
Browse
10
OpenDialog1
DefaultExt Filter
*.bmp Bitmap Files|*.bmp|
65
JPEG Files|*.jpg 11
DBNavigator1
DataSource Show Hints
DSbarang true
Tampilan Filter di OpenDialog1
Klik ganda pada BitBtn1, isi sintaks sebagai beriku untuk melelatakkan alamat folder tempat gambar berada di DBEdit6:
66
Kemudian masukkan unit ini (barang.h) ke unit menu dengan menambahkan sintaks di unit menu.cpp sehingga form menu dapat memanggil form barang, seperti berikut:
Tips: - cara ini bisa juga dilakukan dengan memilih menu File à Include Unit Hdr (ALT + F11). - Tekan F12 untuk pindah antar unit. - Tekan Shift + F12 untuk melihat Form yang lain - Tekan Ctrl + F12 untuk melihat Unit source yang lain. Kemudian pada Form menu, klik pada menu Data Master à Barang, isikan sintak di bawah ini.
Tekan Alt+F9 untuk Compile, jika tidak ada error tekan F9 untuk menjalankan aplikasi, seperti tampilan berikut:
67
First, ke record yang pertama Previous (Prior), ke record sebelumnya Next, ke record berikutnya Last, ke record terakhir Insert, menambah record Delete, menghapus record Edit, mengedit record Post, konfirmasi Insert atau Edit Cancel, batal Insert atau Edit Refresh Data Untuk melakukan pencarian terhadap record, ada beberapa metode yang dapat digunakan, antara lain yaitu: - Menggunakan kolom kunci (index column). - Menggunakan perintah SQL Berikut adalah metode pencarian dengan menggunakna kolom kunci (index column)
68
Langkah-langkah: - Pastikan pada saat membuat tabel, sudah ditentukan kolom (field) kunci terlebih dahulu, seperti dijelaskan di bab 5. - Di di Data Module (DM1), pada komponen tabel barang, pastikan set properti IndexFieldName sudah terisi sesuai dengan kolom kunci yang telah ditentukan. - Kemudian pada kasus di atas, tambahkan komponen-komponen di form barang sehingga, seperti tampilan berikut:
Komponen yang ditambahkan: Komponen Edit1
BitBtn2
-
Properti CharCase Text
Nilai ecUpperCase (kosong)
Caption Default
Cari True
Klik ganda pada BitBtn2 (Cari) lalu isi sintak berikut:
69
-
Jalankan aplikasi (tekan F9), lalu coba ketikkan kode barang di Edit dan tekan tombol Cari. Jika data ditemukan maka akan langsung mengeset record ke kode yang dicari, jika tidak ketemu, maka akan mengeluarkan pesan “Data tidak ditemukan!”. Tampilan form saat dijalankan akan seperti berikut:
70
Tips: o o
Pelajari juga mengenai FindNearest, FindKey dan GotoNearest. Pelajari untuk mencari berdasarkan nama barang.
4. Form Input Data Agen (Fagen, agen.cpp, agen.h) Lakukan cara yang sama dengan point 3 (Data Barang). Tampilan desain:
Tampilan saat aplikasi dijalankan:
71
5. Form Input Data Pelanggan (Fpelanggan, pelanggan.cpp, pelanggan.h) Lakukan cara yang sama dengan point 3 (Data Barang). Tampilan desain:
72
Tampilan saat aplikasi dijalankan:
Pengenalan Perintah SQL Sebelum masuk ke pembuatan form transaksi dan seterusnya, akan dikenalkan apa dan bagaimana perintal SQL itu. Perintah SQL (Structured Query Language) adalah bahasa yang berbasis pada hubungan relasi kalkulus (relasi aljabar) dan banyak digunakan dalam lingkungan back end, baik untuk membuat tabel, manipulasi data, maupun untuk pengontrolan transaksi yang dilakukan di dlam database. Di dalam Borland C++ Builder 6, SQL dapat digunakan melalui komponen Query. Seara umum SQL dibagi ke dalam tiga kategori, yaiut Data Definition (DDL), Data Manipulation Language (DML) dan Data Control Language (DCL). SQL juga dilengkapi dengan kemampuan untuk melakukan fungsi-fungsi khusus lainnya seperti menghitung banyaknya record (count), melakukan penjumlahan nilai dari sebuah field (sum), menentukan nilai maksimum (max) dan sebagainya. Berikut adalah sintak SQL yang sering digunakan di dalam transaksi.
73
§
Insert, digunakan untuk memasukkan sebuah record baru ke dalam tabel. Contoh:
“ insert into barang values(‘ATK003’,’PENGHAPUS’,’Kodi’,1000,2000,’C:\’) ”
§
Update, digunakan untuk mengubah nilai-nilai field yang terdapat pada suatu tabel. Contoh: “Update barang set SATUAN = ‘Lusin’ where KODEBRG = ‘ATK003’ “ Perintah ini akan mengubah nilai SATUAN menjadi Lusin dari tabel barang yang memiliki KODEBRG = ATK003.
§
Select, digunakan untuk menampilkan field-field yang terdapat pada tabel dalam database. Bentuk Umum: “select field1,field2,field3,...,fieldn from nama_tabel” Contoh: “ select KODEBRG, NAMABRG, SATUAN from barang “ Peintah ini akan menampilkan field KODEBRG, NAMABRG dan SATUAN dari tabel barang. “ select * from barang” Perintah ini akan menampilkan seluruh field dari tabel barang, “ select * from barang where KODEBRG = ‘ATK001’ “ Perintah ini akan menampilkan seluruh field dari tabel barang dengan klausa (kondisi) KODEBRG = ATK001. “ select KODEBRG, NAMABRG, SATUAN from barang where HJUAL = 2000 and AND Hbeli = 3000 “ Perintah ini akan menampilkan field KODEBRG, NAMABRG dan SATUAN dari tabel barang yang mempunyai nilai HJUAL = 2000 dan HBELI = 3000. “ select * from barang where NAMABRG like ‘%PEN%’ “
74
Perintah ini akan menampilkan seluruh field dari tabel barang dengan nilai NAMABRG = ??????PEN?????, artinya seluruh NAMABRG yang mempunyai kata PEN. Tips: o o o o o
Perbanyak latihan dengan menggunakan perintah SQL. Pelajari juga mengenai perintah membuat dan menghapus tabel, menambah field. Pelajari mengenai penggabungan 2 tabel atau lebih. Pelajari mengenai berbagai macam klausa yang lain. Pelajari perintah fungsi0fungsi yang lain.
Setelah paham mengenai perintah SQL, lanjutkan dengan pembuatan form transaksi.
6. Form Transaksi Pembelian (Ft_beli, t_beli.cpp, t_beli.h) Tampilan desain awal:
Atur properti komponen sebagai berikut:
75
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width FormStyle BorderIcons WindowStatae
bsNone Transaksi Pembelian Verdana 10 400 Ft_beli poMainFormCenter 590 fsMDIChild [biMaximize] wsMaximized
Panel1
Caption BorderStyle
(kosong) bsSingle
Panel2
Caption BorderStyle
(kosong) bsSingle
ComboBox1 CharCase Items
Nilai
ecUpperCase
Arahan
Bulan
JANUARI FEBRUARI MARET . . . DESEMBER
Style Text
csDropDown BULAN
CSpinEdit1
MaxValue MinValue Value
3000 2000 2000
Tahun
Edit1
CharCase MaxLength Text
ecUpperCase 6 (kosong)
Kode Barang
Button1
Caption
List
Edit2
CharCase
ecUpperCase
76
Kode Agen
MaxLength Text
6 (kosong)
Button2
Caption
List
Edit3
Text
0 ReadOnly
Harga Beli true
CSpinEdit2
MaxValue MinValue Value
5000 0 0
Quantity
Edit4
Text
0 ReadOnly
Harga Beli true
Panel3
Caption BorderStyle
(kosong) bsSingle
BitBtn1 BitBtn2 BitBtn3
Caption Caption Caption
Simpan Update Hapus
Panel4
Caption BorderStyle
(kosong) bsSingle
ComboBox2 CharCase Items
CSpinEdit3
ecUpperCase
Bulan
JANUARI FEBRUARI MARET . . . DESEMBER
Style Text
csDropDown BULAN
MaxValue MinValue Value
3000 2000 2000
Tahun
77
Edit5
CharCase MaxLength Text
ecUpperCase 6 (kosong)
Cari Kode Barang
Edit6
CharCase MaxLength Text
ecUpperCase 6 (kosong)
Cari Kode Agen
BitBtn4 BitBtn5 DBGrid1
Caption Caption DataSource
Semua Kriteria Refresh DM1->DSQbeli Align
alClient
Pilih menu Event di Ft_beli, klik ganda pada event OnShow pada form Ft_beli untuk event FormShow, isi sintak sebagai berikut:
Tambahkan sintak berikut ini untuk mendefiniskan dua buah prosedur, yaitu:
78
-
-
EQbeli(), untuk mengeksekusi perintah SQL yang diberikan oleh str1. Perintah ini hanya akan berjalan dengan perintah SQL yang menggunakan perintah selain select. OQbeli(), untuk mengeksekusi perintah SQL yang diberikan oleh str2. Perintah ini hanya akan berjalan dengan perintah SQL yang menggunakan perintah select.
Tambahkan juga deklarasi prosedur di t_beli.h seperti tampilan berikut:
Deklarasikan variabel str1 dan str2 di kode t_beli.cpp paling atas (variabel bersifat global), seperti berikut:
Klik ganda pada Edit1 untuk event Edit1OnChange, artinya proses di prosedur ini akan berjalan pada saat nilai di dalam Edit1 berubah. Isi sintak sebagai berikut:
79
Sintak ini untuk memeriksa apakah kode barang yang ada di Edit1 ada di tabel barang. Jika ada maka akan menuliskan nama barang di Label6. Sama halnya untuk validasi kode agen, klik ganda di Edit2 untuk event OnChange, isi sintak di bawah ini:
80
Klik ganda di CSpinEdit2 untuk event OnChange. Prosedur ini adalah untuk menghitung jumlah harga dari pembelian. Isi sintak sebagai berikut:
Komponen Button1 dan Button2 (List) digunakan untuk melihat data barang dan agen. Cara membuat Form Flookup dan menghubungkannya dengan form transaksi dapat dilihat di point 8. Klik ganda di BitBtn1 (Simpan) untuk event OnClick. Prosedur ini untuk menyimpan data ke dalam record baru, dengan memvalidasi jika data telah ada, maka tidak akan disimpan ke data baru.
81
82
Kemudian, klik ganda pada BitBtn2 (Update) untuk event OnClick. Prosedur ini digunakan untuk mengupdate data yang telah ada, dengan mencari data tersebut terlebih dahulu. Acuan yang digunakan adalah ComboBox2, CSpinEdit3, Edit5, Edit6, CSpinEdit4 danCheckBox2. Isi sintak seperti di bawah ini:
83
Kemudian klik ganda di BitBtn3 (Hapus) untuk even OnClick. Prosedur ini digunakan untuk menghapus data berdasarkan klausa ada di ComboBox2, CSpinEdit3, Edit5, Edit6, CSpinEdit4 danCheckBox2. Isi sintak seperti di bawah ini:
84
Kemudian klik ganda di ComboBox2 untuk event OnChange. Prosedur ini untuk mencari data di tabel transaksi pembelian dengan klausa BULAN. Isi sintak di bawah ini:
85
Kemudian klik ganda di CSpinEdit3 untuk event OnChange. Prosedur ini untuk mencari data di tabel transaksi pembelian dengan klausa TAHUN. Isi sintak di bawah ini:
Kemudian klik ganda di Edit5 untuk event OnChange. Prosedur ini untuk mencari data di tabel transaksi pembelian dengan klausa KODEBRG. Isi sintak di bawah ini:
Kemudian klik ganda di Edit6 untuk event OnChange. Prosedur ini untuk mencari data di tabel transaksi pembelian dengan klausa KODEAGEN. Isi sintak di bawah ini:
86
Kemudian klik ganda di CSpinEdit4 untuk event OnChange. Prosedur ini untuk mencari data di tabel transaksi pembelian dengan klausa QTY. Isi sintak di bawah ini:
Kemudian klik ganda di CheckBox2 untuk event OnClick. Prosedur ini untuk mencari data di tabel transaksi pembelian dengan klausa LUNAS. Isi sintak di bawah ini:
87
Kemudian klik ganda di BitBtn4 (Semua Klausa) untuk event OnClick. Prosedur ini untuk mencari data di tabel transaksi pembelian dengan semua klausa di Panel4, jika ketemu akan menuliskan hasilny ake Panel2. Isi sintak di bawah ini:
88
89
Kemudian klik ganda di BitBtn5 (Refresh) untuk event OnClick. Prosedur ini untuk menampilkan seluruh data di tabel transaksi pembelian. Isi sintak di bawah ini:
Jika semuanya telah selesai, jalankan aplikasi. Jika tidak ada yang error, tampilan form akhir saat dieksekusi sebagai berikut:
90
Kemudian masukkan unit ini (t_beli.h) ke unit menu dengan menambahkan sintaks di unit menu.cpp sehingga form menu dapat memanggil form barang, seperti berikut:
Tips: - cara ini bisa juga dilakukan dengan memilih menu File à Include Unit Hdr (ALT + F11). - Tekan F12 untuk pindah antar unit. - Tekan Shift + F12 untuk melihat Form yang lain - Tekan Ctrl + F12 untuk melihat Unit source yang lain.
91
Kemudian pada Form menu, klik pada menu Transaksi à Pembelian, isikan sintak di bawah ini.
Tombol List digunakan untuk meliahat daftar barang, agen dan pelanggan yang ditampilkan dalam bentuk tabel di Grid. Tabel ini dibuat di form baru dengan nama Flookup . Cara pembuatan Form akan dijelaskan di nomor 8. 7. Form Transaksi Penjualan (Ft_jual, t_jual.cpp, t_jual.h) Dengan cara yang sama dengan point 6, Buatlah Form untuk transaksi penjualan. Tampilan desain form:
92
Tampilan akhir form saat dieksekusi:
8. Form Lookup Data Barang, Data Agen, Data Pelanggan (Flookup, lookup.cpp, lookup.h) Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width FormStyle BorderIcons
Nilai bsSingle Tabel Lookup Verdana 8 350 Flookup poScreenCenter 430 fsStayOnTop [biSystemMenu,biMinimize]
Panel1
Caption BorderStyle
(kosong) bsSingle
93
Arahan
Align ComboBox1 CharCase Items
DBGrid1
alTop ecUpperCase BARANG AGEN PELANGGAN
Style Text
csDropDown TABEL LOOKUP
DataSource Align
DM1->DSQlookup alClient
include modul first
Tampilan Desain awal:
Komponen ComboBox1 berfungsi untuk memilih tabel yang akan dilihat, yaitu tabel barang, agen dan pelanggan. Jika salah satu tabel dipilih, maka secara otimatis akan menampilkan data-data yang ada di tabel tersebut di Grid1. Klik ganda di komponen ComboBox1 untuk even OnChange. Isikan sintak di bawah ini:
94
Kemudian kenalkan (include) unit ini (lookup.h) ke unit transaksi pembelian (t_beli.h) dan unit penjualan (t_jual.h) agar unit ini dapat dipanggil dengan menggunakan tombol list. Kemudian klik ganda di setiap tombol list, baik itu di Form Pembelian maupun di Form Penjualan (unit lookup.h telah dikenalkan terlebih dahulu), lalu isi sintak di bawah ini:
9. Form Konfirmasi Rekap Bulanan Penjualan dan Pembelian (FKRek, krek.cpp, krek.h)
95
Sebelum membuat Report, terlebih dahulu buat Form untuk konfirmasinya, antara lain untuk konfirmasi bulan berapa, tahun berapa dan report apa yang akan ditampilkan. Untuk membuat Form Konfirmasi report, langkah pertama yaitu buat Form dan letakkan komponen-komponen baru dengan rincian sebagai berikut: Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width FormStyle BorderIcons
ComboBox1 CharCase Items
Style Text ComboBox2 CharCase Items
Nilai
Arahan
bsSingle Konfirmasi Report Verdana 10 200 FKRek poScreenCenter 300 fsNormal [biSystemMenu,biMinimize] ecUpperCase
Bulan
JANUARI FEBRUARI MARET . . . DESEMBER
csDropDown BULAN ecUpperCase
Rekap
PENJUALAN PEMBELIAN
Style Text
csDropDown REKAP
CSpinEdit1
MaxValue MinValue Value
3000 2000 2000
BitBtn1
Caption
Preview
Tahun
96
BitBtn2
Caption
Tutup
Tampilan desain awal:
Klik ganda di BitBtn2 (Tutup), isi sintak sebagai berikut:
Sebelum sintak di BitBtn1 (Preview) diisi, buatlah dulu Form untuk Reportnya terlebih dahulu. Kemudian Klik ganda di BitBtn1 (Preview), isi sintak di bawah ini:
97
98
Tambahkan unit Form Rekap Penjualan dan Pembelian di unit ini.
10. Form Report Rekap Bulanan Penjualan (FRekJual, RekJual.cpp, RekJual.h) Pada prinsipnya, sama dengan komponen-komponen standard, Komponenkomponen yang digunakan di report terdapat di Tab QReport.
Untuk membuat Form report, langkah pertama yaitu buat Form dan letakkan komponen-komponen baru dengan rincian sebagai berikut:
99
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width FormStyle BorderIcons AutoScroll
Nilai
Query1
Name QRJual DatabaseName DM1 : dbtoko SQL String SELECT D.NAMABRG, D1.NAMAPLGN,
Arahan
bsSingle Konfirmasi Report Verdana 10 480 FrekJual poScreenCenter 700 fsNormal [biSystemMenu,biMinimize] true
D2.BULAN, D2.TAHUN, D2.KODEPLGN, D2.KODEBRG, D2.QTY, D2.LUNAS FROM "..\Data\barang.DBF" D, "..\Data\pelanggan.DBF" D1, "..\Data\t_jual.DBF" D2 WHERE (D2.KODEPLGN = D1.KODEPLGN) AND (D2.KODEBRG = D.KODEBRG) ORDER BY D.NAMABRG, D1.NAMAPLGN, D2.BULAN, D2.TAHUN, D2.KODEPLGN, D2.KODEBRG, D2.QTY, D2.LUNAS
Active
true
DataSource1 Name DataSet
DSQRJual QRJual
QuickRep1
QRJual HasColumnHeader = true
Dataset Bands
HasDetail = true
HasPageFooter = true HasPageHeader = true HasSummary = true
100
tempat meletakkan nama kolom (field) tempat melatakkan record
Tampilan desain awal:
Sebelum menambahkan komponen lain, akan dijelaskan beberapa komponen yang sering di Qreport, yaitu: Nama Komponen QuickRep QRSubDetail QRStringsBand QRband QRChildBand QRGroup QRLabel QRDBText QRExpr QRSysData QRMemo
Deskripsi Induk awal dari Report
101
QRShape QRImage QRDBImage Kemudian tambahkan komponen-komponen QRLabel, QRDBText, QRExpr, dan QRShape sehingga tampilan seperti di bawah ini: Tampilan desain:
Tampilan setelah properti tiap kkomponen diisi dengan DataSource dan DataField yang sesuai:
102
Tampilan pada saat di Preview:
103
Tambahkan unit modul1 (DM1) di unit rekjual.cpp seperti di bawah ini:
11. Form Report Rekap Bulanan Pembelian (FRekBeli, RekBeli.cpp, RekBeli.h) Untuk pembuatan Form Report Pembelian, lakukan cara yang sama dengan Form Report Penjualan. 12. Form Password (Fpassword, password.cpp, password.h) Komponen Properti Form1 BorderStyle Caption Font Height Name Position Width FormStyle BorderIcons WindowStatae
Nilai Arahan bsNone Transaksi Pembelian Verdana 10 400 Ft_beli poMainFormCenter 590 fsMDIChild [biMaximize] wsMaximized
Panel1
Caption BorderStyle
(kosong) bsSingle
BitBtn1
Caption Default Caption
Login true Exit
BitBtn2
Tampilan desain:
104
Kemudian tambhakna unit menu di unit ini dengan sintak di bawah ini:
Klik ganda di BitBtn1 (Login), isi sintak di bawah ini:
105
Tambahkan sintak di bawah ini untuk event FpasswordShow:
Lalu pada unit Menu (Fmenu), tambahkan sintak di bawah ini pada event FmenuShow:
Tampilan hasil akhir aplikasi:
106
107
6. Aplikasi Database Menggunakan ADO – Microsoft Access Kasus : Sebuah perusahaan sewa mobil ingin membuat sistem pendataan sewa secara komputerisasi. Perusahaan mempunyai pelanggan tetap dan tidak tetap. Pelanggan harus membayar uang muka sebesar 10% dari total biaya sewa. Setiap ada penyewaan akan dicek terlebih dahulu status mobil apakah sudah dipesan atau sedang dipesan. Akan dibuat rekap harian dan bulanan dari data yang ada. Perancangan Database : Nama database : dbsewamobil. Dari kasus di atas dapat dibagi menjadi tiga bagian : 1. Data Master a. Data Mobil b. Data Pelanggan 2. Data Transaksi a. Data Sewa 3. Report a. Rekap Sewa Harian b. Rekap Sewa Bulanan Berdasarkan hal di atas maka rancangan tabelnya adalah sebagai berikut :
108
1. Data Master : Data Mobil (nama tabel : mobil) Index 0 1 2 3 4
Nama Field kodemobil jenismobil merkmobil tarif catatan
Type Text Text Text Number Text
Size 5 15 20 Long Integer 100
2. Data Master : Data Pelanggan (nama tabel : pelanggan) Index 0 1 2 3 4 5 6 7 8
Nama Field kodepelanggan namapelanggan kontak alamat kota kodepos telpon fax catatan
Type Text Text Text Text Text Text Text Text Text
Size 6 20 15 50 20 5 15 15 100
3. Data Transaksi : Data Transaksi Sewa (nama tabel : datasewa) Index 0 1 2 3 4 5 6 7 8 9
Nama Field nofaktur kodepelanggan tglsewa blnsewa thnsewa kodemobil lamasewa uangmuka biayasewa sisabayar
Type Text Text Text Text Text Text Number Number Number Number
109
Size 10 6 2 10 4 5 Long Integer Long Integer Long Integer Long Integer
10
catatan
Text
100
Setelah rancangan database dibuat, tentukan jenis format tabel yang dibuat (dalam hal ini menggunakan MS Access). Buat sebuah folder, tempat menyimpan program dan database Anda. Pembuatan Form Aplikasi Setelah semua tabel dibuat, buka aplikasi Boland C++ Builder 6, dengan menutup semua aplikasi yang berjalan terlebih dahulu (File à Close All). 1. Form Menu Utama (Fmenu, Umenu.cpp, Umenu.h) Form menu ini adalah form pertama pada saat membuka aplikasi. Klik File à New à Application, untuk setiap pembuatan aplikasi baru. Tambahkan komponen-komponen ke dalam form ini seperti terlihat pada tampilan berikut :
Klik ganda di toolbar Menu yang ada di Form, isi menu sesuai kebutuhan.
110
111
Setelah selesai, tutup isian Menu, kemudian pilih menu Exit, lalu isi sintak seperti di bawah ini :
Atur properti komponen seperti berikut : No
2
Komponen Form1
MainMenu1
Properti BorderStyle Caption Font Height Name Position Width FormStyle (Lihat gambar)
Nilai Single PT Never Give Up ……………… ……………… Fmenu poScreenCenter ……………. …………….
2. Data Modul (DM1, Umodul.cpp, Umodul.h) Untuk membuat Data Modul, klik File à New à Data Module. Karena kasus ini menggunakan MS Access, maka gunakan komponen-komponen pada tab ADO.
112
Atur properti komponen sebagai berikut : No 1
Komponen DataModule
Properti Name
2
ADOConnection
Name ConnectionString - Provider
Nilai DM1 koneksi
- Connection Login Prompt Connected
Microsoft Jet 4.0 OLE DB Provider dbsewamobil.mdb false true
3
ADOTable1
Name Connection TableName IndexFieldName Active
mobil koneksi mobil kodemobil true
4
ADOTable2
Name Connection TableName IndexFieldName
pelanggan koneksi pelanggan kodepelanggan
113
Active
true
5
DataSource1
Name DataSet
DSmobil mobil
6
DataSource2
Name DataSet
DSpelanggan pelanggan
7
ADOQuery1
Name Connection
Qcari koneksi
8
ADOQuery2
Name Connection
Qsewa koneksi
9
DataSource3
Name DataSet
DSdatasewa Qsewa
10
ADOQuery3
Name Connection
Qvalidasi koneksi
3. Form Entry Data Mobil (Fmobil, Umobil.cpp, Umobil.h) Buka fom baru, dengan memilih File à New à Form. Gunakan komponen pada tab Data Controls. Atur tampilan seperti berikut :
114
Tambahkan unit modul (DM1) ke Umobil.cpp dengan sintak sebagai berikut :
115
No 1
Komponen Form1
Properti BoderStyle Caption Font Height Name Position Width FormStyle BorderIcons WindowState
………… Entry Data Mobil ………… ………… Fmobil ………… ………… ………… ………… …………
2
Panel1
Caption BorderStyle
(kosong) …………
3
DBEdit1
DataSource DataField CharCase
DSmobil kodemobil ecUppercase
4
DBEdit2
DataSource DataField CharCase
DSmobil jenismobill ecUppercase
5
DBEdit3
DataSource DataField CharCase
DSmobil merkmobil ecUpperCase
6
DBEdit4
DataSource DataField
DSmobil tarifsewa
7
DBEdit5
DataSource DataField
DSmobil catatan
8
DBNavigator1
DataSource ShowHint
DSmobil true
116
Nilai
9
DBGrid1
DataSource Column
10
Edit1
CharCase
DSmobil Klik kanan pada jendela EditingDBGrid1-->Add All Fields. Klik pada Field yang ingin dirubah, pada Object Inspector klik Title, Ubah Captionnya. Alignment -> taCenter ecUpperCase
11
Button1
Caption Default
Cari True
12
Button2
Caption
Refresh
Klik ganda pada Button1 (Cari), isi sintaks sebagai berikut :
117
Klik Button2 (Refresh), isi sintaks berikut :
Kemudian masukkan unit ini (Umobil.h) ke unit menu dengan menambahkan sintaks di unit Umenu.cpp sehinggan form menu dapat memanggil form mobil, seperti berikut :
Kemudian pada Form menu, klik menu Master à Mobil, isikan sintaks berikut :
Agar field entry pada form Mobil kosong ketika form tersebut ditampilkan, dan kursor berada di field Kode Mobil, klik Fmobil, pilih tab Event pada Object Inspector, kemudian klik ganda OnShow, ketikkan sintaks di bawah ini :
118
Sintaks SetFocus(); digunakan untuk meletakkan posisi kursor komponen yang dimaksud.
pada
Setelah selesai, Compile program dengan menekan Alt+F9, bila tidak ada error jalankan program dengan menekan F9. Tampilannya akan seperti gambar di bawah ini :
119
Coba isikan kode mobil pada Edit lalu klik Cari, jika data ditemukan maka field-field akan langsung berisi data yang dicari sesuai dengan kode yang diketikkan, begitu juga pada DBGrid akan menampilkan record yang dimaksud.
120
Bila data yang dimaksud tidak ditemukan maka field-field akan kosong, begitu juga DBGrid.
4. Form Entry Data Pelanggan (Fpelanggan, Upelanggan.cpp, Upelanggan.h) Lakukan cara yang sama seperti membuat form Mobil di atas. Tampilan Desain :
121
Tampilan saat form dijalankan :
122
5. Form Transaksi Sewa (Fsewa, Utransaksisewa.cpp, Utransaksisewa.h) Tampilan desain :
Atur properti komponen sebagai berikut : No 1
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width
123
Nilai ………………… ………………… ………………… ………………… Fsewa ………………… …………………
FormStyle BorderIcons WindowState
………………… ………………… …………………
2
Panel
Caption BorderStyle
(Kosong) bsSingle
3
Edit1
CharCase MaxLength Text
ecUpperCase 6 (kosong)
4
Edit2
CharCase MaxLength Text
ecUpperCase 5 (kosong)
5
CSpinEdit1
Increment MaxValue MinValue Value
1 31 1 1
6
ComboBox1
CharCase Items
Text
ecUpperCase JANUARI FEBRUARI . . DESEMBER BULAN
7
CSpinEdit2
Increment MaxValue MinValue Value
1 3000 2006 2006
8
Edit3
CharCase MaxLength
ecUpperCase 4
124
Text
(kosong)
9
Edit4
Text ReadOnly
(kosong) True
10
Edit5
Text ReadOnly
(kosong) True
11
Edit6
Text ReadOnly
(kosong) True
12
Edit7
Text
(kosong)
13
Edit8
Text ReadOnly
(kosong) True
14
Edit9
Text ReadOnly
(kosong) True
15
Edit10
Text ReadOnly
(kosong) True
16
Edit11
Text
(kosong)
17
Button1
Caption
Hitung
18
Button2
Caption
Simpan
19
Button3
Caption
Update
20
Button4
Caption
Hapus
21
Button5
Caption
Cari
22
DBGrid1
DataSource
DM1->datasewa
125
(atur juga tampilan judul field/kolom seperti DBGrid diatas) 23 24 25
Button6 Button7 Label18
Caption Caption Caption
Refresh Data Sewa Refresh Form Label18
Pilih menu Events di Fsewa, klik ganda pada event OnShow pada form Fsewa, isi sintaks berikut ini (sesuaikan field Edit dengan program Anda):
126
Untuk menampilkan nama pelanggan pada Label18 ketika Anda mengetikkan kode pelanggan pada Edit2, Klik ganda Edit2, isi sintaks berikut :
127
Untuk menampilkan Jenis, Merk, dan Tarif Sewa mobil begitu Anda mengetikkan Kode Mobil, isikan sintaks berikut pada Edit6 (sesuaikan dengan Edit Anda) :
128
Untuk melakukan proses perhitungan biaya sewa, uang muka dan sisa bayar, klik ganda button1 (Hitung), ketikkan sintaks berikut :
Untuk proses penyimpanan, klik ganda button2 (Simpan), ketikkan sintaks berikut :
129
130
Untuk meng-Update data yang telah ada, ketikkan sintaks berikut pada Button3 (Update) :
Untuk proses penghapusan data di tabel database, ketikkan sintaks berikut pada Button4 (Hapus) :
131
Sebelum melakukan proses Update dan Hapus sebaiknya ada proses pencarian terlebih dahulu data yang akan di-update atau dihapus. Klik ganda Button5 (Cari) ketikkan sintaks berikut untuk proses pencarian dan menampilkan hasil dari pencarian tersebut :
132
133
Setelah proses pencarian dilakukan DBGrid hanya akan menampilkan record yang dicari. Agar DBGrid menampilkan kembali data-data di tabel ketikkan sintaks berikut pada Button6 (Refresh Data Sewa) :
Untuk mengosongkan kembali field-field pada form, ketiik sintaks berikut pada Button7 (Refresh Form) :
134
Masukkan unit ini (Utransaksisewa.h) ke unit menu. Tampilan form setelah dijalankan :
135
6. Form View Sewa (Fviewsewa, Uviewsewa.cpp, Uviewsewa.h) Form ini digunakan untuk menampilkan data sewa, mobil yang telah dipesan / sedang disewa, sehingga diketahui ketersediaan mobil yang akan disewa. Tampilan desain :
Atur properti komponen sebagai berikut : No 1
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width FormStyle BorderIcons
136
Nilai ………………. ………………. ………………. ………………. Fviewsewa ………………. ………………. ………………. ……………….
WindowState
……………….
2
ComboBox1
Text
Tanggal
3
ComboBox2
Items
Text
JANUARI .. .. DESEMBER Bulan
4
CSpinEdit1
Increment MaxValue MinValue Value
1 3000 2006 2006
5
ComboBox3
Text
Kode Mobil
6
Label4
Caption
Label4
7
Label6
Caption
Label6
8
DBGrid1
DataSource
DM1->DSdatasewa
137
Pada event form OnShow ketik sintaks berikut :
Pencarian berdasarkan perubahan pada ComboBox3. Ketikkan sintaks berikut pada ComboBox3Change :
138
Kemudian masukkan unit ini (Uviewsewa.h) ke unit menu.
139
7. Form Konfirmasi Report Harian (FKReportHarian, UFKReportHarian.cpp, UFKReportHarian.cpp) Sebelum membuat report, terlebih dahulu buat Form Konfirmasi report untuk tanggal, bulan dan tahun berapa. Tampilan desain :
Atur properti sebagai berikut : No 1
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width
Nilai ………………. Konfirmasi Report Harian ………………. ………………. FKReportHarian poScreenCenter ……………….
2
ComboBox1
Items
1 2 … 31
140
3
ComboBox2
Text
Tanggal
Items
Text
JANUARI … DESEMBER Bulan
4
CSpinEdit1
Increment MinValue MaxValue Value
1 2006 3000 2006
5
Button1
Caption
Tampilkan
6
Button2
Caption
Tutup
Klik ganda button2 (Tutup), isi sintak berikut :
Langkah berikut adalah membuat Form Reportnya. Setelah Form Report Harian dibuat klik ganda button1 (Tampilkan), isi sintaks berikut :
141
Kemudian include-kan unit UReportHarian ke unit ini.
142
8. Form Report Harian (FReportHarian, UReportHarian.cpp, UReportHarian.h) Buat sebuah Form baru, kemudian gunakan komponen-komponen yang ada di tab QReport.
Atur properti komponen sebagai berikut : No 1
Komponen Form1
Properti BorderStyle Caption Font Height Name Position Width AutoScroll
Nilai ……………… Report Harian ……………… ……………… FReportHarian poScreenCenter ……………… true
2
ADOQuery
Connection Name SQL String
DM1->koneksi QRHarian
Active
true
Name
DSQReportHarian
3
DataSource1
143
SELECT datasewa.nofaktur, pelanggan.namapelanggan, datasewa.tglsewa, datasewa.blnsewa, datasewa.thnsewa, mobil.jenismobil, mobil.merkmobil, datasewa.lamasewa, datasewa.uangmuka, datasewa.biayasewa, datasewa.sisabayar FROM (mobil INNER JOIN datasewa ON mobil.kodemobil = datasewa.kodemobil) INNER JOIN pelanggan ON datasewa.kodepelanggan = pelanggan.kodepelanggan;
4
QuickRep1
Dataset
QRHarian
DataSet Bands
QRHarian HasColumnHeader = true HasDetail = true HasPageFooter = true HasPageHeader = true HasSumarry = true
Kemudian tambahkan komponen QRLabel, QRDBText, QRExpr, QRSysData dan QRShape. Kemudian tentukan DataSet dan DataField untuk setiap QRDBText. Tentukan jumlah total penerimaan uang muka untuk tanggal tersebut dengan menggunakan QRExpr, dengan menggunakan fungsi SUM, dan field yang diambil adalah uangmuka. Setelah semua selesai tampilan form akan seperti berikut ini :
144
Tampilan pada saat preview :
Tambahkan unit modul (Umodul.h) ke unit ini.
145
9. Form Konfirmasi Report Bulanan UFKReportBulanan.cpp, UFKReportBulanan.h)
(FKReportBulanan,
Lakukan cara yang sama dengan point 7 (Form Konfirmasi Report Harian). Tampilan desain :
Tampilan saat form dijalankan :
146
10. Form Report Bulanan (FReportBulanan, UReportBulanan.cpp, UReportBulanan.h) Lakukan cara yang sama dengan point 8 (Report Harian). Tampilan desain :
Tampilan saat form dijalankan :
147
148
Referensi Al-Qur’an & Al-Hadits. Heriyanto, Imam, Budi Raharjo (2003). Pemrograman Borland C++ Builder. Informatika Bandung.. Indrajit, Richardus Eko. Manajemen Sistem Informasi dan Teknologi Informasi. Indrajit, Richardus Eko. Kajian Strategis Analisa Cost-Benefit Investasi Teknologi Informasi. Lidya, Leoni, rinaldi Munir (2002). Algoritama dan Pemrograman dalam Bahas Pascal dan C. Informatika Bandung. Solichin, Achmad (2003). Pemrograman Bahasa C dengan Turbo C. IlmuKomputer.Com. Wahono, Romi Satria(2003). Cepat MahirBahasa. IlmuKomputer.Com.
149
Riwayat Hidup
Muhammad Fachrurrozi dilahirkan di Palembang, 22 Mei1980. Saat ini mengabdikan dirinya untuk sebuah lembaga pendidikan yaitu Program Diploma Komputer Universitas Sriwijaya di Palembang sebagai Tenaga Laboran dan Staff Pengajar. Menyelesaikan studi sarjananya di Jurusan Matematika Fakultas MIPA Universitas Sriwijaya Desember 2002. Memulai debutnya di bidang komputer pada usia 11 tahun, dengan berbagai pengalaman selama mendalami dan memahani komputer baik dari sisi hardware maupun software. Saat duduk di bangku kuliah semester 3, ia telah dipercaya untuk menjadi salah satu asisten laboratorium komputer di jurusannya di bidang pemrograman. Saat waktu di bangku kuliah juga ia telah ditempa berbagai pengalaman dalam bidang teknologi informasi, yaitu pada tahun 2001 dan 2002 dipercaya sebagai asissten dan instruktur untuk Pelatihan Internet dan Database untuk pegawai Pendidikan Nasional se-Sumsel. Sejak setelah menamatkan kuliahnya ia mengabdikan diri di Program Diploma Komputer Universitas Sriwijaya. Sehari-hari dapat dihubungi melalui email [email protected] .
150