Anda di halaman 1dari 61

Membuat Aplikasi Penjualan (POS) dengan Delphi

Part1
Joko Purnomo | 2:45 AM | 9comments

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,
nomertelepon ). kodepelanggan sebagai primary key

alamat,

3. tbpengguna nantinya digunakan untuk menyimpan Data Pengguna Aplikasi


Terdiri dari Field-field: ( kodepengguna, namapengguna,
password). kodepenggunasebagai primary key

notelepon,

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,
jumlah,subtotal). idsebagai primary key

kodebarang,

hargabeli,

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 setiapButton 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
di ToolBar sesuai keinginan.

setiap Button yang

ada

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 | 23comments

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 propertiesConnection 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 | 8comments

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
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

klik

File

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
Joko Purnomo | 7:48 PM | 3comments

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
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

klik

File

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 penggunaatau 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
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

klik

File

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 | 21comments

Kelanjutandariartikelsebelumnyayangsempattertundabeberapaharikarenasituasiyang
lumayanrepot.hehehe.Sayalanjutkanlagiartikelcaramembuataplikasipenjualansederhana
dengan delphi ini. Setelah sebelumnya selesai membuat menu master maka selanjutnya
adalahmebuatmenutransaksiyaitupembeliandanpenjualan.
Untukpertamakitaakanmembuatformtransaksipembelian.Transaksipembelianadalah
mencatatprosespembelianbarangyangakandigunakanuntukmenambahkanstokbarang
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
karenaakansangatberpengaruhdenganhargadanstokbarangyangdisimpan.

Langsungsajauntukmembuatformpembeliansepertipadagambardibawahini.
1.FormTransaksiPembelian

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.Cells[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.Panels[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)*strtoint(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.

Pembuatan transaksi pembelian sudah selesai. Maaf bahasa acak - acakan.


semoga para delphier dapat memahaminya... :D

Membuat Aplikasi Penjualan (POS) dengan Delphi


Part8
Joko Purnomo | 6:18 PM | 12comments

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.Cells[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.Panels[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)*strtoint(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 | 19comments

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\nota.fr3');

dm.frxReport1.ShowReport();
end;

- pada tombol simpan sisipkan kode dibawah ini.

13. Proses pembuatan nota sudah selesai. kemudian jalankan program. kemudian
lakukan proses transaksi penjualan.

Anda mungkin juga menyukai