Home » , , , , , , , , » Membuat Aplikasi Penjualan (POS) dengan Delphi Part3

Membuat Aplikasi Penjualan (POS) dengan Delphi Part3

Unknown | 8:14 PM | 30comments
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.

Membuat Koneksi dengan Zeos




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

Aplikasi Penjualan


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:

Aplikasi Penjualan

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('kodesupplier').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('kodesupplier').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.

Uses unit

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.


Sedot Source Code
Baca Juga : Membuat Aplikasi Penjualan (POS) dengan Delphi Part4
Share this article :

30 comments:

Anonymous said...

ga ngerti gan..

Anonymous said...

wiii mainnya di delphi 0.0)d
saya ikut nyimak aja deh, semoga kecipretan ilmunya

Unknown said...

hehehe... baru belajar juga kang,,

rendy septiyadi kalaena said...

mau nanya gan

Procedure Auto Number

procedure TFdatabarang.AutoKode;

d masukan d mana ya? baru belajar, mohon pencerahanx :)

Unknown said...

Bikin Procedure autoKode dulu gan.
Diletakana di public declaration
atau di private declaration gak papa.

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

kaya diatas gan .. terus tekan Ctrl+Shift+C aja ...

nanti otomatis ... nulis procedure dibawah implementasi. tinggal masukin codenya gan.

rendy septiyadi kalaena said...

mau tanya lg gan :D
untuk Q1 d data module fungsix apa ya?

Unknown said...

Itu untuk eksekusi Query aja gan.
Propertis SQL nya saya kosongkan.
misalnya.
with Dm.Q1 do
begin
Close;
SQL.clear;
SQL.add('select * from tbarang');
Open;
end;

rendy septiyadi kalaena said...

untuk procedure Reset;
mmg tidak d masukan code?

Unknown said...

Oh .... iya maaf bang. itu ada kodenya. si program ada kodenya bang.
tapi lupa nulis disini. hehehe.
itu kode untuk membersihkan semua kotak text edit bang. atau ketika load form sumua kolom pada formdi kosongin gitu bang.

rendy septiyadi kalaena said...

sip gan, trima kasih :D

Unknown said...

untuk :
TFMenuUtama.M2Click
TFMenuUtama.ToolButton1Click

ini bagaimana caranya.?
tolong lebih detailnya boss.

Unknown said...

Udah ada gambarnya kan mas??
itu di menu utama mas..
pada mainmenunya... sama toolbar.
kalo di data barang gak ada procedure itu,,, dibaca lagi yang teliti ya mas,

Unknown said...

maaf gan nanya lagi..
punya saya gk bisa baca "function" alias error kalo d run.
ada yg lain gk..
saya pakai sqlyog.

terima kasih banyak sebelumnya..

Muh Lubabuddin said...

maaf gan, apa disini kita harus membuat new vcl forms lagi...hehehe maaf masih newbie

Unknown said...

Iya mas. Tambhkan new form di aplikasi

Unknown said...

mas itu file save2'an unit nya ditaruh di folder berbeda atau dijadiin satu

Unknown said...

Iya om . . Satu folder

Unknown said...
This comment has been removed by the author.
Unknown said...

gan pada tbl_barang yg ada pada database itu kan ada kode_supplier,,,
tp kok di form gak ada kodeSuppllier adanya supplier aja....
n kalo ada kok supplier isinya wangi gan... mohon penjelasanya...
dan satu lgi gan di combobok satuan ama combobok supplier, itemnya apa aja gan???
masih baru belajar gan... :)

Unknown said...

iya mas... memang yang di tampilin nama suppliernya.
dari nama supplier nanti. akan diambil kodesupplier dari tabel supplier.

Unknown said...

maaf mas saya mau tanya. pada form barang yang saya buat, ketika database barang terdapat isinya ketika di run form tersebut muncul error "[MySQL][ODBC 5.3(a)Driver][mysql-5.1.41]FUNCTION kelontong.right does mot exist."
sedangkan bila database kosong dapat berjalan normal.
terimakasih mas.

Unknown said...

Gan mau nanya.. kalo saya kan bikin databasenya di access, trus, saya koneksikan ke delphi, databasenya udah nampil.. nah yang saya bingunnya di kode yg agan pake, tentu dari kode yang agan pake perlu di rombak lagi yah Gan.. yang mananya aja yang perlu di rubah ya gan.. trimksih..

Unknown said...

ne gak mau autonumber salha function
SQL.Text:='select max(rigth(kodebarang,3)) as kode from tbarang';

Unknown said...

maaf mas mau tanya, kok di project saya ada warning error nya,
[Warning] Udm.pas(82): Variabel 'urut' might not have been initialized
[Warning] Udm.pas(111): Return value fo function 'Tform1.CheckEdit' might be underfined

Hehe maaf baru belajar. :D

Unknown said...

mau nanya, ko pas d run trs nginputin mau d simpan debbugger, 'Syntax error (missing operator) in query expression 'max(rigth(Kode Barang,5))''.

itu kenapa ya?? untuk Kode Barang itu sya pke sesuai database yang saya buat..
mohon jawabannya :)

Unknown said...

maksudnya Q1 itu tu apa ya mas?

Unknown said...

maksudnya itu buat yang mana ya?

Unknown said...

Prosedure auto Number ngoding ya di mana, Yang lain sudah paham

Azriel said...
This comment has been removed by the author.
Azriel said...

Q1 nya ga jelas mas sql nya di isi apa ?

 
Copyright © 2011. TUTORIAL DELPHI DAN DATABASE - All Rights Reserved