KONSEP DAN APLIKASI
PEMROGRAMAN MENGGUNAKAN
BORLAND C++ BUILDER 6
BAGIAN 2:
APLIKASI VISUAL DATABASE
DENGAN ADO.NET
(M S AC C ESS & M S SQL SERVE R 20 00)
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. PENDAHULUAN2. 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
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.
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, Juni 2005
1. Pendahuluan
Situasi persaingan bidang teknologi informasi membuat semua kalangan berlomba-lomba 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
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
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.
P E R B E D A A N P E M R O G R A M A N V I S U A L D E N G A N P E M R O G R A M A N T E R S T R U K T U R
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.
Input
Process
Output
event execute
yes
no
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.
Prosedur A Prosedur B Prosedur C Prosedur D
Unit
Unit 1 Unit 2 Unit 3 Unit 4Project
Dari gambar di atas, dapat dijelskan bahwa setiap prosedur atau fungsi yang terdapat di dalam unit, dapat saling bebas mengekspresikan pernyataan di dalam tubuhnya masing-masing, 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.
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.
A P L I K A S I S E D E R H A N M E N G U N A K A N B O R L A N D C + + B U I L D E R 6
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
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,
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:
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.
#include <vcl.h> #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
source / header file. Adapun kerangka dari file ini dapat dilihat pada listing di bawah ini. //--- #ifndef Unit1H #define Unit1H //--- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--- 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 <vcl.h>
#pragma hdrstop #include "Unit1.h"
#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. B O R L A N D C + + B U I L D E R 6 B A G I P R O G R A M M E R 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.
V C L ( V I S U A L C O M P O N E N T L I B R A R Y )
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.
- 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 Komponen Nama Default Name Posisi Tab Fungsi Dasar Komponen Sejenis
Button Button1 Standard Proses/event BitBtn, SpeedButton Edit Edit1 Standard Input/output berupa teks MaskEdit, LabeledEdit, DBEdit ListBox ListBox1 Standard Input/output berupa pilihan DBListBox, DBLookupListBox ComboBox ComboBox1 Standard Input berupa pilihan DBComboBox, DBLookupComboBox
Memo Memo1 Standard
Input/output dengan length yang lebih panjang
DBMemo Label Label1 Standard Teks tetap, output DBLabel CheckBox CheckBox1 Standard Input dengan nilai True or
False
DBCheckBox RadioButton RadioButton1 Standard Input berupa pilihan RadioGroup, DBRadioGroup
GroupBox GroupBox1 Standard Group beberapa komponen
Panel
Panel Panel1 Standard Group beberapa komponen
GroupBox Image Image1 Additional Memasukkan gambar DBImage Shape Shape1 Additional
Membuat bentuk gambar bulat,
lingkaran dll
Timer Timer1 System
Proses perulangan
mili detik MainMenu MainMenu1 Standard Membuat menu aplikasi
UpDown UpDown1 Win32
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 Komponen Properti Nilai
1 Form1 BorderStyle Single
Caption Aplikasi Segitiga
Font Verdana 10
Height 300
Name FUtama
Position poScreenCenter
Width 300
2 Label1 Caption Mencari Luas Segitiga
Font Verdana 12 Bold
3 Label2 Caption Luas Alas
4 Label3 Caption Tinggi
5 Label4 Caption Luas
6 Button1 Caption Hitung
7 Edit1 MaxLength 5
8 Edit2 MaxLength 5
9 Edit3 ReadOnly true
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:
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:
Isi dengan sintak sebagai berikut:
Artinya, Text di Edit1, Edit2 dan Edit3 akan dihapus (dikosongkan). Sintak-sintak 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.
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:
Seluruh source program di utama.cpp adalah sebagai berikut: //--- #include <vcl.h> #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) {
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 <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--- class TFUtama : public TForm
{
__published: // IDE-managed Components TLabel *Label1; TLabel *Label2; TLabel *Label3; TLabel *Label4; TButton *Button1; TEdit *Edit1; TEdit *Edit2;
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:
No Komponen Properti Nilai
1 Form1 BorderStyle Single
Caption Login Font Verdana 12 Height 250 Name FUtama Position poScreenCenter Width 400 2 Edit1 MaxLength 20 3 Edit2 MaxLength 20 PasswordChar #
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:
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 <vcl.h>
#pragma hdrstop #include "password1.h"
#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
#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp>
//--- 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:
4. Atur properti komponen sebagai berikut
No Komponen Properti Nilai
1 Form1 BorderStyle Single
Caption Total Biaya Pembelian
Font Verdana 12
Height 300
Name FUtama
Position poScreenCenter
Width 400
2 Panel1 Caption (kosong)
BorderStyle Single
Height&Width Sesuaikan dengan tampilan
2 Edit1 MaxLength 20
3 Edit2 MaxLength 10
Text 0
4 Edit3 ReadOnly true
6 CSpinEdit Increment 50
(Tab Sample) Max Value 1000000
TabOrder 1
7 UpDown1 Associate Edit2
Increment 1
Max 200
8 BitBtn1 Caption Mulai
Glyph Browse (*.bmp), biasanya ada
di C:\Program
Files\Common Files\Borland Shared\Images\Buttons
9 BitBtn2 Caption Selesai
Glyph 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:
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:
Isi sintak secara keseluruhan di utama.cpp //--- #include <vcl.h> #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;
}
//--- 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 <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Buttons.hpp>
#include <ComCtrls.hpp> #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).
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 Komponen Properti Nilai
1 Form1 BorderStyle Single
Font Verdana 12
Height 420
Name FUtama
Position poScreenCenter
Width 400
2 Panel1 Caption (kosong)
BorderStyle Single
Height&Width Sesuaikan dengan tampilan
3 ComboBox1 MaxLength 20
CharCase ecUpperCase
Text NAMA BARANG
Items PENA
PENSIL PENGHAPUS
4 Edit1 ReadOnly true
Text 0
5 CSpinEdit Increment 1
(Tab Sample) Max Value 100
6 RadioGroup1 Caption Langganan?
Columns 2
Items Ya
Tidak
7 CheckBox1 Caption Lunas
State cbChecked
8 Edit2 Text 0
ReadOnly true
9 Edit3 Text 0
10 Edit4 Text 0
ReadOnly true
11 BitBtn1 Caption Hitung
Glyph Browse (*.bmp), biasanya ada
di C:\Program
Files\Common Files\Borland Shared\Images\Buttons
12 BitBtn2 Caption Keluar
Glyph 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:
8. Klik ganda di BitBtn2 (Keluar) untuk event BitBtn2Click, isi sintak sebagai berikut:
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 <vcl.h>
#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::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 */
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(); }
K O N S E P T I M E R
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 Komponen Properti Nilai
Font Verdana 22 Height 200 Name FUtama Position poScreenCenter Width 300 2 Timer1 Interval 1000
3 Label1 Alignment taCenter
Autosize 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:
4. Konsep Dasar
Perancangan Database
Sebelum merancang sebuah aplikasi database, haruslah dipahami dulu apa itu database, bagaimana konsep database dan bagaiman merancang sebuah database.
A P A I T U D A T A B A S E
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.
T I P S P E R A N C A N G A N D A T A B A S E
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:
Tabel
Query
Tabel Tabel Tabel
Query
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)
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 Nama Field Type Size Default Allow NULL Unique Primary Arahan
0 kodebrg Char 6 No Yes Yes Kode Barang
1 namabrg Char 50 No No No Nama Barang
4 satuan Char 20 Yes No No Satuan Ukuran
5 hjual Number 10 0 Yes No No Harga Jual
6 hbeli Number 10 0 Yes No No Harga Beli
7 gambar Char 50 Yes No No 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 Nama Field Type Size Default Allow NULL Unique Primary Arahan
0 kodeagen Char 6 No Yes Yes Kode Agen
1 namagen Char 50 No No No Nama Agen
2 alamat Char 50 Yes No No Alamat Agen
3 telepon Char 25 Yes No No Nomor Telepon
3. Data Master : Data Pelanggan (nama tabel : pelangan)
Index Nama Field Type Size Default Allow NULL Unique Primary Arahan
0 kodeplgn Char 6 No Yes Yes Kode Pelanggan
1 namaplgn Char 50 No No No Nama Pelanggan
2 alamat Char 50 Yes No No Alamat Pelanggan
3 telepon Char 25 Yes No No Nomor Telepon
4. Data Transaksi : Data Penjualan Bulanan (nama tabel : t_jual)
1 tahun Char 4 No Tahun Pembelian
2 kodeplgn Char 6 No Kode Agen dari tabel pelanggan 3 kodebrg Char 6 No Kode Barang dari tabel barang 4 qty Number 4 0 No Jumlah Pembelian
5 lunas Logical Yes Status Pelunasan True atau False
5. Data Transaksi : Data Pembelian Bulanan (nama tabel : t_beli)
Index Nama Field Type Size Default Allow NULL Arahan Keterangan
0 bulan Char 10 No Bulan Pembelian
1 tahun Char 4 No Tahun Pembelian
2 kodeagen Char 6 No Kode Pelanggan dari tabel agen 3 kodebrg Char 6 No Kode Barang dari tabel barang
4 qty Number 4 0 No Jumlah Pembelian
5 lunas Logical Yes Status Pelunasan True atau False
6. Data Report : Rekap Penjualan Bulanan (nama tabel : q_jual)
Index Nama Field Type Size Arahan Keterangan
0 bulan Char 10 Bulan Pembelian dari tabel t_jual 1 tahun Char 4 Tahun Pembelian dari tabel t_jual 2 kodeplgn Char 6 Kode Pelanggan dari tabel t_jual 3 namaplgn Char 50 Nama Pelanggan dari tabel pelanggan 4 kodebrg Char 6 Kode Barang dari tabel t_jual 5 namabrg Char 50 Nama Barang dari tabel barang 6 satuan Char 20 Satuan Ukuran dari tabel barang 7 hjual Number 10 Harga Satuan dari tabel barang 8 qty Number 3 Jumlah Pembelian dari tabel t_jual 9 lunas Logical Status Pelunasan dari tabel t_jual
7. Data Report : Rekap Pembelian Bulanan (nama tabel : q_beli)
Index Nama Field Type Size Arahan Keterangan
0 bulan Char 10 Bulan Pembelian dari tabel t_beli 1 tahun Char 4 Tahun Pembelian dari tabel t_beli 2 kodeagen Char 6 Kode Pelanggan dari tabel t_beli 3 namagen Char 50 Nama Pelanggan dari tabel agen
4 kodebrg Char 6 Kode Barang dari tabel t_jual 5 namabrg Char 50 Nama Barang dari tabel barang 8 satuan Char 20 Satuan Ukuran dari tabel barang 9 hbeli Number 9 Harga Satuan dari tabel barang 11 qty Number 3 Jumlah Pembelian dari tabel t_beli 12 lunas Logical Status Pelunasan dari tabel 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.
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.
M E N G G U N A K A N D A T A B A S E D E S K T O 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:
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
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:
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:
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.
6. Aplikasi Database
Sederhana Menggunakan
Borland Database Engine
(BDE)
M E M B U A T A P L I K A S I D A T A B A S E S E D E R H A N A
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 Arahan Nama Form *.cpp *.h
1 Menu Utama Fmenu menu.cpp menu.h
2 Data Modul untuk database DM1 modul1.cpp modul1.h
3 Input Data Barang Fbarang barang.cpp barang.h
4 Input Data Agen Fagen agen.cpp agen.h
5 Input Data Pelanggan Fpelanggan pelanggan.cpp pelanggan.h
6 Transaksi Penjualan Ft_jual t_jual.cpp t_jual.h
7 Transaksi Pembelian Ft_beli t_beli.cpp t_beli.h
8 Lookup Data Barang, Data Agen,
Data Pelanggan Flookup lookup.cpp lookup.h
9 Konfirmasi Rekap Bulanan Penjualan
dan Pembelian FKRek krek.cpp krek.h
10 Report Rekap Bulanan Penjualan FRekJual RekJual.cpp RekJual.h 11 Report Rekap Bulanan Pembelian FRekBeli RekBeli.cpp RekBeli.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:
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:
Klik ganda di toolbar Menu yang ada di Form, isi menu sesuai kebutuhan ditambahkan dengan menu Help yang isinya ada pilihan Exit:
Setelah selesai, tutup isian Menu, kemudian pilih menu Exit, lalu isi sintak seperti di bawah ini:
Atur properti komponen seperti dalam tabel berikut:
No Komponen Properti Nilai
1 Form1 BorderStyle Single
Caption Toko Maya
Font Verdana 10
Height 450
Position poScreenCenter
Width 600
FormStyle fsMDIForm
2 MainMenu1 (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 Komponen Properti Nilai
1 DataModule1 Name DM1
2 Database1 DatabaseName dbtoko
Name dbtoko
3 Tabel1 DatabaseName dbtoko
TableName ../data/barang.dbf IndexFieldName KODEBRG
Name barang
Active true
4 Tabel2 DatabaseName dbtoko
TableName ../data/agen.dbf IndexFieldName KODEAGEN
Name agen
Active true
5 Tabel3 DatabaseName Dbtoko
TableName ../data/pelanggan.dbf IndexFieldName KODEPLGN
Name pelanggan
Active true
6 DataSource1 Name DSbarang
DataSet barang
7 DataSource2 Name DSagen
DataSet agen
8 DataSource3 Name DSpelanggan
DataSet pelanggan
9 Query1 DatabaseName dbtoko
Name Qjual
10 Query2 DatabaseName dbtoko
Name Qbeli
11 Query3 DatabaseName dbtoko
Name Qlookup
12 DataSource4 Name DSQjual
DataSet Qjual
13 DataSource5 Name DSQbeli
DataSet Qbeli
14 DataSource6 Name DSlookup
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:
Caption Data Barang Font Verdana 10 Height 400 Name Fbarang Position poMainFormCenter Width 590 FormStyle fsMDIChild BorderIcons [biMaximize] WindowStatae wsMaximized
2 Panel1 Caption (kosong)
BorderStyle bsSingle
3 DBEdit1 DataSource DSbarang
DataField KODEBRG
CharCase ecUpperCase
4 DBEdit2 DataSource DSbarang
DataField NAMABRG
CharCase ecUpperCase
5 DBEdit3 DataSource DSbarang
DataField SATUAN
6 DBEdit4 DataSource DSbarang
DataField HJUAL
7 DBEdit5 DataSource DSbarang
DataField HBELI
8 DBEdit6 DataSource DSbarang
DataField GAMBAR
9 BitBtn1 Caption Browse
Glyph
10 OpenDialog1 DefaultExt *.bmp
JPEG Files|*.jpg
11 DBNavigator1 DataSource DSbarang
Show Hints true
Tampilan Filter di OpenDialog1
Klik ganda pada BitBtn1, isi sintaks sebagai beriku untuk melelatakkan alamat folder tempat gambar berada di DBEdit6:
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:
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
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 Properti Nilai
Edit1 CharCase ecUpperCase
Text (kosong)
BitBtn2 Caption Cari
Default True
- 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:
Tips:
o Pelajari juga mengenai FindNearest, FindKey dan GotoNearest. o 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:
5. Form Input Data Pelanggan (Fpelanggan, pelanggan.cpp, pelanggan.h) Lakukan cara yang sama dengan point 3 (Data Barang).
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.
§ 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.
Perintah ini akan menampilkan seluruh field dari tabel barang dengan nilai NAMABRG = ??????PEN?????, artinya seluruh NAMABRG yang mempunyai kata PEN.
Tips:
o Perbanyak latihan dengan menggunakan perintah SQL.
o Pelajari juga mengenai perintah membuat dan menghapus tabel, menambah field.
o Pelajari mengenai penggabungan 2 tabel atau lebih. o Pelajari mengenai berbagai macam klausa yang lain. o 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:
Komponen Properti Nilai Arahan
Form1 BorderStyle bsNone
Caption Transaksi Pembelian
Font Verdana 10 Height 400 Name Ft_beli Position poMainFormCenter Width 590 FormStyle fsMDIChild BorderIcons [biMaximize] WindowStatae wsMaximized
Panel1 Caption (kosong)
BorderStyle bsSingle
Panel2 Caption (kosong)
BorderStyle bsSingle
ComboBox1 CharCase ecUpperCase Bulan
Items JANUARI FEBRUARI MARET . . . DESEMBER Style csDropDown Text BULAN
CSpinEdit1 MaxValue 3000 Tahun
MinValue 2000
Value 2000
Edit1 CharCase ecUpperCase Kode Barang
MaxLength 6
Text (kosong)
MaxLength 6
Text (kosong)
Button2 Caption List
Edit3 Text 0 Harga Beli
ReadOnly true
CSpinEdit2 MaxValue 5000 Quantity
MinValue 0
Value 0
Edit4 Text 0 Harga Beli
ReadOnly true
Panel3 Caption (kosong)
BorderStyle bsSingle
BitBtn1 Caption Simpan
BitBtn2 Caption Update
BitBtn3 Caption Hapus
Panel4 Caption (kosong)
BorderStyle bsSingle
ComboBox2 CharCase ecUpperCase Bulan
Items JANUARI FEBRUARI MARET . . . DESEMBER Style csDropDown Text BULAN
CSpinEdit3 MaxValue 3000 Tahun
MinValue 2000
Edit5 CharCase ecUpperCase Cari Kode Barang MaxLength 6
Text (kosong)
Edit6 CharCase ecUpperCase Cari Kode Agen
MaxLength 6
Text (kosong)
BitBtn4 Caption Semua Kriteria
BitBtn5 Caption Refresh
DBGrid1 DataSource 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:
- 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:
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:
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.
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:
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:
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:
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:
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:
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:
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:
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.
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:
Tampilan akhir form saat dieksekusi:
8. Form Lookup Data Barang, Data Agen, Data Pelanggan (Flookup, lookup.cpp, lookup.h)
Komponen Properti Nilai Arahan
Form1 BorderStyle bsSingle Caption Tabel Lookup
Font Verdana 8 Height 350 Name Flookup Position poScreenCenter Width 430 FormStyle fsStayOnTop BorderIcons [biSystemMenu,biMinimize]
Panel1 Caption (kosong)
Align alTop
ComboBox1 CharCase ecUpperCase
Items BARANG
AGEN PELANGGAN
Style csDropDown
Text TABEL LOOKUP
DBGrid1 DataSource DM1->DSQlookup include modul first
Align alClient
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:
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:
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 Properti Nilai Arahan
Form1 BorderStyle bsSingle
Caption Konfirmasi Report
Font Verdana 10 Height 200 Name FKRek Position poScreenCenter Width 300 FormStyle fsNormal BorderIcons [biSystemMenu,biMinimize]
ComboBox1 CharCase ecUpperCase Bulan
Items JANUARI FEBRUARI MARET . . . DESEMBER Style csDropDown Text BULAN
ComboBox2 CharCase ecUpperCase Rekap
Items PENJUALAN
PEMBELIAN
Style csDropDown
Text REKAP
CSpinEdit1 MaxValue 3000 Tahun
MinValue 2000
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.
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, Komponen-komponen 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: