Anda di halaman 1dari 45

Membuat Aplikasi Penjualan (POS) dengan Delphi Part1

Kali ini saya akan proses pembuatan aplikasi Penjualan Point Of Sales (POS) yang sederhana
dengan menggunakan delphi. Disini saya menggunakan DELPHI XE2 tapi prosesnya sama
bagi pengguna delphi versi lain. Sebelum praktek sedikit saya jelaskan apa itu POS. POS
adalah aplikasi penjualan yang digunakan untuk memanajemen penjualan atau toko-toko kecil,
biasanya POS berisi modul-modul yang terdapat pada aplikasi guna untuk memanajemen
datanya. Misal:

 Data Barang
 Data Pelangan
 Data Pengguna
 Data Supplier
 Transaksi Pembelian
 Transaksi Penjualan
 Laporan Penjualan
 Laporan Pembelian
 Laporan Laba Rugi

Kalau untuk aplikasi POS yang berharga mahal mungkin modulnya lebih banyak dari itu ada
juga yang bisa terkoneksi internet dengan menggunakan web service.

Karena ini nanti akan membahas aplikasi POS yang sederhana, maka saya batasi masalah agar
pembahasan nanti tidak meluas. Modul-modul diatas yang nantinya saya gunakan untuk
membuat aplikasi POS.

Tahap-tahap yang perlu dilakukan pertama adalah membuat database POS nya. Database yang
nanti saya gunakan adalah MySQL. Untuk yang belum mengetahui bagaimana membuat
database menggunakan MySQL bisa merujuk ke halaman Membuat Database Dengan
MySQL. Kita akan membuat database dengan nama possederhana. Setelah membuat database
maka selanjutnya adalah mebuat tabel, bagi yang belum tahu pembuatan tabel dan operasi di
dalamnya silahkan berujuk ke halaman Operasi tabel mysql. Tabel-tabel yang kita buat nanti
adalah:

1. tbarang nantinya digunakan untuk meyimpan Data Barang

Terdiri dari Field-field: ( kodebarang, namabarang, satuan, hargabeli, hargajual,


kdsupplier,stok ). kodebarang sebagai primary key

2. tbpelanggan nantinya digunakan untuk meyimpan Data Pelanggan

Terdiri dari Field-field: ( kodepelanggan, namapelanggan, alamat, nomertelepon ).


kodepelanggan sebagai primary key

3. tbpengguna nantinya digunakan untuk menyimpan Data Pengguna Aplikasi

Terdiri dari Field-field: ( kodepengguna, namapengguna, notelepon, password).


kodepenggunasebagai primary key
4. tb_pembelian nantinya digunakan untuk menyimpan Data Master Pembelian

Terdiri dari Field-field: ( kodepembelian, tgl_pembelian, totalbeli, kodesupplier,


kodepengguna). kodepembelian sebagai primary key

5. tb_detailpembelian nantinya digunakan untuk menyimpan Detail Barang yang dibeli

Terdiri dari Field-field: ( id, kodepembelian, kodebarang, hargabeli, jumlah,subtotal).


id sebagai primary key

6. tb_penjualan nantinya digunakan untuk menyimpan Data Master Penjualan

Terdiri dari Field-field: ( kodepenjualan, tgl_penjualan, totaljual, kodepelanggan,


kodepengguna). kodepenjualan sebagai primary key

7. tb_detailpenjualan nantinya digunakan untuk menyimpan Detail Barang yang terjual

Terdiri dari Field-field: ( id_tabel, kodepenjualan, kodebarang, hargajual,


jumlah,subtotal). kodepembelian sebagai primary key .
Perancangan database sudah selesai. Desain database dapat dilihat pada gambar dibawah yang
menggunakan Editor Navicat.

Tutorial Pembuatan Aplikasi Sederhana untuk part 1 Sampai sini dulu. dengan perancangan
databasenya.
Pada Part2 nanti akan desain interface di delphi . Aplikasi ini untuk pemula seperti saya. Kalau
sudah pada master harap kasih komen dan sarannya. Orang belajar, salah itu biasa jangan dicela
atau dihina. :D

Membuat Aplikasi Penjualan (POS) dengan Delphi Part2

Joko Purnomo | 5:33 PM


| 13comments
Setelah sebelumnya membuat rancangan database penjualanya sekarang nanti kita akan
mendesain interface aplikasinya dan menu-menu untuk aplikasi penjualan. Bagi yang belum
membuat rancangan databasenya silahakan merujuk ke halaman Membuat Aplikasi Penjualan
(POS) dengan Delphi Part1, dan agar dapat mengkuti artike ini karena prosesnya ada beberapa
tahap sehingga saya bagi beberapa part.
Dalam perancangan menu dan tampilan aplikasi sangat dasarankan kita berpikir sebagai
pengguna aplikasi penjualan, sehingga kita mengetahui apa yang dibutuhkan pengguna ketika
memakai aplikasi yang telah kita buat dan tidak membingunkan pengguna aplikasi. Membuat
desain yang informatif dan nyaman untuk pengguna bisa dilakukan dengan memberikan Hint
( penjelasan kegunaan tombol atau komponen) pada desain yang kita buat.

Pertama kita akan membuat desain Menu Utama pada aplikasi. Desain seperti pada gambar
dibawah atau desain sesuai keinginan anda.

Tambahkan komponen TMainmenu kemudian klik 2X. Isi dari tiap menu tersebut adalah
dapat dilihat pada gambar dibawah.

1. Menu File

2. Menu Master

3. Menu Transaksi
4. Menu Laporan

5. Menu Bantuan

Tambahkan hint pada setiap menu dengan cara pilih menu kemudian atur properties hint.
Misal menu backup saya pilih kemudian properties hint saya isi dengan " Lakukan
Backup/restrore untuk menjaga keamanan data"

Menu utama sudah dibuat. kemudia tambahkan komponen TToolbar pada form yang nantinya
untuk meletakan tolmol tombol shortcut. Dan tambahkan juga TImageList untuk menampung
Icon yang nantinya diletakan ditoolbar. Lihat gambar dibawah ini.
Agar bisa tampilan seperti di atas properties yang harus diatur sebagai berikut:

1. Komponen TToolbar tambahkan button sebanyak 6 Button dengan cara klik kanan
pada komponen kemudian pilih New Button. Atur Propertis Caption dan Hint pada
setiap Button sesuai dengan nama-nama tombol diatas. Kemudian pada komponen
TToolBar propertis showcaption diubah menjadi True.
2. Pada komponen TImageList atur propertis height dan width diganti angka 36.
Kemudian tambahkan icon pada ImageList dengan klik 2x komponen kemudian
masukan icon dengan extensi .bmp. Lalu tekan OK.
3. Pada komponen TToolbar propertis Image diisi dengan ImageList1.
4. Kemudian pada atur ImageIndex pada setiap Button yang ada di ToolBar sesuai
keinginan.
5. Atur height Toolbar sesuai dengan tampilan.
6. Kemudian Simpan dengan nama Umainmenu.Pas

Pembuatan Menu Utama sudah selesai. Apabila nanti dijalankan maka hasil akan seperti
dibawah ini.
Proses ini masih tahap awal jadi masih ada beberapa proses. Untuk Peroses Selanjutnya nanti
Mendesain Form-Form yang dibutuhkan aplikasi. Jadi ikuti terus prosesnya sampai selesai ...
:D.

Artikel ini di peruntukan untuk pemula. Untuk para yang sudah master berikan masukan saja.
Karena mungkin artikel yang saya buat ini adalah sampah bagi para master. :D.

Membuat Aplikasi Penjualan (POS) dengan Delphi Part3

Joko Purnomo | 8:14 PM


| 27comments
Setelah pada tuturial sebelumnya mendesain menu-menu pada aplikasi penjualan, maka
untuk selanjutnya adalah mendesain form untuk pada master yaitu, Data Barang, Data
Pengguna, Data Pelanggan, Data Supplier dan sekaligus mengoneksikan aplikasi dengan
yang telah kita buat. Bagi yang ketinggalan dalam tutorial kali ini silahkan merujuk ke
halaman-halaman sebelumnya yaitu Membuat Aplikasi Penjualan (POS) dengan Delphi Part1
dan Part2.

Langsung saja kita pertama adalah membuat koneksi database dengan delphi. Disini saya
menggunakan komponen Zeos untuk koneksi MySQL dengan Delphi. Untuk yang belum tau
bagaimana pengoneksian Zeos dengan MySQL silahkan berkunjung ke Koneksi MySQL
dengan Zeos.

Tambahkan Datamodule untuk menaruh Zeos koneksinya lihat gambar dibawah.

Keterangan :
Untuk Datamodul1 properties Name diganti DM setiap komponen ZQuery properties SQL
di isi dengan table masing-masing sesuai dengan nama Query, Misal untuk Qdatabarang
atur properties Connection diisi dengan Koneksi, properties SQL diisi : " select * from
tbarang" kemudian propertis active diganti True. Lakukan Langkah seperti pada
tutorial Koneksi MySQL dengan Zeos. Kemudian simpan dengan Udm.Pas

Properties yang di sesuaikan :

 Edit1 Name : Ekodebarang


 Edit2 Name : Enamabarang
 Combobox1 Name: Cmbsatuan
 Edit3 Name : Ehargabeli
 Edit4 Name : Ehargajual
 Edit5 Name : Estok
 Combobox2 Name : cmbsupplier
 Label1 Caption : Kode Barang
 Label2 Caption : Nama Barang
 Label3 Caption : Satuan
 Label4 Caption : Harga Beli
 Label5 Caption : Harga Jual
 Label6 Caption : Stok
 Label7 Caption : Supplier
 Bitbutton1 Caption : Tambah
 Bitbutton2 Caption : Simpan
 Bitbutton3 Caption : Ubah
 Bitbutton4 Caption : Hapus
 Bitbutton5 Caption : Tutup
 Dbgrid1 Properties DataSource Diisi dengan dm.Ddatabarang

Maka hasil apabila sudah terkoneksi dengan database, terlihat seperti pada gambar dibawah:
Setelah terkoneksi dengan database langkah selanjutnya adalah peng-kodean untuk form
databarang.

Karena kodebarang disini akan di generate secara otomatis maka kita akan membuat procedure
autoKode. Pembuatan kode barang secara otomatis.

tambahkan procedure Di private seperti dibawah:


procedure BitBtn1Click(Sender: TObject);
private
procedure AutoKode;
procedure Reset;
function CheckEdit:Boolean;
{ Private declarations }
public
{ Public declarations }
end;
Procedure Auto Number

procedure TFdatabarang.AutoKode;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tbarang';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(rigth(kodebarang,5)) as kode from tbarang';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
Ekodebarang.Text:='BR.'+kode;
end;
Procedure CheckEdit digunakan untuk validasi bahwa Tedit dan Combobox harus
terisi

function TFdatabarang.CheckEdit: Boolean;


var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if ( Components[i] is TEdit ) then
if Tedit(Components[i]).Text ='' then
begin
Showmessage(TEdit(Components[i]).Name +' masih kosong');
Exit;
end;
end;
if Cmbsatuan.Text ='' then
showmessage('satuan masih kosong')
else
if cmbsupplier.Text ='' then
Showmessage(' supplier masih kosong ')
end;

Procedure Reset untuk mengosongkan semua kotak Edit ketika ingin mengisi data baru.

procedure TFdatabarang.Reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if Components[i] is TEdit then
Tedit(Components[i]).Text :=''
end;
cmbsatuan.Text:='';
cmbsupplier.Text:='';
bitbtn1.Caption:='Tambah';
dm.QdataBarang.Active:=False;
Dm.QdataBarang.Active:=True;
end;

Script untuk event OnkeyPress pada Ehargabeli, Ehargajual,Estok ( untuk mem- validasi
bahwa yang di inputkan hanya angka)
procedure TFdatabarang.EstokKeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9',#13,#8,#10]) then
key :=#0;
end;
Script untuk Tombol Tambah
procedure TFdatabarang.BitBtn1Click(Sender: TObject);
begin
if bitbtn1.Caption ='Tambah' then
begin
Reset;
AutoKode;
bitbtn1.Caption:='Batal';
end else
begin
Reset;
AutoKode;
end;
end;

Script untuk Tombol Simpan

procedure TFdatabarang.BitBtn2Click(Sender: TObject);


begin
if not CheckEdit then
begin
with dm.QdataBarang do
begin
Append;
FieldByName('kodebarang').AsString:=ekodebarang.Text;
FieldByName('namabarang').AsString:=Enamabarang.Text;
FieldByName('satuan').AsString:=cmbsatuan.Text;
FieldByName('hargabeli').AsInteger:=Strtoint(Ehargabeli.text);
FieldByName('hargajual').AsInteger :=Strtoint(Ehargajual.Text);
FieldByName('stok').AsInteger :=Strtoint(estok.Text);
if dm.QdataSupplier.Locate ('namasupplier',cmbsupplier.Text,[])=True
then

FieldByName('kodesupplier').Text:=dm.QdataSupplier.FieldByName('kodesupplie
r').AsString;
Post;
end;
Reset;
AutoKode;
end;
end;
Script Untuk Tombol Ubah
procedure TFdatabarang.BitBtn2Click(Sender: TObject);
begin
if CheckEdit then
begin
with dm.QdataBarang do
begin
Edit;
FieldByName('kodebarang').AsString:=ekodebarang.Text;
FieldByName('namabarang').AsString:=Enamabarang.Text;
FieldByName('satuan').AsString:=cmbsatuan.Text;
FieldByName('hargabeli').AsInteger:=Strtoint(Ehargabeli.text);
FieldByName('hargajual').AsInteger :=Strtoint(Ehargajual.Text);
FieldByName('stok').AsInteger :=Strtoint(estok.Text);
if dm.QdataSupplier.Locate ('namasupplier',cmbsupplier.Text,[])=True
then

FieldByName('kodesupplier').Text:=dm.QdataSupplier.FieldByName('kodesupplie
r').AsString;
Post;
end;
Reset;
AutoKode;
end;
end;

Script untuk tombol Hapus

procedure TFdatabarang.BitBtn4Click(Sender: TObject);


begin
if messageDlg('Apakah yakin data'+
''+dm.QdataBarang.FieldByName('namabarang').AsString+' akan
dihapus?',MTConfirmation,[MByes,MBno],0)=mrYes then
begin
dm.QdataBarang.Delete;
Reset;
AutoKode;
end;
end;

Script Untuk DBGrid event OnCellClick

procedure TFdatabarang.DBGrid1CellClick(Column: TColumn);


begin
Ekodebarang.Text:=dm.QdataBarang.FieldByName('kodebarang').AsString;
Enamabarang.Text:=dm.QdataBarang.FieldByName('namabarang').AsString;
cmbsatuan.Text:=dm.QdataBarang.FieldByName('satuan').AsString;
Ehargabeli.Text:=dm.QdataBarang.FieldByName('hargabeli').AsString;
Ehargajual.Text:=dm.QdataBarang.FieldByName('hargajual').AsString;
estok.Text:=dm.QdataBarang.FieldByName('stok').AsString;
if dm.QdataSupplier.Locate ('kodesupplier',dm.QdataBarang.FieldByName
('kodesupplier').AsString ,[])=True then
cmbsupplier.Text:=dm.QdataSupplier.FieldByName('namasupplier').AsString;
end;
Script untuk Event OnShow Pada Form

procedure TFdatabarang.FormShow(Sender: TObject);


begin
Reset;
AutoKode;

cmbsupplier.Clear;
dm.QdataSupplier.First;
while dm.QdataSupplier.Eof =false do
begin

cmbsupplier.Items.Add(dm.QdataSupplier.FieldByName('namasupplier').AsString
);
dm.QdataSupplier.Next;
end;
end;

Semua script pada Form data barang sudah dimasukan. dan silahkan tekan F9 untuk
menjalankanya. Dan apabila langkah-langkah benar maka tidak akan terjadi error. dan lihat
hasil seperti pada gambar dibawah.
Sebelumnya untuk memanggil Form Databarang. Pada Menu utama tambahkan Uses
udatabarang agar bisa dishow.

Kemudian kembali ke Menu Utama Pada tombol Data Barang dan Menu Data Barang
tambahkan script seperti dibawah ini.
// Menu data barang

procedure TFMenuUtama.M2Click(Sender: TObject);


begin
Fdatabarang.ShowModal;
end;

// Tombol Data Barang


procedure TFMenuUtama.ToolButton1Click(Sender: TObject);
begin
Fdatabarang.ShowModal;
end;

Dan hasilnya Seperti dibawah ini

Selesai sudah Form Data Barang pada tutorial ini. Masih Ada 3 Master Data lagi... karena
sudah capek.
Nanti Saya akan Lanjutkan Ke tutorial berikutnya... Selamat mencoba. Semoga sukses.
Maaf kalo ada salah penulisan. dan Coding masih kurang sempurna, karena saya juga lagi
belajar.

Membuat Aplikasi Penjualan (POS) dengan Delphi Part4

Joko Purnomo | 7:07 PM


| 9comments
Setelah istirahat nge-blog 2 hari dikarenakan lagi ada proyek. heheheh. sekarang kita
lanjutkan lagi proses pembuatan aplikasi penjualan dengan delphi. untuk dapat mengikuti
artikel ini maka saya sarankan untuk membaca juga artikel sebelumnya Membuat Aplikasi
Penjualan (POS) dengan Delphi Part 3.

Agar artikel cepat selesai maka kita lagsung saja mulai membuat from selanjutnya yaitu form
Data Supplier. Ikuti tiap langkah-langkahnya.

1. Buat form Data Supplier

Keterangan
Tambahkan uses Udm terlebih dahulu. Dengan cara klik File lalu Use Unit pilih Udm. Agar
bisa terkoneksi dengan database.

 Edit1 Name : Ekodesupplier


 Edit2 Name : EnamaSupplier
 Edi3 Name : Ealamat
 Edit4 Name : Enomertelepon
 Button1 Caption : Tambah
 Button2 Caption : Simpan
 Button3 Caption : Ubah
 Button4 Caption : Hapus
 Button5 Caption : Tutup
 DBgrid1 Properties DataSoure Di isi dengan dm.DdataSource1
Setelah propertis semua sudah diseting maka pada grid akan muncul field-field pada tabel
yang terkoneksi.

2. Pengkodean

 Membuat Procedure autoNumber, bersih, Checkedit

Procedure AutoNumber digunakan untuk nomer otomatis


procedure TFsupplier.AutoNumber;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tb_supplier';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(right(kodesupplier,5)) as kode from
tb_supplier';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
EkodeSupplier.Text:='SP.'+kode;
end;
Procedure Bersih(reset) digunakan untuk membersihkan text pada Tedit atau
tampilan form kosong
procedure TFsupplier.Reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if Components[i] is TEdit then
Tedit(Components[i]).Text :=''
end;
bitbtn1.Caption:='Tambah';
end;

function checkEdit digunakan untuk validasi TEdit apabila masih kosong maka
akan muncul peringatan
Function TFsupplier.CheckEdit;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if ( Components[i] is TEdit ) then
if Tedit(Components[i]).Text ='' then
begin
Showmessage(TEdit(Components[i]).Name +' masih kosong');
Exit;
end;
end;
Result:=True;
end;

 Kode Untuk Tombol Tambah

procedure TFsupplier.BitBtn1Click(Sender: TObject);


begin
if bitbtn1.Caption ='Tambah' then
begin
Reset;
AutoNumber;
bitbtn1.Caption:='Batal';
end else
begin
Reset;
AutoNumber;
end;
end;

 Kode Untuk Tombol Simpan

procedure TFsupplier.BitBtn2Click(Sender: TObject);


begin
if CheckEdit then
begin
with dm.QdataSupplier do
begin
Append;
FieldByName('kodesupplier').AsString:=ekodesupplier.Text;
FieldByName('namasupplier').AsString:=Enamasupplier.Text;
FieldByName('alamat').AsString:=Ealamat.Text;
FieldByName('nomertelepon').AsString:=Enomertelepon.text;
Post;
end;
Reset;
AutoNumber;
end;
end;

 Kode Untuk Tombol Ubah

procedure TFsupplier.BitBtn3Click(Sender: TObject);


begin
if CheckEdit then
begin
with dm.QdataSupplier do
begin
Edit;
FieldByName('kodesupplier').AsString:=ekodesupplier.Text;
FieldByName('namasupplier').AsString:=Enamasupplier.Text;
FieldByName('alamat').AsString:=Ealamat.Text;
FieldByName('nomertelepon').AsString:=Enomertelepon.text;
Post;
end;
Reset;
AutoNumber;
end;
end;

 Kode Untuk Tombol Hapus

procedure TFsupplier.BitBtn4Click(Sender: TObject);


begin
if messageDlg('Apakah yakin data'+
''+dm.QdataSupplier.FieldByName('namasupplier').AsString+' akan
dihapus?',MTConfirmation,[MByes,MBno],0)=mrYes then
begin
dm.QdataSupplier.Delete;
Reset;
AutoNumber;
end;
end;

 Kode Untuk DBgrid1 Event OnCellClick

procedure TFsupplier.DBGrid1CellClick(Column: TColumn);


begin

ekodeSupplier.Text:=dm.QdataSupplier.FieldByName('kodesupplier').AsSt
ring;

Enamasupplier.Text:=dm.QdataSupplier.FieldByName('namasupplier').AsSt
ring;
Ealamat.Text:=dm.QdataSupplier.FieldByName('alamat').AsString;

Enomertelepon.Text:=dm.QdataSupplier.FieldByName('nomertelepon').AsSt
ring;
end;

 Kode Untuk Form event Onshow

procedure TFsupplier.FormShow(Sender: TObject);


begin
Reset;
AutoNumber;
end;
pengkodean untuk Form Data Supplier sudah selesai. sebelum dijalankan tambahkan use
unit udataSupplier pada FMainMenu(Form utama) dengan cara File > use Unit pilih
UdataSupplier, kemudian pada tombol dan menu data supplier tambahkan event Onclik (
atau klik 2X) kemudian masukan kode FSupplier.Showmodal; seperti dibawah ini.
procedure TFMenuUtama.D2Click(Sender: TObject);
begin
Fsupplier.showmodal;
end;
procedure TFMenuUtama.ToolButton2Click(Sender: TObject);
begin
Fsupplier.showmodal;
end;

Setelah selesai semua kemudian jalankan program dengan menekan F9. Apabila tidak ada
yang error maka program akan berjalan dengan lancar. Sepert pada gambar dibawah ini.

Membuat Aplikasi Penjualan (POS) dengan Delphi Part5

Akhirnya ada waktu juga buat nerusin judul ini. Setelah kemarin lagi repot ngurusin kerjaan.
hehehe
Oke... kita langsung saja untuk melanjutkan membuat aplikasi penjualan dengan delphi.
Sekarang akan membuat Form untuk data pelanggan (customer) .

Langkah pertama desain form seperti gambar dibawah.


Keterangan
Tambahkan uses Udm terlebih dahulu. Dengan cara klik File lalu Use Unit pilih Udm. Agar
bisa terkoneksi dengan database.

 Edit1 Name : Ekodepelanggan


 Edit2 Name : Enamapelanggan
 Edi3 Name : Ealamat
 Edit4 Name : Enomertelepon
 Button1 Caption : Tambah
 Button2 Caption : Simpan
 Button3 Caption : Ubah
 Button4 Caption : Hapus
 Button5 Caption : Tutup
 DBgrid1 Properties DataSoure Di isi dengan dm.DdataPelanggan

Setelah propertis semua sudah diseting maka pada grid akan muncul field-field pada tabel
yang terkoneksi.

2. Pengkodean

 Membuat Procedure autoNumber, bersih, Checkedit

Procedure AutoNumber digunakan untuk nomer otomatis


procedure TFpelanggan.AutoNumber;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tbpelanggan';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(right(kodepelanggan,5)) as kode from
tbpelanggan';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
Ekodepelanggan.Text:='CS.'+kode;
end;
Procedure Bersih(reset) digunakan untuk membersihkan text pada Tedit atau
tampilan form kosong
procedure TFpelanggan.Reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if Components[i] is TEdit then
Tedit(Components[i]).Text :=''
end;
bitbtn1.Caption:='Tambah';
end;

function checkEdit digunakan untuk validasi TEdit apabila masih kosong maka
akan muncul peringatan
Function TFpelanggan.CheckEdit;
var
i:integer;
begin

for i := 0 to ComponentCount -1 do
begin
if ( Components[i] is TEdit ) then
if Tedit(Components[i]).Text ='' then
begin
Showmessage(TEdit(Components[i]).Name +' masih kosong');
Exit;
end;
end;
Result:=True;
end;

 Kode Untuk Tombol Tambah


procedure TFpelanggan.BitBtn1Click(Sender: TObject);
begin
if bitbtn1.Caption ='Tambah' then
begin
Reset;
AutoNumber;
bitbtn1.Caption:='Batal';
end else
begin
Reset;
AutoNumber;
end;
end;

 Kode Untuk Tombol Simpan

procedure TFpelanggan.BitBtn2Click(Sender: TObject);


begin
if CheckEdit then
begin
with dm.Qdatapelanggan do
begin
Append;
FieldByName('KodePelanggan').AsString:=EKodePelanggan.Text;
FieldByName('namapelanggan').AsString:=EnamaPelanggan.Text;
FieldByName('alamat').AsString:=Ealamat.Text;
FieldByName('nomertelepon').AsString:=Enomertelepon.text;
Post;
end;
Reset;
AutoNumber;
end;
end;

 Kode Untuk Tombol Ubah

procedure TFpelanggan.BitBtn3Click(Sender: TObject);


begin
if CheckEdit then
begin
with dm.Qdatapelanggan do
begin
Edit;
FieldByName('KodePelanggan').AsString:=EKodePelanggan.Text;
FieldByName('namapelanggan').AsString:=enamapelanggan.Text;
FieldByName('alamat').AsString:=Ealamat.Text;
FieldByName('nomertelepon').AsString:=Enomertelepon.text;
Post;
end;
Reset;
AutoNumber;
end;
end;
 Kode Untuk Tombol Hapus

procedure TFpelanggan.BitBtn4Click(Sender: TObject);


begin
if messageDlg('Apakah yakin data'+
''+dm.Qdatapelanggan.FieldByName('namapelanggan').AsString+' akan
dihapus?',MTConfirmation,[MByes,MBno],0)=mrYes then
begin
dm.Qdatapelanggan.Delete;
Reset;
AutoNumber;
end;
end;

 Kode Untuk DBgrid1 Event OnCellClick

procedure TFpelanggan.DBGrid1CellClick(Column: TColumn);


begin

eKodePelanggan.Text:=dm.Qdatapelanggan.FieldByName('KodePelanggan').A
sString;

Enamapelanggan.Text:=dm.Qdatapelanggan.FieldByName('namapelanggan').A
sString;
Ealamat.Text:=dm.Qdatapelanggan.FieldByName('alamat').AsString;

Enomertelepon.Text:=dm.Qdatapelanggan.FieldByName('nomertelepon').AsS
tring;
end;

 Kode Untuk Form event Onshow

procedure TFpelanggan.FormShow(Sender: TObject);


begin
Reset;
AutoNumber;
end;
Pada Form Umata ( Menu utama) tambahkan kode seperti dibawah ini.
procedure TFMenuUtama.D2Click(Sender: TObject);
begin
FPelanggan.showmodal;
end;
procedure TFMenuUtama.ToolButton2Click(Sender: TObject);
begin
FPelanggan.showmodal;
end;

Kini untuk form data pelanggan sudah selesai kemudian jalankan program dengan menekan
F9.
Membuat Aplikasi Penjualan (POS) dengan Delphi Part6

Joko Purnomo | 5:16 PM


| 5comments
Saya lanjutkan lagi untuk tutorial membuat aplikasi penjualan dengan delphi yang sempat
terhenti beberapa hari. Kali ini akan membuat form terakhir yang ada di menu master yaitu
data pengguna atau data pemakai dari aplikasi penjualan ini nanti.

Langsung saja kita mulai dengan medesain form seperti pada gambar dibawah ini.

Keterangan
Tambahkan uses Udm terlebih dahulu. Dengan cara klik File lalu Use Unit pilih Udm. Agar
bisa terkoneksi dengan database.

 Edit1 Name : Ekodepengguna


 Edit2 Name : Enamapengguna
 Edi3 Name : Enotelepon
 Edit4 Name : Epassword
 Button1 Caption : Tambah
 Button2 Caption : Simpan
 Button3 Caption : Ubah
 Button4 Caption : Hapus
 Button5 Caption : Tutup
 DBgrid1 Properties DataSoure Di isi dengan dm.DdataPengguna

Setelah propertis semua sudah diseting maka pada grid akan muncul field-field pada tabel
yang terkoneksi.

2. Pengkodean

 Membuat Procedure autoNumber, bersih, Checkedit


Procedure AutoNumber digunakan untuk nomer otomatis


procedure TFdataPengguna.AutoNumber;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tbpengguna';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(right(kodepengguna,5)) as kode from
tbpengguna';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
Ekodepengguna.Text:='US.'+kode;
end;

Procedure Bersih(reset) digunakan untuk membersihkan text pada Tedit atau


tampilan form kosong
procedure TFpelanggan.Reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if Components[i] is TEdit then
Tedit(Components[i]).Text :=''
end;
bitbtn1.Caption:='Tambah';
end;

function checkEdit digunakan untuk validasi TEdit apabila masih kosong maka
akan muncul peringatan
Function TFdataPengguna.CheckEdit;
var
i:integer;
begin

for i := 0 to ComponentCount -1 do
begin
if ( Components[i] is TEdit ) then
if Tedit(Components[i]).Text ='' then
begin
Showmessage(TEdit(Components[i]).Name +' masih kosong');
Exit;
end;
end;
Result:=True;
end;

 Kode Untuk Tombol Tambah

procedure TFdataPengguna.BitBtn1Click(Sender: TObject);


begin
if bitbtn1.Caption ='Tambah' then
begin
Reset;
AutoNumber;
bitbtn1.Caption:='Batal';
end else
begin
Reset;
AutoNumber;
end;
end;

 Kode Untuk Tombol Simpan

procedure TFdataPengguna.BitBtn2Click(Sender: TObject);


begin
if CheckEdit then
begin
with dm.QdataPengguna do
begin
Append;
FieldByName('kodepengguna').AsString:=Ekodepengguna.Text;
FieldByName('namapengguna').AsString:=Enamapengguna.Text;
FieldByName('notelepon').AsString:=eNotelepon.Text;
FieldByName('password').AsString:=Epassword.text;
Post;
end;
Reset;
AutoNumber;
end;
end;

 Kode Untuk Tombol Ubah

procedure TFdataPengguna.BitBtn3Click(Sender: TObject);


begin
if CheckEdit then
begin
with dm.QdataPengguna do
begin
Edit;
FieldByName('kodepengguna').AsString:=Ekodepengguna.Text;
FieldByName('namapengguna').AsString:=Enamapengguna.Text;
FieldByName('notelepon').AsString:=Enotelepon.Text;
Post;
end;
Reset;
AutoNumber;
end;
end;

 Kode Untuk Tombol Hapus

procedure TFdataPengguna.BitBtn4Click(Sender: TObject);


begin
if messageDlg('Apakah yakin data'+
''+dm.QdataPengguna.FieldByName('namapengguna').AsString+' akan
dihapus?',MTConfirmation,[MByes,MBno],0)=mrYes then
begin
dm.QdataPengguna.Delete;
Reset;
AutoNumber;
end;
end;

 Kode Untuk DBgrid1 Event OnCellClick

procedure TFdataPengguna.DBGrid1CellClick(Column: TColumn);


begin

EKodepengguna.Text:=dm.QdataPengguna.FieldByName('kodepengguna').AsSt
ring;

Enamapengguna.Text:=dm.QdataPengguna.FieldByName('namapengguna').AsSt
ring;

Enotelepon.Text:=dm.QdataPengguna.FieldByName('nomertelepon').AsStrin
g;
end;

 Kode Untuk Form event Onshow

procedure TFdataPengguna.FormShow(Sender: TObject);


begin
Reset;
AutoNumber;
end;
Pada Form Umata ( Menu utama) tambahkan kode seperti dibawah ini.
procedure TFMenuUtama.D3Click(Sender: TObject);
begin
FdataPengguna.showmodal;
end;
procedure TFMenuUtama.ToolButton3Click(Sender: TObject);
begin
FdataPengguna.showmodal;
end;

Kini untuk form Data Pengguna sudah selesai kemudian jalankan program dengan menekan
F9.

Untuk menambahkan form data pengguna kedalam project yang sebelumnya sudah di
download. lakukan dengan cara . Project > Add to Project tambahkan file yang akan
ditambahkan ke keproject.

Membuat Aplikasi Penjualan (POS) dengan Delphi Part7

Joko Purnomo | 7:36 PM


| 24comments
Kelanjutan dari artikel sebelumnya yang sempat tertunda beberapa hari karena situasi yang
lumayan repot.hehehe. Saya lanjutkan lagi artikel cara membuat aplikasi penjualan sederhana
dengan delphi ini. Setelah sebelumnya selesai membuat menu master maka selanjutnya adalah
mebuat menu transaksi yaitu pembelian dan penjualan.

Untuk pertama kita akan membuat form transaksi pembelian. Transaksi pembelian adalah
mencatat proses pembelian barang yang akan digunakan untuk menambahkan stok barang
berdasarkan barang yang dibeli atau kulakan. karena stok barang tidak dapat diubah
menggunakan menu data barang, maka saat mencatat atau memproses pembelian barang harus
disertai data yang sesungguhnya dan teliti dalam mengetikkan jumlah pembelian karena akan
sangat berpengaruh dengan harga dan stok barang yang disimpan.

Langsung saja untuk membuat form pembelian seperti pada gambar dibawah ini.

1. Form Transaksi Pembelian

Komponen yang digunakan

 Tedit1
 TCombobox
 TLabel
 Tbevel
 TStringgrid
 TBitbtn
 TButton
 TDateTimePicker

2. Form Cari Barang Beli


Komponen yang digunakan

 TEdit
 TLabel
 DBgrid

Langsung saja untuk pengkodean pada form transaksi pembelian.

A. Mebuat procedure reset, procedure creategrid, dan procedure noauto

- procedure reset

procedure TFpembelian.reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if (Components[i] is TEdit) and (TEdit(Components[i]).Tag = 0) then
Tedit(Components[i]).Text :=''
end;
bitbtn1.Caption:='Tambah';
Lrp.Caption:='Rp';
end;
-Procedure NoAuto

procedure TFpembelian.NoAuto;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tb_pembelian';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(right(kodepembelian,5)) as kode from
tb_pembelian';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
Ekodepembelian.Text:='PB.'+kode;
end;

- procedure createGrid

procedure TFpembelian.CreateGrid;
var
i,j:integer;
begin
with Sg do
begin
for i := 0 to colCount-1 do
for j := 0 to rowCount-1 do
Cells[i,j]:='';

ColCount:=6;
RowCount:=2;
Cells[0,0]:='Kode Barang';
Cells[1,0]:='Nama Barang';
Cells[2,0]:='Satuan';
Cells[3,0]:='Harga Beli';
Cells[4,0]:='Jumlah Beli';
Cells[5,0]:='Subtotal';
ColWidths[0]:=200;
ColWidths[1]:=300;
ColWidths[2]:=130;
ColWidths[3]:=100;
ColWidths[4]:=100;
ColWidths[5]:=150;
end;
end;

- Kode untuk tombol tambah

procedure TFpembelian.BitBtn1Click(Sender: TObject);


begin
reset;
CreateGrid;
NoAuto;
end;

- Kode untuk tombol simpan

procedure TFpembelian.BitBtn2Click(Sender: TObject);


var
i:integer;
begin
if Ekodepembelian.Text = '' then
Showmessage('Kode pembelian masih kosong')
else
if Sg.Cells[0,1]='' then
Showmessage('belum melakukan transaksi')
else
if Cbsupplier.Text ='' then
showmessage('supplier belum dimasukan')
else
begin
for i := 1 to sg.RowCount -1 do
begin
if sg.Cells[0,i]<>'' then
begin
with dm.Q1 do
begin

Close;
SQL.Clear;
SQL.Text:='insert into tb_detailpembelian
(kodepembelian,kodebarang,hargabeli,jumlah,subtotal)'+
'values
("'+ekodepembelian.Text+'","'+sg.Cells[0,i]+'","'+sg.Cells[3,i]+'","'+sg.Ce
lls[4,i]+'","'+sg.Cells[5,i]+'")';
ExecSQL;

Close;
SQL.Clear;
SQL.Text:='update tbarang set stok=stok+"'+sg.Cells[4,i]+'"
where kodebarang="'+sg.Cells[0,i]+'"';
ExecSQL;
end;
end;
end;
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='insert into tb_pembelian
values("'+ekodepembelian.Text+'","'+FormatDatetime('yyyy-mm-
dd',now)+'","'+lin.Caption+'","'+kodesupplier+'","'+Fmenuutama.StatusBar1.P
anels[1].Text+'")';
ExecSQL;
end;

Reset;
NoAuto;
CreateGrid;
Cbsupplier.Text:='';
end;
end;

- Kode untuk tombol batal item

procedure TFpembelian.BitBtn3Click(Sender: TObject);


begin
if messageDLg('Yakin item akan
dihapus?',mtConfirmation,[Mbyes,MBno],0)=Mryes then
begin
lin.Caption:=inttostr(strtoint(lin.Caption)-strtoint(sg.Cells
[5,sg.Row]));
sg.RowCount := sg.RowCount -1;
end;
end;
- Kode untuk Ehargabeli dan ejumlah

procedure TFpembelian.EhargabeliKeyPress(Sender: TObject; var Key: Char);


begin
if not (key in['0'..'9',#8,#10,#13]) then
Key:=#0;
end;

- Kode untuk form onShow

procedure TFpembelian.FormShow(Sender: TObject);


begin
Reset;
NoAuto;
cbsupplier.Clear;
dm.QdataSupplier.First;
while dm.QdataSupplier.Eof = False do
begin

cbsupplier.Items.Add(dm.QdataSupplier.FieldByName('namasupplier').AsString
);
dm.QdataSupplier.Next;
end;
cbsupplier.Text:='';
end;

- Kode untuk ejumlah event onKeyDown

procedure TFpembelian.EjumlahKeyDown(Sender: TObject; var Key: Word;


Shift: TShiftState);
begin
if Key = 13 then
begin
if (Ejumlah.Text <> '') and (ejumlah.Text <>'0') then
begin
Sg.Cells[0,sg.RowCount -1]:=Ekodebarang.Text;
Sg.Cells[1,sg.RowCount -1]:=Enamabarang.Text;
Sg.Cells[2,sg.RowCount -1]:=Esatuan.Text;
Sg.Cells[3,sg.RowCount -1]:=Ehargabeli.Text;
Sg.Cells[4,sg.RowCount -1]:=Ejumlah.Text;
Sg.Cells[5,sg.RowCount -1]:=inttostr(strtoint(Ejumlah.Text)*
strtoint(Ehargabeli.Text));
sg.RowCount := sg.RowCount +1;

Lin.Caption:=inttostr(strtoint(Lin.Caption)+(strtoint(Ejumlah.Text)*strtoin
t(ehargabeli.Text)));
reset;
if MessageDlg('Apakah ingin menambah
barang?',mtConfirmation,[mbyes,mbno],0)=mrYes then
FcariBarangBeli.ShowModal;
end else
Showmessage('Jumlah Belum dimasukan');
end;
end;

- Kode untuk tombol cari

procedure TFpembelian.Button1Click(Sender: TObject);


begin
FcariBarangBeli.Showmodal;
end;

B.Kemudian kode pada form cari barang beli

- Pada event Dbgrid klik 2x

procedure TFcariBarangBeli.DBGrid1DblClick(Sender: TObject);


begin
with Fpembelian do
begin
Ekodebarang.Text:=dm.QdataBarang.FieldValues['kodebarang'];
Enamabarang.Text:=dm.QdataBarang.FieldValues['namabarang'];
Esatuan.Text:=dm.QdataBarang.FieldValues['satuan'];
Ehargabeli.Text:=dm.QdataBarang.FieldValues['hargabeli'];
FcaribarangBeli.Close;
Ejumlah.SetFocus;
end;
end;
- Pada event Ecari onKeyUp

procedure TFcariBarangBeli.EcariKeyUp(Sender: TObject; var Key: Word;


Shift: TShiftState);
begin
with Dm.QdataBarang do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tbbarang where namabarang
like"%'+ecari.Text+'%"';
Open;
end;
end;

Setelah proses pengkodean sudah selesai untuk kedua form kemudian jalankan aplikasi. Bila
proses di ikuti dengan benar aplikasi akan berjalan dengan lancar. Lihat seperti gambar
dibawah ini.

Membuat Aplikasi Penjualan (POS) dengan Delphi Part8

Joko Purnomo | 6:18 PM | 14comments

Tanpa basa-basi langsung saja saya lanjutkan Tutorial Membuat Aplikasi Penjualan Dengan Delphi.
Proses ini adalah membuat transaksi penjualan.

1. Form Transaksi Penjualan

Komponen yang digunakan


 Tedit1
 TCombobox
 TLabel
 Tbevel
 TStringgrid
 TBitbtn
 TButton
 TDateTimePicker

2. Form Cari Barang Jual

Komponen yang digunakan

 TEdit
 TLabel
 DBgrid

A. Mebuat procedure reset, procedure creategrid, dan procedure noauto


Procedure Reset
procedure TFpenjualan.reset;
var
i:integer;
begin
for i := 0 to ComponentCount -1 do
begin
if (Components[i] is TEdit) and (TEdit(Components[i]).Tag = 0) then
Tedit(Components[i]).Text :=''
end;
bitbtn1.Caption:='Tambah';
Lrp.Caption:='Rp';
end;

Procedure Noauto

procedure TFpenjualan.NoAuto;
var
kode:String;
urut:integer;
begin
with dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tb_penjualan';
Open;
end;
if dm.Q1.RecordCount = 0 then urut :=1 else
if dm.Q1.RecordCount > 0 then
begin
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='select max(right(kodepenjualan,5)) as kode from
tb_penjualan';
Open;
end;
urut:=dm.Q1.FieldByName('kode').AsInteger +1;
end;
kode:=inttostr(urut);
kode:=Copy('00000'+kode,length('00000'+kode)-4,5);
Enotapenjualan.Text:='PJ.'+kode;
end;
Procedure CreateGrid

procedure TFpenjualan.CreateGrid;
var
i,j:integer;
begin
with Sg do
begin
for i := 0 to colCount-1 do
for j := 0 to rowCount-1 do
Cells[i,j]:='';

ColCount:=6;
RowCount:=2;
Cells[0,0]:='Kode Barang';
Cells[1,0]:='Nama Barang';
Cells[2,0]:='Satuan';
Cells[3,0]:='Harga';
Cells[4,0]:='Jumlah';
Cells[5,0]:='Subtotal';
ColWidths[0]:=200;
ColWidths[1]:=300;
ColWidths[2]:=130;
ColWidths[3]:=100;
ColWidths[4]:=100;
ColWidths[5]:=150;
end;
end;
- Kode untuk tombol tambah

procedure TFPenjualan.BitBtn1Click(Sender: TObject);


begin
reset;
CreateGrid;
NoAuto;
end;

Kode Untuk Tombol Simpan

procedure TFpenjualan.BitBtn2Click(Sender: TObject);


var
i:integer;
begin
if Enotapenjualan.Text = '' then
Showmessage('Kode pembelian masih kosong')
else
if Sg.Cells[0,1]='' then
Showmessage('belum melakukan transaksi')
else
if cbpelanggan.Text ='' then
showmessage('supplier belum dimasukan')
else
begin
for i := 1 to sg.RowCount -1 do
begin
if sg.Cells[0,i]<>'' then
begin
with dm.Q1 do
begin

Close;
SQL.Clear;
SQL.Text:='insert into tb_detailpenjualan
(kodepembelian,kodebarang,hargabeli,jumlah,subtotal)'+
'values
("'+Enotapenjualan.Text+'","'+sg.Cells[0,i]+'","'+sg.Cells[3,i]+'","'+sg.Ce
lls[4,i]+'","'+sg.Cells[5,i]+'")';
ExecSQL;

Close;
SQL.Clear;
SQL.Text:='update tbarang set stok=stok-"'+sg.Cells[4,i]+'"
where kodebarang="'+sg.Cells[0,i]+'"';
ExecSQL;
end;
end;
end;
with Dm.Q1 do
begin
Close;
SQL.Clear;
SQL.Text:='insert into tb_penjualan
values("'+Enotapenjualan.Text+'","'+FormatDatetime('yyyy-mm-
dd',now)+'","'+lin.Caption+'","'+kodesupplier+'","'+Fmenuutama.StatusBar1.P
anels[1].Text+'")';
ExecSQL;
end;

Reset;
NoAuto;
CreateGrid;
cbpelanggan.Text:='';
end;
end;
- Kode untuk tombol batal item
procedure TFpenjualan.BitBtn3Click(Sender: TObject);
begin
if messageDLg('Yakin item akan
dihapus?',mtConfirmation,[Mbyes,MBno],0)=Mryes then
begin
lin.Caption:=inttostr(strtoint(lin.Caption)-strtoint(sg.Cells
[5,sg.Row]));
sg.RowCount := sg.RowCount -1;
end;
end;
- Kode untuk Ehargabeli dan ejumlah

procedure TFpenjualan.EhargabeliKeyPress(Sender: TObject; var Key: Char);


begin
if not (key in['0'..'9',#8,#10,#13]) then
Key:=#0;
end;

Kode untuk form onShow

procedure TFpenjualan.FormShow(Sender: TObject);


begin
Reset;
NoAuto;
cbpelanggan.Clear;
dm.QdataPelanggan.First;
while dm.QdataPelanggan.Eof = False do
begin

cbpelanggan.Items.Add(dm.QdataPelanggan.FieldByName('namapelanggan').AsStri
ng );
dm.QdataPelanggan.Next;
end;
cbpelanggan.Text:='';
end;

- Kode untuk ejumlah event onKeyDown

procedure TFpenjualan.EjumlahKeyDown(Sender: TObject; var Key: Word;


Shift: TShiftState);
begin
if Key = 13 then
begin
if (Ejumlah.Text <> '') and (ejumlah.Text <>'0') then
begin
Sg.Cells[0,sg.RowCount -1]:=Ekodebarang.Text;
Sg.Cells[1,sg.RowCount -1]:=Enamabarang.Text;
Sg.Cells[2,sg.RowCount -1]:=Esatuan.Text;
Sg.Cells[3,sg.RowCount -1]:=Ehargabeli.Text;
Sg.Cells[4,sg.RowCount -1]:=Ejumlah.Text;
Sg.Cells[5,sg.RowCount -1]:=inttostr(strtoint(Ejumlah.Text)*
strtoint(Ehargabeli.Text));
sg.RowCount := sg.RowCount +1;
sg.Row := sg.RowCount -1;

Lin.Caption:=inttostr(strtoint(Lin.Caption)+(strtoint(Ejumlah.Text)*strtoin
t(ehargabeli.Text)));
Etotalbayar.Text:=Lin.Caption;
reset;
if MessageDlg('Apakah ingin menambah
barang?',mtConfirmation,[mbyes,mbno],0)=mrYes then
FcariBarangJual.ShowModal;
end else
Showmessage('Jumlah Belum dimasukan');
end;
end;

- Kode untuk tombol cari

procedure TFpenjualan.Button1Click(Sender: TObject);


begin
Fcaribarangjual.Showmodal;
end;

B.Kemudian kode pada form cari barang Jual


- Pada event Dbgrid klik 2x

procedure TFcaribarangjual.DBGrid1DblClick(Sender: TObject);


begin
with Fpenjualan do
begin
Ekodebarang.Text:=dm.QdataBarang.FieldValues['kodebarang'];
Enamabarang.Text:=dm.QdataBarang.FieldValues['namabarang'];
Esatuan.Text:=dm.QdataBarang.FieldValues['satuan'];
Ehargabeli.Text:=dm.QdataBarang.FieldValues['hargajual'];
FcaribarangJual.Close;
Ejumlah.SetFocus ;
end;

end;

- Pada event Ecari onKeyUp

procedure TFcaribarangjual.EcariKeyUp(Sender: TObject; var Key: Word;


Shift: TShiftState);
begin
with Dm.QdataBarang do
begin
Close;
SQL.Clear;
SQL.Text:='select * from tbbarang where namabarang
like"%'+ecari.Text+'%"';
Open;
end;
end;

Setelah selesai pengkodean jalankan program dengan menekean tombol F9. Maka hasilnya akan
seperti dibawah ini.

Membuat Aplikasi Penjualan Part9 ( Membuat Nota dengan FastReport)

Joko Purnomo | 9:15 PM | 22comments

Akhirnya ada waktu juga untuk meneruskan artikel ini. hampir sebulan artikel ini gak update, karena
ngerjain project gak selesai-selesai ... hehhe.

Artikel ini akan membahas pembuatan nota menggunakan fastereport, walaupun banyak cara untuk
pembuatan nota, tapi saya lebih senang dengan fastreport karena kemudahaan dalam ketika
mendesain nota.

Langsung saja langkah-langkah pembuatannya.


1. Tambahkan 2 Komponen ZQuery dan 2 Dataset seperti gambar dibawah ini.

2. Mengatur property SQL pada Qpenjualan. Lihat gambar dibawah

3. Mengatur Property SQL Pada QdetailPenjualan. Lihat gambar dibawah


4. Menambahkan komponen fastreport . 1 FrxReport dan 2 FrxDBDataset

5. Mengatur Properti FrxDBDataset ( Data Penjualan ).

6. Mengatur Properti pada DetailPenjualan


7. Membuat Desain Nota ( Klik 2 kali pada komponen FrxReport1)

8. Menambahkan Dataset pada master Data dan detail data

9. Menamabahkan TFrxMemoView untuk menampilkan Data Penjualanya. buat format Sepert


gambar dibawah.
10. Setelah semua sudah diseting kemudian simpan dalam folderaplikasi\laporan\nota.fr3.

11. Preview Nota seperti pada gambar dibawah ini.


12. Pemanggilan pada form penjualan.

-Tambahkan procedure cetakNota. lihat gambar

- Tekan Ctrl+shift+C. Kemudian tambahkan kode dibawah ini.

procedure TFpenjualan.CetakNota;
begin
with dm.Qpenjualan do
begin
Close;
SQL.Clear;
SQL.Add('select * from tb_penjualan where
kodepenjualan="'+Enotapenjualan.Text+'"');
Open;
end;
DM.QdetailPenjualan.Active:=False;
DM.QdetailPenjualan.Active:=True;

dm.frxReport1.LoadFromFile(ExtractFilePath(Application.ExeName)+'Laporan\no
ta.fr3');
dm.frxReport1.ShowReport();
end;
- pada tombol simpan sisipkan kode dibawah ini.

Anda mungkin juga menyukai