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
tambahkan procedure Di private seperti dibawah:
Script untuk tombol HapusLangsung 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.
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;
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.
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
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
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
30 comments:
ga ngerti gan..
wiii mainnya di delphi 0.0)d
saya ikut nyimak aja deh, semoga kecipretan ilmunya
hehehe... baru belajar juga kang,,
mau nanya gan
Procedure Auto Number
procedure TFdatabarang.AutoKode;
d masukan d mana ya? baru belajar, mohon pencerahanx :)
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.
mau tanya lg gan :D
untuk Q1 d data module fungsix apa ya?
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;
untuk procedure Reset;
mmg tidak d masukan code?
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.
sip gan, trima kasih :D
untuk :
TFMenuUtama.M2Click
TFMenuUtama.ToolButton1Click
ini bagaimana caranya.?
tolong lebih detailnya boss.
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,
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..
maaf gan, apa disini kita harus membuat new vcl forms lagi...hehehe maaf masih newbie
Iya mas. Tambhkan new form di aplikasi
mas itu file save2'an unit nya ditaruh di folder berbeda atau dijadiin satu
Iya om . . Satu folder
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... :)
iya mas... memang yang di tampilin nama suppliernya.
dari nama supplier nanti. akan diambil kodesupplier dari tabel supplier.
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.
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..
ne gak mau autonumber salha function
SQL.Text:='select max(rigth(kodebarang,3)) as kode from tbarang';
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
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 :)
maksudnya Q1 itu tu apa ya mas?
maksudnya itu buat yang mana ya?
Prosedure auto Number ngoding ya di mana, Yang lain sudah paham
Q1 nya ga jelas mas sql nya di isi apa ?
Post a Comment