diktat visual

40
DIKTAT KULIAH PEMOGRAMAN VISUAL Dibuat oleh : Rachmat Selamet, S. Kom Sekolah Tinggi Manajemen Informatika & Komputer LIKMI 2004

Upload: theofanuslucky

Post on 24-Jul-2015

135 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Diktat Visual

DIK TAT K ULIAH

PEMOGRAMAN VISUAL

Dibuat o leh : Rac hm at Se lam et , S. K om

Sekolah Tinggi Manajemen Informatika & Komputer LIKMI 2004

Page 2: Diktat Visual

Daftar isi

Kemungkinan materi kuliah yang akan diajarkan Pertemuan kuliah Materi yang diajarkan Halaman

1 Bab 1 : Program database 2-4 1 Bab 2 : Field Lookup 5-6 2,3,4 Bab 3 : Field Calculated 7-8 5,6,7 Bab 4 : Master-detail 9-11 8,9,10,11 Bab 5 : SQL 12-16 12,13,14,15 Bab 6 : Laporan menggunakan quick report 17-22 UTS Ujian Tengah Semester 16 Bab 7 : Membuat menu 23-24 17,18,19,20,21 Bab 8 : Data module 25-27 22 Bab 9 : Operasi table 28-32 23,24,25,26,27,28 Bab 10 : Membuat program menggunakan

code program 33-39

UAS Ujian Akhir Semester -

Catatan :

Untuk materi yang lebih dari 1 pertemuan, biasanya diberikan dalam bentuk soal latihan (dalam diktat ini hanya disisipkan 1 soal saja)

Page 3: Diktat Visual

Bab 1 : Program database

1.1 Database desktop Cara masuk ke database desktop, pilihlah menu : Tools-Database desktop Membuat table baru : File-New-Table-Ok (Tulisan field dan simpan dengan save as) Membuka table : File-Open-Table(Pilih nama file table dengan open) Mengisi table : Table-Edit data (atau dengan F9) Mengubah struktur table : Table-Restructure

Tombol-tombol penting dalam database desktop : Ctrl+F3 Refresh data Ctrl+Del Menghapus data / field Ins Menyisipkan data / field

1.2 Menampilkan data ke dalam form Langkah-langkah dalam menampilkan data ke dalam form :

Tambahkan object table(tbl) di tab bde ke dalam form dan ubah property : Database name : isi dengan nama direktory tempat menyimpan file table Table name : pilih nama table yang akan digunakan (bila tidak muncul, database namenya salah) Active : true(untuk melihat isi data)

Tambahkan object datasource (dts) di tab data access ke dalam form dan ubah property : Dataset : pilih nama object table yang akan dihubungkan

Tambahkan object dbedit(dbe) atau dbgrid(dbg) untuk menampilkan data dan

dbnavigator(dbn) yang berada di tab data control untuk operasi table dan ubah property : Datasource : pilih nama object datasource yang akan digunakan

SISWA.DB Field Jenis Ukuran Kunci NPM A 10 * Nama A 20 Alamat A 30

Isi data NPM Nama Alamat 2000110001 Budi Dago 51 2000120002 Andre Sudirman 37 2001110003 Anton Paskal 29

Contoh pemakaian dalam bentuk Dbedit

Contoh pemakaian dalam bentuk Dbgrid

Langkah-langkah mengatur column editor : 1. Klik kanan objek dbgrid di form, pilih column editor 2. Di column editor, klik kanan pilih add all fields (menampilkan semua field) 3. Kolom dapat diatur dengan mendrag urutan nama fields atau dengan menghapusnya

Page 4: Diktat Visual

4. Beberapa property dari kolom yang biasa diubah : Fieldname : nama field yang dihubungkan dengan kolom Title : mengatur tampilan judul kolom (Caption : untuk mengganti tulisan judul) Readonly : supaya kolom hanya dibaca saja Visible : supaya kolom muncul atau tidak di program

1.3 Latihan

Barang.DB Field Jenis Ukuran Kunci KodeBrg A 5 * NamaBrg

A 20 Harga N

Isi data KodeBrg NamaBrg

Harga B0001 Buku 2000 B0002 Pensil 1000 B0003 Pulpen 1500

Page 5: Diktat Visual

Bab 2 : Field Lookup (Pencarian otomatis)

2.1 Cara membuat field lookup Langkah-langkah membuat lookup :

5. Klik kanan objek table transaksi di form, pilih field editor 6. Di field editor, klik kanan pilih add all fields (menampilkan semua field) 7. Di field editor, klik kanan pilih new fields (membuat field baru) 8. Isikan pilihan :

Name : nama field baru Type : jenis field baru Size : ukuran field baru ( khusus string) Field type : lookup Keyfields : pembanding table Dataset : nama object table Lookup keys : pembanding Result field : field yang dicari

Setelah selesai klik ok.

Contoh pemakaian :

Beli.DB Nama Jenis

Ukuran

Kunci NoBeli A 5 * Tanggal D KodeSup A 3

Supplier.DB Nama Jenis

Ukuran

Kunci KodeSup A 3 * Nama A 20 Alamat A 30

Isi data : NoBeli

Tanggal

KodeSup 00001 09/05/04

S02 00002 09/05/04

S01 00003 09/06/04

S01

Isi data : KodeSup

Nama Alamat S01 Budi Dago 31 S02 Anton Sunda 2

Contoh membuat lookup : (Nama) Name : Nama Type : String Size : 20 Field type : lookup Keyfields : KodeSup

Page 6: Diktat Visual

Dataset : TblSupplier Lookup keys : KodeSup Result field : Nama

2.2 Latihan

Jual.DB Nama Jenis

Ukuran

Kunci

NoJual A 5 * Tanggal D KodeLgn A 3

Supplier.DB Nama Jenis

Ukuran

Kunci KodeLgn A 3 * Nama A 20 Alamat A 30

Isi data : NoJual

Tanggal

KodeSup 00001 09/05/04

S02 00002 09/05/04

S01 00003 09/06/04

S01

Isi data : KodeLgn

Nama Alamat S01 Budi Dago 31 S02 Anton Sunda 2

Field yang ditampilkan : Nojual,Tanggal,KodeLgn,Nama,Alamat

Page 7: Diktat Visual

Bab 3 : Field calculated (Menghitung rumus)

3.1 Cara membuat field calculated

1. Klik kanan objek table di form, pilih field editor 2. Di field editor, klik kanan pilih add all fields (menampilkan semua field) 3. Di field editor, klik kanan pilih new fields (membuat field baru) 4. Isikan pilihan :

Name : nama field baru Type : jenis field baru Size : ukuran field baru ( khusus string) Field type : calculated

Setelah selesai klik ok. 5. Pilih tab event di object table, pilih event

OnCalcField 6. Tuliskan rumus menggunakan bahasa PASCAL

Contoh pemakaian :

Subjual.DB Nama Jenis

Ukuran

Kunci NoJual A 5 * Barang A 20 Harga N Jumlah N

Isi data : NoJual

Barang Harga

Jumlah

00001 Pensil 1000 3 00002 Pulpen 2000 5 00003 Pensil 1000 3

Contoh membuat lookup : (Bayar) Name : Bayar Type : Float Field type : Calculated

Bentuk penulisan rumus ada 3 macam : Procedure tform1.tblsubjualcaclfield( ); Begin

Tblsubjual[ bayar ]:= Tblsubjual[ harga ]* Tblsubjual[ jumlah ]; End; Procedure tform1.tblsubjualcaclfield( ); Begin Tblsubjualbayar.value:= Tblsubjualharga.value* Tblsubjualjumlah.value; End; Procedure tform1.tblsubjualcaclfield( ); Begin

Page 8: Diktat Visual

Tblsubjual.fieldbyname( bayar ).asfloat:=

Tblsubjual.fieldbyname( harga ).asfloat* Tblsubjual.fieldbyname( jumlah ).asfloat; End; Catatan : Dari bentuk penulisan rumus di atas, rumus yang paling bawah adalah yang paling aman karena tipe datanya sudah pasti!!!

3.2 Latihan Subbeli.DB Nama Jenis

Ukuran

Kunci NoBeli A 5 * Barang A 20 Harga N Jumlah N

Isi data : NoBeli

Barang Harga

Jumlah

00001 Pensil 1000 3 00002 Pulpen 2000 5 00003 Pensil 1000 3 Field yang ditampilkan : NoBeli,Barang,Harga,Jumlah,Diskon,Bayar Jika jumlah minimal 5 akan diberikan diskon 10% dari harga dan jumlah Bayar = harga*jumlah diskon

Sewamobil.DB Nama Jenis

Ukuran

Kunci NoSewa A 5 * KodeMobil

A 3 Lama N

Mobil.DB Nama Jenis

Ukuran

Kunci KodeMobil

A 3 * Merk A 20 Tarif N

Isi data : NoBeli

KodeMobil

Lama 00001 M02 4 00002 M01 2 00003 M01 5

Isi data : KodeMobil

Merk Tarif M01 Carry 500000 M02 BMW 1000000

Field yang ditampilkan : NoSewa,Kodemobil,Merk,Tarif,Lama,Diskon,Bayar Jika jumlah minimal 5 akan diberikan diskon 10% dari lama dan tarif Bayar = lama*tarif - diskon

Page 9: Diktat Visual

Bab 4 : Membuat master-detail

4.1 Cara membuat master-detail Contoh kasus master-detail :

Master

Detail

Dari kasus ini dapat dipecah menjadi 2 table : Table master transaksi : NoFaktur Tanggal NamaLgn Alamat 00005 23-08-2004 Antonius Jl. Dago 51 Table detail transaksi : NoFaktur NamaBarang Harga Jumlah 00005 Buku 2000 15 00005 Pensil 1000 10 00005 Pulpen 2000 10

Dengan struktus : Table master transaksi : Nama field Jenis Ukuran Kunci NoFaktur A 5 * Tanggal D NamaLgn A 20 Alamat A 30

Table detail transaksi : Nama field Jenis Ukuran Kunci NoFaktur A 5 * NamaBrg A 20 * Harga N Jumlah N

Tampilan program yang akan dibuat :

Page 10: Diktat Visual

Langkah-langkah membuat hubungan master-detail : Buatlah 2 buah table (ada di tab BDE) ke form untuk master dan detail transksi Tambahkan 2 buah datasource (ada di tab data access) ke form untuk ke 2 table tadi Klik/sorot table detail transaksi, ubah property Master source : isi dengan nama datasource dari table master transaksi Masterfield : Klik (titik tiga) untuk menghubungkan 2 field yang sama antara table master dan detail

4.2 Latihan :

Pinjam2.db NoPinjam

Tanggal Peminjam

Alamat 00001 10-09-04 Rini Dago 23 00002 10-09-04 Hendra Paskal 51

Pinjambuku2.db NoPinjam

Buku Lama DendaHari 00001 BASIC 3 300 00001 VB 7 500 00002 DELPHI 7 500 00002 PASCAL

5 400

No pesan : 00001 Tanggal : 10-09-04 Pemesan : Toni Barang Harga Jumlah Satuan Buku tulis 25000 10 Lusin Pensil 1000 5 Batang Pulpen 20000 5 Box Dari bentuk faktur di atas, dapat dipecah 2 table : Pesan2.db(master), PesanBrg2.db(detail)

No beli : 00001 Tanggal : 10-09-04 Pembeli : Maria Tiket Harga Jumlah Kelas 3 50000 5 VIP 100000

2 VVIP 200000

2 Daftar tiket konser : Tiket Harga Kelas 3 50000 VIP 100000 VVIP 200000 Dari bentuk faktur di atas, dapat dipecah 3 table : Beli2.db (master), Subbeli2.db (detail), dan Tiketkonser2.db

No bon : 00001 Tanggal : 17-05-04 Pemakai : Hendra Montir : Bambang JasaBarang Harga Jumlah Bayar Busi 10000 3 30000 Cuci mobil 20000 1 20000

Page 11: Diktat Visual

Pasang 5000 1 5000 Daftar harga : Tiket Harga Kelas 3 50000 VIP 100000 VVIP 200000 Dari bentuk faktur di atas, dapat dipecah 3 table : Jasa2.db (master), Jasabengkel2.db (detail), dan Bengkel2.db (Bayar dihitung dari jumlah dan harga)

Page 12: Diktat Visual

Bab 5 : SQL

5.1 Pengenalan SQL adalah bahasa yang digunakan khusus untuk memanipulasi table. Bahasa SQL dibagi menjadi 4 : SELECT (dipakai untuk mengambil data) INSERT (dipakai untuk menambah data) DELETE (dipakai untuk menghapus data) UPDATE (dipakai untuk mengubah data) Catatan khusus : Operasi yang dikerjakan oleh bahasa SQL jauh lebih cepat dibandingkan dengan operasi biasa Contoh data : SISWA.DB NPM Nama Alamat Nilai 2000010001 Andri Jl Paskal 23 70 2000010002 Rudi Jl Dago 47 40 2000020003 Rini Jl Jawa 5 90 2000020004 Andri Jl Menado 2 50 2000020005 Budiman Jl Kopo 11 70 2000110006 Budi Jl ABC 31 75 2000110007 James Jl Sunda 7 70

Langkah langkah membuat program menggunakan query : Tambahkan object Query (Qry) di tab BDE dan ubah property : Database name = isi nama folder data SQL = isi perintah bahasa SQL yang akan digunakan (select * from SISWA) Active = TRUE (untuk menjalankan perintah bahasa SQL) Tambahkan DataSource (Dts) di tab DataAccess dan ubah property : Dataset = Nama object query (Query1) Tambahkan DBGrid (DBG) di tab DataControl dan ubah property : DataSource = Nama object datasource

5.2 Insert Penulisan : Insert into NAMATABLE (KOLOMFIELD) values (NILAIFIELD) Contoh : Insert into SISWA Values ( 2000110001 , Andi , Jl Dago 50 ,40) Insert into SISWA (NPM,Nama) Values ( 2000110002 , Budi )

5.3 Delete Penulisan : Delete from NAMATABLE where KONDISI

Page 13: Diktat Visual

Contoh : Delete from SISWA Delete from SISWA where NPM = 2000110002

Delete from SUBBELI where jumlah<10

5.4 Update Penulisan : Update NAMATABLE set NAMAFIELD=NILAIFIELD,

where KONDISI Contoh : Update SISWA set NAMA= Doni

where NPM= 2000110001

Update SISWA set NAMA= Rini , ALAMAT= Jl Merdeka 10

where NPM= 2000010002

5.5 Select Penulisan : Select NAMAFIELD, from NAMATABLE , where KONDISI group by NAMAFIELD, having KONDISI order by NAMAFIELD,

Contoh : Select * from SISWA Select NAMA from SISWA Select distinct NAMA from SISWA Select * from SISWA order by NAMA Select * from SISWA where NILAI >=60 Select * from SISWA where NAMA like B%

Select * from SISWA where NAMA like _ _ _ i%

Select * from SISWA where NAMA like R%i

Select NPM,NAMA as NAMA_SISWA from SISWA Select NPM,NAMA S. Nama siswa from SISWA S Select lower(NAMA),upper(NAMA) from SISWA Select substring(NPM from 1 for 4)as tahun from SISWA Select substring(NPM from 7 for 4)||NAMA as UrutNama from SISWA Select * from SISWA where NAMA in ( Rini , Budi , Andri ) Select NPM,nilai*0.1 as rapor from SISWA

5.6 Menggabungkan lebih dari 1 table Contoh data : Subjual.db dan jual.db Subjual.db Nojual Barang Harga Jumlah 00001 Buku 2000 50 00001 Pensil 1000 30 00001 Pulpen 1500 20 00002 Pensil 1000 5 00003 Buku 2000 20 00005 Pensil 1000 2 00005 Pulpen 1500 3

Page 14: Diktat Visual

00006 Pensil 1000 3 00007 Buku 2000 10 00008 Pensil 1000 2

Jual.db Nojual Tanggal Pembeli 00001 09/03/04 Anton 00002 09/03/04 Budi 00003 09/03/04 Hendra 00004 09/04/04 Budi 00005 09/05/04 Indra 00006 09/05/04 Anton 00007 09/06/04 Budi

Join : adalah tehnik untuk mengambil data dari 2 table yang sudah digabungkan

Left Inner Right Full Contoh : Select jual.nojual,jual.pembeli,subjual.barang from jual,subjual where jual.nojual=subjual.nojualSelect jual.pembeli,subjual.barang, subjual.jumlah * subjual.harga as bayar from jual,subjual where subjual.nojual=jual.nojualSelect * from subjual inner join jual on (subjual.nojual=jual.nojual) Select * from subjual left outer join jual on (subjual.nojual=jual.nojual) Select * from subjual right outer join jual on (subjual.nojual=jual.nojual) Select * from subjual full outer join jual on (subjual.nojual=jual.nojual)

5.7 Fungsi aggregate Avg menghitung rata-rata Count menghitung jumlah data Min mencari data terkecil Max mencari data terbesar Sum menghitung total Contoh : Select avg(jumlah) from subjual where nojual between 00001 and 00003

Select min(jumlah) from subjual Select max(jumlah) from subjual Select sum(jumlah) from subjual where nojual= 00001

Select nojual,count(barang) from subjual group by nojual Select nojual,sum(jumlah) from subjual group by nojual having sum(jumlah)>=10

Page 15: Diktat Visual

5.8 Subquery Some->Mewakili 1 atau beberapa record yang memenuhi syarat Any ->Mewakili 1 atau beberapa record yang memenuhi syarat All ->Mewakili semua record yang memenuhi syarat Union ->Menggabungkan beberapa record Contoh : Select * from subjual where jumlah>=all(select jumlah from subjual) Select * from subjual where jumlah>=any(select jumlah from subjual) Select * from subjual where jumlah>=some(select jumlah from subjual) Select nojual, jumlah, Diskon_ _ _ as keterangan from subjual where jumlah >=10 Union Select nojual, jumlah, Tdk dapat as keterangan from subjual where jumlah<10 Select nojual,jumlah*harga*0.9 as bayar from subjual where jumlah>=10 Union Select nojual,jumlah*harga as bayar from subjual where jumlah>=10 Select * from jual where nofaktur in (select nofaktur from subjual)

5.9 Menggunakan parameter Langkah langkah menggunakan parameter untuk query : Isikan perintah SQL dan untuk parameter diawali dengan tanda : (contoh : :nama) Untuk mengisikan parameter, cari property params, lalu pilihlah nama parameter tadi (contoh : nama), lalu isikan property value dengan nilai untuk parameter Setelah itu aktifkan query, maka hasilnya sesuai dengan parameter yang dimasukkan Select * from subjual where nojual = :nomor Select * from subjual where nojual between :dari and :sampai

Menggunakan kode program untuk parameter :

Ada 2 cara penulisan program untuk tombol proses : Procedure tform1.btnprosesclick ( ) Begin query1.sql.clear;

query1.sql.add( select * from subjual + where nojual = +quotedstr(edtnojual.text);

query1.open; End; Procedure tform1.btnprosesclick ( ) Begin query1.sql.clear;

query1.sql.add( select * from subjual where nojual = :nomor );

Page 16: Diktat Visual

query1.prepare; query1.params[0].asstring:=edtnojual.text; query1.open; End;

5.10 Latihan : Menampilkan field nilai yang minimal 70 dan berbeda dari tabel SISWA Menampilkan semua data dari tabel SISWA yang nilainya dari 70 sampai 80 Menampilkan semua data dari tabel SISWA yang namanya berawalan B atau berakhiran i Menampilkan semua data dari tabel SISWA yang namanya mengandung huruf n Menampilkan seluruh data yang diawali dengan kata Bud Menampilkan namabarang dengan huruf pertama huruf besar, sisanya huruf kecil Menampilkan seluruh data yang huruf keduanya n,i,a

Tampilkan field Nojual,pembeli, bayar yang nojualnya hanya terdapat di table subjual Tampilkan field Nojual, pembeli, barang yang nojualnya hanya terdapat di table jual Tampilkan field Nojual, jumlah barang dari masing-masing nojual yang jumlah barangnya minimal 2 Tampilkan field Barang, Total jumlah barang yang terjual berdasarkan barang Tampilkan field Nojual,Pembeli,TotalBayar dari masing-masing nojual (Bayar=Harga*Jumlah) Contoh data : Nilaiujian3.db dan Kuliah3.db Tampilkan semua data kecuali yang utsnya terbesar Tampilkan data yang utsnya terkecil

Nilai minimal 85 -> huruf A Nilai minimal 75 -> huruf B Nilai minimal 60 -> huruf C Nilai minimal 40 -> huruf D sisanya -> huruf E Yang ditampilkan NPM,KODEMK,NILAI,HURUF Nilai Bobot -> A -> 4*SKS Nilai Bobot -> B -> 3*SKS Nilai Bobot -> C -> 2*SKS Nilai Bobot -> D -> 1*SKS Nilai Bobot -> E -> 0*SKS Yang ditampilkan NPM,MATAKULIAH,HURUF,NILAIBOBOT Buatlah program query dengan masukan Kodemk Buatlah program query dengan masukan NPM (dari sampai) Buatlah program query dengan masukan nilai uts (minimal)

Page 17: Diktat Visual

Bab 6 : Membuat laporan menggunakan Quick Report

Langkah-langkah membuat laporan : Tambahkan object QuickRep dari tab Qreport dan ubah property : Dataset : nama object table / query yang dilaporkan Bands : untuk menentukan bagian laporan Bagian laporan yang sering digunakan : Title : ditampilkan di halaman pertama PageHeader : ditampilkan di setiap halaman (atas) ColumnHeader : ditampilkan di setiap halaman (atas sebelum data) Detail : menampilkan data PageFooter : ditampilkan di setiap halaman (akhir) Summary : ditampilkan di halaman terakhir GroupHeader : untuk menentukan pengelompokan data SubDetail : untuk menampilkan data detail Tambahkan qrlabel (untuk menampilkan tulisan), qrdbtext (untuk menampilkan data), qrexpr (untuk membuat rumus), qrsysdata (untuk menampilkan data standar), qrexprmemo (untuk menampil kan surat), qrshape (untuk

menampilkan bentuk standar),qrimage (untuk menampilkan gambar).

6.1 Laporan biasa Membuat laporan dari data siswa (siswa.db) Field yang ditampilkan : NPM, nama, alamat, nilai Btnprintclick: Quickrep1.print; Btnpreviewclick: Quickrep1.preview;

6.2 Laporan surat Untuk field, diwakili oleh tanda kurung kurawal {}. Untuk membuat surat cukup menggunakan 1 bagian detail dan 1 qrexprmemo (ubah property lines untuk menuliskan suratnya).

Page 18: Diktat Visual

6.3 Laporan berkelompok Tambahkan qrgroup (ada di atas detail) dan tambahkan qrlabel dan qrdbtext untuk mewakili nama field yang dijadikan kelompok. Untuk dataset gunakan query dengan perintah SQL : select * from

order by (nama field yang dijadi kelompok)

Field yang ditampilkan : NPM, Alamat, Nilai (Kelompok : Nama) dan rata-rata nilai

6.4 Laporan master-detail Siapkan table yang sudah terhubung master-detail. Untuk quickrep tambahkan minimal bagian detail serta dataset ke table master. Tambahkan qrsubdetail (ada di bawah detail) dan ubah property : Bands Header ( untuk menambah judul) dan Footer (untuk ringkasan) serta dataset ke table detail. Apabila menambahkan QrExpr untuk menghitung total/jumlah, maka supaya perhitungannya sesuai dengan detail, ubah property : Master (nama bagian qrsubdetail) dan ResetAfterPrint (True supaya nilainya kembali 0 setelah faktur baru) Supaya dicetak 1 faktur 1 halaman, bagian paling atas (detail), ubah property forcenewpage (True) Contoh pemakaian (menggunakan jual.db dan subjual.db)

Page 19: Diktat Visual

6.5 Laporan menggunakan parameter Untuk membuat laporan parameter (untuk nomor tertentu atau dari nomor sampai

atau dari tanggal sampai tanggal ) dapat digunakan table (menggunakan filter) atau query (menggunakan between)

(Jika menggunakan table) Procedure tform1.btnprintclick( ) Begin

tbljual.filter:= Tanggal >= + quotedstr(Edtdari.text) + and Tanggal <= + quotedstr(Edtsampai.text); tbljual.filtered:=true; quickrep1.print; End; Filter juga ditambahkan ke btnpreviewclick Di event OnClose dari form, tambahkan perintah berikut : procedure formclose begin tbljual.filtered:=false; tbljual.filter:= ; end; (Jika menggunakan query) Procedure tform1.btnprintclick( ) Begin query1.sql.clear; query1.sql.add( select * from jual where Tanggal between + quotedstr(Edtdari.text) + and +quotedstr(Edtsampai.text); query1.open; quickrep1.print; End;

Page 20: Diktat Visual

6.6 Laporan lengkap Misalkan tampilan laporan yang diinginkan adalah : Laporan penjualan 10/01/04 s/d 10/31/04 Tgl 10/01/04

No faktur 00031 Lunas Y Pelanggan Amir Barang Harga Jumlah Bayar Pensil 2B 2000 10 20000 Pensil 4B 3000 5 15000

Subtotal 35000 No faktur 00032 Lunas T Pelanggan Budi Barang Harga Jumlah Bayar Pensil 2B 2000 5 10000

Subtotal 10000 Total per tanggal 45000

Tgl 10/02/04 No faktur 00033 Lunas T Pelanggan Amir Barang Harga Jumlah Bayar Buku tulis 30 hal 2000 10 20000

Subtotal 20000 Total per tanggal 20000

Total semua 65000

Dari laporan tersebut dapat dipecah menjadi 4 table :

Barang5.db KodeBrg NamaBrg Harga BUK-001 Buku tulis 30

hal 2000

PEN-001 Pensil 2 B 2000 PEN-002 Pensil 4 B 3000

Pelanggan5.db KodeLgn NamaLgn Alamat L01 Amir Dago 51 L02 Budi Sudirman

37

Jual5.db Nofaktur

Tanggal Lunas

KodeLgn

00031 10/01/04

Y L01 00032 10/01/04

T L02 00033 10/02/04

T L01

Djual5.db Nofaktur KodeBrg Jumlah 00031 PEN-001 10 00031 PEN-002 5 00032 PEN-001 5 00033 BUK-001 10

Query diisi dengan : Select * from jual5 order by tanggal

tblpelanggan dilookup ke query tblbarang dilookup ke tbldjual datasource dihubungkan ke query (dataset)

tbldjual dihubungkan master-detail ke query (dari tbldjual diisi property : mastersource dan masterfield)

Page 21: Diktat Visual

Dari quickrep, tambahkan Title, detail dan summary. Tambahkan qrsubdetail dan header + footer. Tambahkan qrband (bandtype : groupfooter) Tambahkan qrgroup berdasarkan tanggal dan dihubungkan footernya ke qrband1. Subtotal, total pertanggal diubah resetafterprint true.

Di tombol print (onclick) : query1.filter:='tanggal >= ' +quotedstr(edit1.text)+ ' and tanggal <= '+quotedstr(edit2.text); query1.filtered:=true; qrlabel1.caption:='Laporan penjualan dari '+edit1.text+ ' s/d '+edit2.text; quickrep1.print; Di tombol preview (onclick) : query1.filter:='tanggal >= '+quotedstr(edit1.text)+ ' and tanggal <= +quotedstr(edit2.text); query1.filtered:=true; qrlabel1.caption:='Laporan penjualan dari '+edit1.text+ ' s/d '+edit2.text; quickrep1.preview;

Untuk qrexpr dari subtotal, ubah property : master : qrsubdetail, resetafterprint:true

Untuk qrexpr dari total per tanggal, ubah property : master : qrsubdetail, resetafterprint:true

Untuk qrexpr dari total semua, ubah property : master : qrsubdetail

Contoh laporan lain : Laporan piutang Nama pelanggan : Amir No faktur 00033 20000 Total piutang per pelanggan 20000

Nama pelanggan : Budi No faktur 00032 10000 Total piutang per pelanggan 10000

Total piutang 30000

SQL : select djual5.nofaktur, pelanggan5.namalgn, sum(djual5.jumlah* barang5.harga) from djual5, jual5, pelanggan5, barang5 Where djual5.nofaktur = jual5.nofaktur and jual5.kodelgn = pelanggan5.kodelgn and barang5.kodebrg = djual5.kodebrg group by djual5.nofaktur, pelanggan5.namalgn order by namalgn

Page 22: Diktat Visual

6.7 Latihan Buat laporan dengan tampilan : (subjual.db) NoJual Barang Jumlah -------------------------------------

. ------------------------------------- Total jumlah :

Buat laporan dengan tampilan : (jual.db) NoJual Tanggal -------------------------- Pembeli :

. -------------------------- Jumlah transaksi :

Buatlah laporan dengan tampilan berikut : (dari table pinjam2 dan pinjambuku2) Bayar dihitung dari Lama jika lebih dari 3, dihitung dari kelebihannya Nopinjam : Tanggal : Peminjam : Alamat : -------------------------------------------------------- Buku Lama DendaHari Bayar --------------------------------------------------------

-------------------------------------------------------- Total bayar Diskon diberikan 10% untuk yang bayarnya minimal 10000(Supplier5.db,DBeli5.db,Beli5.db) Laporan pembelian 10/01/04 s/d 10/31/04 Tgl 10/01/04

No faktur 00051 Supplier Toko ABC Barang Harga Jumlah Diskon Bayar Pensil 2B 2000 10 2000 18000 Pensil 4B 3000 5 1500 13500

Subtotal 31500 No faktur 00052 Supplier Toko ABC Barang Harga Jumlah Diskon Bayar Pensil 2B 2000 2 0 4000

Subtotal 4000 Total per tanggal 35500

Tgl 10/02/04 No faktur 00053 Supplier Toko XYZ Barang Harga Jumlah Diskon Bayar Buku tulis 30 hal 2000 10 2000 18000

Subtotal 18000 Total per tanggal 18000

Total semua 53500

Page 23: Diktat Visual

Bab 7 : Membuat menu

7.1 Cara membuat menu biasa Tambahkan mainmenu ke dalam form Klik kanan mainmenu di form lalu pilih menu designer atau dblclick main menu di form Contoh menu : File Edit Option Keluar New Cut Color Open Copy Font Save Paste

7.2 Menambahkan tulisan keterangan Tambahkan statusbar (berada di tab win32)untuk menampilkan tulisan keterangan dan ubah property : Autohint = true (untuk menampilkan tulisan keterangan) Masuk ke menu designer, tambahkan tulisan keterangan di property hint untuk setiap menu Keterangan dari menu : File : Berhubungan dengan file New : Membuat file baru Open : Membuka file yang sudah ada Save : Menyimpan file Edit : Berhubungan dengan mengubah Cut : Memindahkan ke memori pada saat mengubah Copy : Menggandakan pada saat mengubah Paste : Memindahkan pada saat mengubah Option : Mengubah konfigurasi dari tampilan Color : Mengubah warna dari tampilan Font : Mengubah tulisan dari tampilan Keluar : Kembali ke windows

7.3 Menambahkan short cut Ubah property shortcut untuk setiap menu (biasanya menggunakan tombol ctrl) Ketikkan isi menu sesuai dengan urutannya (Tambahkan tanda & untuk membuat menu dapat dipilih menggunakan alt)

7.4 Menambahkan sub menu Untuk menambahkan submenu dapat melalui klik kanan dari menu yang akan ditambahkan submenu, lalu pilih create submenu (atau dengan menekan ctrl+panah kanan) Sub menu yang ditambahkan : Color : Gray : berwarna abu abu

Red : berwarna merah Green : berwarna hijau Blue : berwarna biru White : berwarna putih

Font : Arial black : tulisan menjadi tebal Arial : tulisan biasa Times new roman : tulisan kecil

Page 24: Diktat Visual

7.5 Latihan Buatlah menu dengan tampilan berikut : Master Transaksi Data Laporan Keluar Barang Penjualan Barang Barang Pelanggan Pelanggan Pelanggan

Penjualan Penjualan : per barang per pelanggan

Keterangan : Master : Berhubungan dengan data tetap Barang : Memasukkan data master barang Pelanggan : Memasukkan data master pelanggan Transaksi : Berhubungan dengan data rutin Penjualan : Memasukkan data transksi penjualan Data : Melihat data Barang : Melihat data master barang Pelanggan : Melihat data master pelanggan Penjualan : Melihat data transaksi penjualan Laporan : Membuat laporan Barang : Membuat daftar barang Pelanggan : Membuat daftar pelanggan Penjualan : Membuat laporan penjualan Per barang : Membuat laporan penjualan berdasarkan barang Per pelanggan : Membuat laporan penjualan berdasarkan pelanggan Keluar : Kembali ke windows

Page 25: Diktat Visual

Bab 8 Data module (menggabungkan menu dan form lain)

8.1 Data module

Data module adalah tempat untuk menyimpan data (table,query,datasource, ) secara global sehingga dapat dibaca oleh semua form.Untuk menambahkannya : File-New-DataModule

8.2 Menggabungkan menu dengan data module & form

File-New-Form

Add to project (Shift+F11)

Remove from project

Project option (Shift+Ctrl+F11)

Shift+F12(Form)

Ctrl+F12(Program)

F12(Form/Program)

Alt+F11(Use unit)

File-Save All(Shift+Ctrl+S)

Sebelum program dijalankan/menambahkan form baru, simpan dahulu form yang sedang dibuat (supaya tidak bingung dalam memberi nama file)

8.3 Contoh pemakaian Buatlah menu dengan tampilan berikut : Master Transaksi Data Laporan Keluar Barang Penjualan Barang Barang Pelanggan Pelanggan Pelanggan

Penjualan Penjualan : per barang per pelanggan per tanggal

Form diberinama dengan FrmUtama dan disimpan dengan nama Fjual00.pas dan project dengan nama Jual0.dpr. Tambahkan form baru untuk membuat tampilan yang lain (Tombol-tombol yang ada di bab 8.2 dapat digunakan untuk mempermudah pembuatan program ini!!!).

Tambahkan datamodule (File-New-Data module) dan tambahkan 4 table (Barang5.db, Pelanggan5.db, Jual5.db, DJual5.db) ke dalamnya dan 4 datasource. Property namenya diisi dengan DtmJual dan disimpan dengan nama :FJUAL0D.PAS (Semua hubungan table (lookup/calculated/master-detail) dikerjakan di dalam datamodule ini) Tampilan form master barang (Digunakan untuk memasukkan data barang)

Form diberi nama frmmasterbarang, kemudian hubungkan dengan data module menggunakan file-use unit (dtmjual/Fjual0d.pas), baru datasource untuk semua object dapat diisi dan untuk dbedit property field juga disesuaikan dan disimpan Fjual01.pas.

Page 26: Diktat Visual

Catatan : Untuk membuat dbedit, selain cara seperti tadi dapat juga menggunakan field editor yang berada di masing-masing table dari data module (Add all fields untuk table yang akan dibuat formnya, kemudian drag nama field ke dalam form yang kosong (apabila belum dihubungkan dengan data module akan ditanyakan use unit secara otomatis), maka secara otomatis dbedit dan label muncul di dalam form yang kosong).

Tampilan form master pelanggan (Digunakan untuk memasukkan data pelanggan) Untuk membuat form master pelanggan caranya sama dengan master barang, disimpan dengan fjual02.pas dengan property name : frmmasterpelanggan. Tampilan form transaksi penjualan (Digunakan untuk memasukkan data penjualan)

Form diberi nama : frmtransaksipenjualan, hubungkan ke data module dan untuk dbedit hubungkan ke data source dari table jual5 dan untuk dbgrid hubungkan ke data source dari table djual5. Untuk dbnavigator, hubungan dengan data source dari table jual5. Disimpan dengan nama fjual03.pas.

Tampilan form data barang (Digunakan untuk melihat data barang) Untuk dbnavigator, ubah property visible buttons untuk menentukan tombol yang akan digunakan. Untuk dbgrid, ubah property readonly : true (supaya dbgrid tidak dapat mengubah data) File-Use unit untuk menghubungkan ke dtmjual. Disimpan dengan nama fjual04.pas

Tampilan form data pelanggan (Digunakan untuk melihat data pelanggan) Untuk membuat form data pelanggan caranya sama dengan data barang, disimpan dengan fjual05.pas dengan property name : frmdatapelanggan. Tampilan form data penjualan (Digunakan untuk melihat data penjualan)

Untuk dbnavigator, ubah property visible buttons untuk menentukan tombol yang akan digunakan. Untuk dbgrid, ubah property readonly : true (supaya dbgrid tidak dapat mengubah data) File-Use unit untuk menghubungkan ke dtmjual. Disimpan dengan nama fjual06.pas

Page 27: Diktat Visual

Untuk menghubungkan form dengan menu utama, pindahlah ke form frmutama dengan tombol Shift+F12. Lalu hubungkan semua form kecuali data module dengan frmutama dengan file-use unit (pilih semua kecuali fjual0d). Kemudian klik menu master-barang. Secara otomatis akan muncul procedure barang1click( ), isikan dengan frmmasterbarang.showmodal; (supaya yang dapat dipilih hanya satu form saja). Dengan cara yang sama, isikan untuk menu yang lain. Setelah selesai, semua perubahan dapat disimpan sekaligus dengan memilih menu file-save all.

8.4 Latihan Diskon diberikan 10% untuk yang bayarnya minimal 10000 (Supplier5.db,DBeli5.db,Beli5.db,BarangBeli5.db) (FBELI00.PAS, BELI0.DPR) Laporan pembelian 10/01/04 s/d 10/31/04 Tgl 10/01/04

No faktur 00051 Supplier Toko ABC Barang Harga Jumlah Diskon Bayar Pensil 2B 2000 10 2000 18000 Pensil 4B 3000 5 1500 13500

Subtotal 31500 No faktur 00052 Supplier Toko ABC Barang Harga Jumlah Diskon Bayar Pensil 2B 2000 2 0 4000

Subtotal 4000 Total per tanggal 35500

Tgl 10/02/04 No faktur 00053 Supplier Toko XYZ Barang Harga Jumlah Diskon Bayar Buku tulis 30 hal 2000 10 2000 18000

Subtotal 18000 Total per tanggal 18000

Total semua 53500

Page 28: Diktat Visual

Bab 9 : Operasi table

9.1 Secondary index Cara membuat secondary index : Masuk ke database desktop (Tools-Database desktop) Buka table yang akan diberi index (File-Open-Table) Ubah struktur table (Table-Restructure) Pilihlah secondary index di table properties (kanan atas) dan pilih define Pilih field yang akan dijadikan index (dipindahkan ke kanan) dan ok untuk menyimpan index

9.2 Operasi table Operasi table yang umum digunakan First : pergi ke record pertama Prior : pergi ke record sebelumnya Next : pergi ke record selanjutnya Last : pergi ke record terakhir Insert : menyisipkan 1 record baru Delete : menghapus 1 record Edit : mengubah isi data Post : menyimpan data yang berubah Cancel : membatalkan data yang berubah Refresh : menampilkan ulang data Moveby : pergi berdasarkan jumlah record Filter : menyaring data dengan kondisi tertentu Filtered : mengaktifkan filter Findfirst : mencari data pertama dari filter Findprior : mencari data sebelumnya dari filter Findnext : mencari data selanjutnya dari filter Findlast : mencari data terakhir dari filter Locate : mencari data berdasarkan field tertentu Append : menambah data BOF : tanda menunjukkan awal file (Begin of file) EOF : tanda menunjukkan akhir file (End of file) Findkey : mencari berdasarkan index yang aktif Findnearest : mencari terdekat berdasarkan index yang aktif Recno : nomor record yang ditunjuk Recordcount : memeriksa jumlah record yang aktif Modified : melihat apakah data sudah berubah atau tidak IndexName : mengisi nama index yang akan diaktifkan BookMark : menandai data supaya bisa kembali Range : menampilkan data dengan batas tertentu

Page 29: Diktat Visual

Contoh pemakaian :

procedure Form1.BtnAwalClick(...); begin tblsiswa.First; end; procedure TForm1.BtnSebelumClick(...); begin tblsiswa.Prior; end; procedure TForm1.BtnSesudahClick(...); begin tblsiswa.Next; end; procedure TForm1.BtnAkhirClick(...); begin tblsiswa.Last; end;

procedure TForm1.BtnTambahClick(...); begin tblsiswa.Append; end; procedure TForm1.BtnSisipClick(...); begin tblsiswa.Insert; end; procedure TForm1.BtnHapusClick(...); begin tblsiswa.Delete; end; procedure TForm1.BtnRefreshClick(...); begin tblsiswa.Refresh; end; procedure TForm1.BtnUbahClick(...); begin tblsiswa.Edit; end; procedure TForm1.BtnSimpanClick(...); begin tblsiswa.Post; end; procedure TForm1.BtnBatalClick(...); begin tblsiswa.Cancel; end;

Page 30: Diktat Visual

procedure TForm1.BtnCariClick(...); Var NamaField,Isi:String; begin NamaField:=inputbox('Nama Field','Nama field yang dicari : ',''); Isi:=inputbox('Isi Data','Isi data yang dicari : ',''); If not tblsiswa.Locate(NamaField,Isi,[]) then Messagedlg('Data tidak ada',MTError,[MbOK],0); end; procedure TForm1.BtnFilterClick(...); begin BtnFilter.Caption:='Filter'; If tblsiswa.Filtered then tblsiswa.Filtered:=False Else begin tblsiswa.Filter:=inputbox('Kondisi','Kondisi filter : ',''); tblsiswa.Filtered:=True; BtnFilter.Caption:='UnFilter'; end; end; procedure TForm1.BtnPergiClick(...); Var Jumlah:Integer; begin Jumlah:=strtoint(inputbox('Jumlah Record','Jumlah Record yang dilewati','')); tblsiswa.MoveBy(Jumlah); end; procedure TForm1.BtnCariKunciClick(...); Var NamaField,Isi:String; begin NamaField:= Rdgindex.Items[Rdgindex.Itemindex]; Isi:=inputbox('Isi Data','Isi data yang dicari : ',''); tblsiswa.EditKey; tblsiswa.FieldByName(NamaField).AsString:=Isi; tblsiswa.GotoKey; {tblsiswa.FindKey(Isi);}{Untuk Index} end; procedure TForm1.BtnCariTerdekatClick(...); Var NamaField,Isi:String; begin NamaField:= Rdgindex.Items[Rdgindex.Itemindex]; Isi:=inputbox('Isi Data','Isi data yang dicari : ',''); tblsiswa.EditKey; tblsiswa.FieldByName(NamaField).AsString:=Isi; tblsiswa.GotoNearest; {tblsiswa.FindNearest([Edit1.Text]);}{Untuk Index} end;

Page 31: Diktat Visual

procedure TForm1.BtnCariAwalClick(...); begin If Not Tblsiswa.FindFirst Then Messagedlg('Data tidak ada',MTError,[MbOK],0); end; procedure TForm1.BtnCariSblmClick(...); begin If Not Tblsiswa.FindPrior Then Messagedlg('Data tidak ada',MTError,[MbOK],0); end; procedure TForm1.BtnCariSsdhClick(...); begin If Not Tblsiswa.FindNext Then Messagedlg('Data tidak ada',MTError,[MbOK],0); end; procedure TForm1.BtnCariAkhirClick(...); begin If Not Tblsiswa.FindLast Then Messagedlg('Data tidak ada',MTError,[MbOK],0); end; procedure TForm1.BtnNoRecordClick(...); begin MessageDlg('Record No '+Inttostr(tblsiswa.RecNo),MTInformation,[MbOK],0); end; procedure TForm1.BtnBatasClick(...); Var Dari,Sampai,NamaField:String; begin if Btnbatas.Caption = 'Ba&tas' then begin Btnbatas.Caption:='Tidak Ba&tas'; NamaField:=Rdgindex.Items[Rdgindex.Itemindex]; Dari:=inputbox('Dari','Jaraknya dari : ',''); Sampai:=inputbox('Sampai','Jaraknya sampai : ',''); tblsiswa.EditRangeStart; tblsiswa.FieldByName(namaField).AsString := Dari; tblsiswa.EditRangeEnd; tblsiswa.FieldByName(namaField).AsString := Sampai; tblsiswa.ApplyRange; end else begin Btnbatas.Caption:='Ba&tas'; tblsiswa.CancelRange; end; end; procedure TForm1.BtnKosongClick(Sender: TObject); begin If Tblsiswa.RecordCount <= 0 Then Messagedlg('Table Kosong',MTError,[MbOK],0); end;

Page 32: Diktat Visual

procedure TForm1.RdgIndexClick(Sender: TObject); begin case rdgindex.ItemIndex of 0 : tblsiswa.IndexName:=''; 1 : tblsiswa.IndexName:='NamaSiswa'; 2 : tblsiswa.IndexName:='AlamatSiswa'; end; end;

Page 33: Diktat Visual

Bab 10 : Membuat program menggunakan code program

Contoh kasus : Faktur jual Nofaktur : 00031 Pelanggan : Andi Alamat : Sudirman 10 Telepon : 5201231 Tanggal : 01/01/04 Lunas : Y Barang Harga Jml Bayar Pensil 2B 1000 5 5000 Pensil 4B 1500 10 15000 Total : 20000 Table : Jual7.db, Djual7.db

Faktur beli Nofaktur : 00047 Supplier : Toko ABC Alamat : ABC 11 Telepon : 4201512 Tanggal : 01/01/04 Lunas : T Barang Harga Jml Bayar Pensil 2B 500 10 5000 Pensil 4B 800 20 16000 Total : 21000 Table : Beli7.db, Dbeli7.db

Barang7.db KodeBrg NamaBrg HargaBeli HargaJual Stok PEN-001 Pensil 2B 500 1000 5 PEN-002 Pensil 4B 800 1500 10 Supplier7.db KodeSup NamaSup AlamatSup TeleponSup S01 Toko ABC ABC 11 4201512 Pelanggan.db KodeLgn NamaLgn AlamatLgn TeleponLgn L01 Andi Sudirman 10 5201231 Buatlah menu : Master Transaksi Data Laporan Keluar

Daftar barang Pembelian perhari

(Untuk master,transaksi,data dapat ditentukan sendiri dari table di atas!!!) Nama file : Fstok00.pas, Stok0.dpr

10.1 Datamodule Tambahkan 7 table dan 7 datasource di datamodule dan hubungkan master-detail, lookup dan calculated (Bayar = harga*jumlah)

Tambahkan di bagian public total:real; procedure TDtmContoh.TblDBeliAfterPost(DataSet: TDataSet); var b:TBookmark; begin total:=0; b:=tbldbeli.GetBookmark; tbldbeli.First; while not TblDBeli.Eof do begin total:=total+tbldbeli.fieldbyname('bayar').AsFloat; TblDBeli.Next; end;

Page 34: Diktat Visual

TblDBeli.GotoBookmark(b); tbldbeli.FreeBookmark(b); end;

10.2 Event dari FrmMasterBarang procedure TFrmMasterBarang.DbeNamaBrgEnter(Sender: TObject); var tmp:string; begin tmp:=dbekodebrg.Text; if dtmcontoh.TblBarang.RecordCount<=0 then begin if trim(tmp)='' then dbekodebrg.Text:='BRG-001'; end else begin dtmcontoh.TblBarang.Cancel; if trim(tmp)='' then begin dtmcontoh.TblBarang.Last; tmp:=dbekodebrg.Text; dtmcontoh.TblBarang.Insert; dbekodebrg.Text:=copy(tmp,1,4)+ formatfloat('000',strtoint(copy(tmp,5,3))+1); end else begin if dtmcontoh.TblBarang.Locate('KodeBrg',tmp,[]) then dtmcontoh.TblBarang.edit else dtmcontoh.TblBarang.insert; dbekodebrg.Text:=tmp; end; end; end;

procedure TFrmMasterBarang.BtnSimpanClick(Sender: TObject); begin if dtmcontoh.TblBarang.Modified then dtmcontoh.TblBarang.post; FormActivate(self); end;

procedure TFrmMasterBarang.BtnBatalClick(Sender: TObject); begin dtmcontoh.TblBarang.cancel; FormActivate(self); end;

procedure TFrmMasterBarang.BtnKeluarClick(Sender: TObject);

Page 35: Diktat Visual

begin dtmcontoh.TblBarang.cancel; close; end;

procedure TFrmMasterBarang.FormActivate(Sender: TObject); begin dtmcontoh.TblBarang.Insert; dbekodebrg.setfocus; end;

10.3 Event dari frmtransaksipembelian procedure TFrmTransaksiPembelian.FormActivate(Sender: TObject); begin edttotal.Text:='0'; DtmContoh.TblBeli.Insert; DtmContoh.tblbeli['Tanggal']:=now; end;

procedure TFrmTransaksiPembelian.DBGrid1Enter(Sender: TObject); begin dtmcontoh.TblDBeli.Insert; end;

procedure TFrmTransaksiPembelian.BtnSimpanClick(Sender: TObject); begin if dtmcontoh.TblDBeli.Modified then dtmcontoh.TblDBeli.Post; if dtmcontoh.TblBeli.Modified then dtmcontoh.TblBeli.Post; dtmcontoh.TblDBeli.First; while not dtmcontoh.TbldBeli.Eof do begin dtmcontoh.TblBarang.Locate('KodeBrg',dtmcontoh.TblDBeli['kodebrg'],[]); dtmcontoh.TblBarang.Edit; dtmcontoh.TblBarang['Stok']:=dtmcontoh.TblBarang['Stok']+ dtmcontoh.TblDBeli['jumlah']; dtmcontoh.TblBarang.Post; dtmcontoh.TblDBeli.Next; end; FormActivate(self); end;

procedure TFrmTransaksiPembelian.BtnBatalClick(Sender: TObject); begin while not dtmcontoh.TbldBeli.Eof do dtmcontoh.TblDBeli.Delete; dtmcontoh.TblBeli.Cancel; FormActivate(self); end;

Page 36: Diktat Visual

procedure TFrmTransaksiPembelian.BtnKeluarClick(Sender: TObject); begin dtmcontoh.TblDBeli.First; while not dtmcontoh.TbldBeli.Eof do dtmcontoh.TblDBeli.Delete; dtmcontoh.TblBeli.Cancel; close; end;

procedure TFrmTransaksiPembelian.DbeLunasEnter(Sender: TObject); var tmp:string; begin tmp:=dbenofaktur.Text; if dtmcontoh.tblbeli.RecordCount<=0 then begin if trim(tmp)='' then dtmcontoh.TblBeli['nofaktur']:='00001'; end else begin dtmcontoh.tblbeli.Cancel; if trim(tmp)='' then begin dtmcontoh.tblbeli.Last; tmp:=dbenofaktur.Text; dtmcontoh.tblbeli.Insert; dtmcontoh.TblBeli['Nofaktur']:=formatfloat('00000',strtoint(tmp)+1); end else begin if not dtmcontoh.tblbeli.Locate('NoFaktur',tmp,[]) then begin dtmcontoh.tblbeli.insert; dtmcontoh.TblBeli['NoFaktur']:=tmp; end else begin dtmcontoh.tblbeliafterpost(tblbeli); edttotal.Text:=formatfloat('#####0',DtmContoh.total); showmessage('No faktur sudah ada!!!'); FormActivate(self); dbenofaktur.SetFocus; end; end; end; DtmContoh.tblbeli['Tanggal']:=now; end;

procedure TFrmTransaksiPembelian.DBGrid1ColExit(Sender: TObject);

Page 37: Diktat Visual

begin edttotal.Text:=formatfloat('#####0',DtmContoh.total); end;

10.4 Event dari frmdatabarang procedure TFrmDataBarang.EdtNamaBrgChange(Sender: TObject); begin DtmContoh.TblBarang.Filter:='Namabrg = '+quotedstr(edtnamabrg.text+'*'); DtmContoh.TblBarang.Filtered:=true; if dtmcontoh.TblBarang.RecordCount <=0 then begin DtmContoh.TblBarang.Filtered:=False; edtnamabrg.Text:=copy(edtnamabrg.text,1,length(edtnamabrg.text)-1); edtnamabrg.SelStart:=length(edtnamabrg.Text); end; end;

procedure TFrmDataBarang.FormClose(Sender: TObject; var Action: TCloseAction); begin DtmContoh.TblBarang.Filtered:=false; DtmContoh.TblBarang.Filter:=''; end;

10.5 Event dari frmdatapembelian procedure TFrmDataPembelian.BtnKeluarClick(Sender: TObject); begin close; end;

procedure TFrmDataPembelian.EdtTanggalKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_return then if trim(edttanggal.Text)='' then DtmContoh.tblbeli.Filtered:=False else begin DtmContoh.tblbeli.Filter:='tanggal = '+ quotedstr(edttanggal.text); DtmContoh.tblbeli.Filtered:=true; if dtmcontoh.tblbeli.RecordCount <=0 then DtmContoh.tblbeli.Filtered:=False; end; end;

procedure TFrmDataPembelian.FormClose(Sender: TObject; var Action: TCloseAction); begin DtmContoh.TblBeli.Filtered:=False;

Page 38: Diktat Visual

DtmContoh.TblBeli.Filter:=''; end;

10.6 Laporan daftar pelanggan

Di frmutama, untuk menampilkan form ini langsung tampilkan quickrepnya : FrmDaftarBarang.QuickRep1.Preview;

10.7 Laporan pembelian perhari

Ubah dari form, property : Borderstyle : bsdialog Autoscroll : false Ukuran form disesuaikan supaya tampilan quickrep tidak kelihatan

Untuk cara membuatnya sama dengan cara membuat laporan lengkap!!! (Bab 6.6)

10.8 Latihan No beli : 00001 Tanggal : 10-09-04 Pembeli : Maria Tiket Harga Jumlah Kelas 3 50000 5 VIP 100000

2 VVIP 200000

2 Daftar tiket konser : Tiket Harga Kelas 3 50000 VIP 100000 VVIP 200000

Page 39: Diktat Visual

Dari bentuk faktur di atas, dapat dipecah 3 table : Beli7.db (master), Subbeli7.db (detail), dan Tiketkonser7.db Laporan yang dibuat : daftar tiket konser, pembelian per pelanggan

Page 40: Diktat Visual

This document was created with Win2PDF available at http://www.daneprairie.com.The unregistered version of Win2PDF is for evaluation or non-commercial use only.