Form Peminjaman digunakan untuk melakukan transaksi
peminjaman. Form ini menggunakan konsep master detail
gabungan dari table Pinjam dan DPinjam. Pada form ini
metode input transaksi dibuat semudah mungkin. Selain itu
pada form ini disediakan fasilitas pencarian dan informasi
jumlah stok koleksi yang tersedia.
Langkah-langkah :
1. Pastikan project Rental.dpr telah dibuka. 2. Buat form baru, klik menu File – New – Form.
3. Ubah property form yang baru dibuat seperti pada table di bawah ini : Komponen Property Value
Form1 Caption Peminjaman BorderStyle bsSingle
Name FPinjam
Position poDesktopCenter WindowState wsMaximized
4. Klik menu File – Save All untuk menyimpan project. Simpan Unit1 menjadi UFPinjam.pas dalam folder Rental.
5. Klik menu File – Use Unit, pilih UFUtama, klik OK untuk melanjutkan. 6. Copy dan Paste ToolBar1 dari form FMember ke dalam FPinjam, atur
kembali property seperti table di bawah ini :
Komponen Tab Parent Property Value SpeedButton3 Additional ToolBar1 Caption Nota SpeedButton4 Additional ToolBar1 Caption Tutup
7. Tambahkan 3 buah Groupbox dari tab Standard ke dalam FPinjam, atur property seperti table di bawah ini :
Komponen Tab Parent Property Value GroupBox1 Standard FPinjam Align alTop
Caption
GroupBox2 Standard FPinjam Align alLeft
Caption Koleksi Yang Dipinjam GroupBox3 Standard FPinjam Align alBottom
Caption
8. Tambahkan 1 buah Splitter dari tab Additional ke dalam FPinjam.
9. Tambahkan 1 buah GroupBox dari tab Standar ke dalam FPinjam, atur property seperti table di bawah ini :
Komponen Tab Parent Property Value GroupBox4 Standard FPinjam Align alClient
10. Tambahkan 2 buah ADOTable dan 4 buah ADOQuery, atur property seperti table di bawah ini :
Komponen Tab Parent Property Value ADOTable1, ADOTable2, ADOQuery1, ADOQuery2, ADOQuery3, ADOQuery4 Connection FUtama.ADOConnection1
ADOTable1 ADO FPinjam Name Pinjam TableName Pinjam ADOTable2 ADO FPinjam Name DPinjam
TableName DPinjam ADOQuery1 ADO FPinjam Name qMember
SQL Select Member.MemberID, Member.Nama, Member.Alamat, Member.Kota, Member.Handphone From Member Order by Member.Nama
ADOQuery2 ADO FPinjam Name qKaryawan
SQL Select Karyawan.KaryawanID,
Karyawan.Nama From Karyawan
Order by Karyawan.Nama
ADOQuery3 ADO FPinjam Name qKoleksi
SQL Select Koleksi.KoleksiID, Koleksi.Judul, Koleksi.HargaSewa, Koleksi.LamaSewa From Koleksi Order by Koleksi.Judul
ADOQuery4 ADO FPinjam Name qStock
SQL Select Koleksi.KoleksiID, Koleksi.Judul, Koleksi.PemeranUtama, Koleksi.Kategori, Koleksi.JenisKoleksi, (Koleksi.Jumlah - (Select Count(DPinjam.DPinjamID) From Pinjam, DPinjam Where (Pinjam.PinjamID = DPinjam.PinjamID) and (DPinjam.KoleksiID = Koleksi.KoleksiID) and (DPinjam.KembaliID = 0))) as stock From Koleksi Where
(Koleksi.Judul like :Judul) Or (Koleksi.PemeranUtama like :PemeranUtama) Or
(Koleksi.Kategori like :Kategori) Or (Koleksi.JenisKoleksi like
Komponen Tab Parent Property Value
Order by Koleksi.Judul, Koleksi.PemeranUtama
11. Pilih qStock pada Object TreeView, klik tombol ellipsis pada property Parameters untuk membuka jendela Edit Parameters, ubah property seperti table di bawah ini :
Komponen Property Value TParameters[0] DataType ftWideString TParameters[1] DataType ftWideString TParameters[2] DataType ftWideString TParameters[3] DataType ftWideString
12. Buat persistent field table Pinjam, klik dua kali Pinjam pada Object TreeView untuk membuka field editor, klik kanan dan pilih Add All Fields.
13. Dengan cara yang sama dengan point 12, buat persistent field table DPinjam, qMember, qKaryawan, qKoleksi dan qStock.
14. Klik dua kali Pinjam pada Object TreeView untuk membuka field editor, pilih field TotalSewa, ubah property seperti table di bawah ini :
Komponen Property Value PinjamTotalSewa Currency True
15. Klik dua kali DPinjam pada Object TreeView untuk membuka field editor, pilih field HargaSewa, ubah property seperti table di bawah ini :
Komponen Property Value DPinjamHargaSewa Currency True
16. Tambahkan 3 buah DataSource dari tab Data Access, ubah property seperti table di bawah ini ;
Komponen Tab Parent Property Value Datasource1 Data Access FPinjam Dataset Pinjam DataSource2 Data Access FPinjam Dataset DPinjam DataSource3 Data Access FPinjam Dataset qStock
17. Buat hubungan master detail antara table Pinjam dan DPinjam, Pilih table DPinjam pada Object TreeView, ubah property seperti table di bawah ini :
Komponen Property Value DPinjam MasterSource Datasource1
18. Pilih table DPinjam pada Object TreeView, klik tombol ellipsis pada property MasterField untuk membuka Field Link Designer. Pilih PinjamID pada Detail Fields dan PinjamID pada Master Fields. Klik Add untuk menambahkan ke dalam Joined Fields. Klik OK untuk melanjutkan.
19. Tambahkan field baru NamaMember pada table Pinjam, klik dua kali Pinjam pada Object TreeView untuk membuka field editor, klik kanan dan pilih New Fields, lengkapi informasi pada jendela New Field seperti table di bawah ini :
Field Section Property Value NamaMember Field Properties Name NamaMember
Type String
Size 30
Field type Field type Lookup Lookup Definition Key Fields MemberID
Dataset qMember Lookup Keys MemberID Result Field Nama
20. Tambahkan field baru Alamat pada table Pinjam, sama seperti point 19, lengkapi informasi pada jendela New Field seperti table di bawah ini :
Field Section Property Value Alamat Field Properties Name Alamat
Type String
Size 50
Field type Field type Lookup Lookup Definition Key Fields MemberID
Dataset qMember Lookup Keys MemberID Result Field Alamat
21. Tambahkan field baru Kota pada table Pinjam, lengkapi informasi pada jendela New Field seperti table di bawah ini :
Field Section Property Value
Kota Field Properties Name Kota
Type String
Size 30
Dataset qMember Lookup Keys MemberID Result Field Kota
22. Tambahkan field baru Handphone pada table Pinjam, lengkapi informasi pada jendela New Field seperti table di bawah ini :
Field Section Property Value Handphone Field Properties Name Handphone
Type String
Size 30
Field type Field type Lookup Lookup Definition Key Fields MemberID
Dataset qMember Lookup Keys MemberID Result Field Handphone
23. Tambahkan field baru NamaKaryawan pada table Pinjam, lengkapi informasi pada jendela New Field seperti table di bawah ini :
Field Section Property Value
NamaKaryawan Field Properties Name NamaKaryawan Type String
Size 30
Field type Field type Lookup Lookup Definition Key Fields KaryawanID
Dataset qKaryawan Lookup Keys KaryawanID Result Field Nama
24. Klik dua kali DPinjam pada Object TreeView untuk membuka Field Editor, tambahkan field baru JudulKoleksi pada table DPinjam, lengkapi informasi pada jendela New Field seperti table di bawah ini :
Field Section Property Value JudulKoleksi Field Properties Name JudulKoleksi
Type String
Size 100
Field type Field type Lookup Lookup Definition Key Fields KoleksiID
Dataset qKoleksi Lookup Keys KoleksiID Result Field Judul
25. Tambahkan field baru HargaSewaKoleksi pada table DPinjam, lengkapi informasi pada jendela New Field seperti table di bawah ini :
Field Section Property Value
HargaSewaKoleksi Field Properties Name HargaSewaKoleksi Type Currency
Field type Field type Lookup Lookup Definition Key Fields KoleksiID
Lookup Keys KoleksiID Result Field HargaSewa
26. Tambahkan field baru LamaSewaKoleksi pada table DPinjam, lengkapi informasi pada jendela New Field seperti table di bawah ini :
Field Section Property Value
LamaSewaKoleksi Field Properties Name LamaSewaKoleksi
Type Integer
Field type Field type Lookup Lookup Definition Key Fields KoleksiID
Dataset qKoleksi Lookup Keys KoleksiID Result Field LamaSewa
27. Klik dua kali Pinjam pada Object TreeView untuk membuka field Editor. Pilih field PinjamID, TglPinjam, MemberID, NamaMember, Alamat, Kota dan Handphone, lakukan drag and drop ke dalam GroupBox1.
28. Tambahkan DBGrid1 dari tab Data Control ke dalam GroupBox2, atur property seperti table di bawah ini :
Komponen Tab Parent Property Value
DBGrid1 Data Control GroupBox2 Align alClient
Datasource DataSource2
Options.dgRowSelect True Options.dgAlwaysShowSelection True 29. Klik dua kali DBGrid1 pada Object TreeView untuk membuka Column
Editor, tambahkan 4 buah column dengan mengklik kanan Column Editor, pilih Add, ubah property masing-masing kolom seperti table di bawah ini :
Komponen Property Value
DBGrid1.Columns[0] FieldName KoleksiID Title.Caption ID
DBGrid1.Columns[1] FieldName JudulKoleksi Title.Caption Judul Koleksi DBGrid1.Columns[2] FieldName TglHarusKembali
Title.Caption Tgl Harus Kembali DBGrid1.Columns[3] FieldName HargaSewa
Title.Caption Harga Sewa DBGrid1.Columns[0], DBGrid1.Columns[1], DBGrid1.Columns[2], DBGrid1.Columns[3] Title.Alignment taCenter Title.Font.Style.fsBold True
30. Klik dua kali Pinjam pada Object TreeView untuk membuka field editor, lakukan drag dan drop field NamaKaryawan dan TotalSewa ke dalam GroupBox3.
31. Tambahkan DBNavigator1 dari tab Data Control ke dalam GroupBox3, atur property seperti table di bawah ini :
Komponen Tab Parent Property Value DBNavigator1 Data Control GroupBox3 Align alBottom
Datasource Datasource1 Flat True VisibleButtons.nbInsert False VisibleButtons.nbDelete False VisibleButtons.nbEdit False VisibleButtons.nbPost False VisibleButtons.nbCancel False VisibleButtons.nbRefresh False
32. Tambahkan ToolBar2 dari tab Win32 ke dalam GroupBox4, atur property seperti table di bawah ini :
Komponen Tab Parent Property Value ToolBar2 Win32 GroupBox4 Align alBottom
33. Tambahkan Edit1 dari tab Standard ke dalam ToolBar2, atur property seperti table di bawah ini :
Komponen Tab Parent Property Value Edit1 Standard ToolBar2 Text
34. Tambahkan DBGrid2 dari tab Data Control ke dalam GroupBox4, atur property seperti table di bawah ini :
Komponen Tab Parent Property Value
DBGrid2 Data Control GroupBox4 Align alClient
Datasource DataSource3
Options.dgRowSelect False
Options.dgAlwaysShowSelection False
Options.dgEditing True
35. Klik dua kali DBGrid2 untuk membuka column editor, klik kanan pada column editor, kemudian pilih Add All Fields, atur susunan column seperti gambar di bawah ini :
Ubah property masing-masing kolom seperti table di bawah ini :
Komponen Property Value
DBGrid2.Columns[0] Title.Caption ID
DBGrid2.Columns[1] Title.Caption Judul Koleksi DBGrid2.Columns[2] Title.Caption Stock
Komponen Property Value
DBGrid2.Columns[3] Title.Caption Pemeran Utama DBGrid2.Columns[4] Title.Caption Kategori DBGrid2.Columns[5] Title.Caption Jenis Koleksi DBGrid2.Columns[0], DBGrid2.Columns[1], DBGrid2.Columns[2], DBGrid2.Columns[3], DBGrid2.Columns[4], DBGrid2.Columns[5] Title.Alignment taCenter Title.Font.Style.fsBold True
36. Atur property untuk komponen Data Control seperti table di bawah ini : Komponen Property Value
DBEdit1, DBLookUpCombobox2, DBLookupCombobox3, DBLookupCombobox4, DBLookUpCombobox5, DBEdit4 Enabled False
37. Atur layout form FPinjam seperti gambar di bawah ini :
38. Tambahkan unit DateUtils pada blok Uses di unit UFPinjam, lihat gambar berikut :
39. Tambahkan variable PinjamID dengan type Integer pada blok Public di unit UFPinjam.
40. Buat procedure UpdateqStock dan procedure UpdateTotalSewa pada blok Private di unit UFPinjam, tekan Ctrl+Shift+C untuk membuat blok procedure (lihat gambar di atas), ketikkan perintah seperti table di bawah ini :
Komponen Event Code
FPinjam UpdateqStock procedure TFPinjam.UpdateqStock; begin qStock.Close; qStock.Parameters[0].Value := '%' + Edit1.Text + '%'; qStock.Parameters[1].Value := '%' + Edit1.Text + '%'; qStock.Parameters[2].Value := '%' + Edit1.Text + '%'; qStock.Parameters[3].Value := '%' + Edit1.Text + '%'; qStock.Open; end;
UpdateTotalSewa procedure TFPinjam.UpdateTotalSewa; var TempTotal: Real; PrevRecord: TBookmark; begin PrevRecord := DPinjam.GetBookmark; try DPinjam.DisableControls; DPinjam.First; TempTotal := 0;
Komponen Event Code begin
TempTotal := TempTotal + DPinjamHargaSewa.Value; DPinjam.Next;
end;
If not (Pinjam.State in dsEditModes) then Pinjam.Edit; PinjamTotalSewa.Value := TempTotal;
finally
DPinjam.EnableControls; if PrevRecord <> nil then begin DPinjam.GoToBookmark(PrevRecord); DPinjam.FreeBookmark(PrevRecord); end; end; end;
41. Pilih FPinjam pada Object TreeView, buat event onCreate, onShow dan onClose, ketikkan perintah seperti table di bawah ini :
Komponen Event Code
FKoleksi onCreate procedure TFPinjam.FormCreate(Sender: TObject); begin
PinjamID := 0; end;
onShow procedure TFPinjam.FormShow(Sender: TObject); begin Pinjam.Open; DPinjam.Open; qMember.Open; qKaryawan.Open; qKoleksi.Open; UpdateqStock;
If PinjamID > 0 then Pinjam.Locate('PinjamID', PinjamID, []) else Pinjam.Insert;
end;
onClose procedure TFPinjam.FormClose(Sender: TObject; var Action: TCloseAction); begin Pinjam.Close; DPinjam.Close; qMember.Close; qKaryawan.Close; qKoleksi.Close; qStock.Close; end;
42. Pilih SpeedButton1, SpeedButton2, SpeedButton3 dan SpeedButton4 pada Object TreeView, buat event onClick, ketikkan perintah seperti table di bawah ini :
Komponen Event Code SpeedButton1,
SpeedButton2, SpeedButton3, SpeedButton4
onClick procedure TFPinjam.SpeedButton1Click(Sender: TObject); begin
Case (Sender as TSpeedButton).Tag of 1 : Pinjam.Post;
2 : Pinjam.Delete; 3 : ;
4 : Pinjam.Cancel; End;
If (Sender as TSpeedButton).Tag in [2,4] then Close; end;
43. Pilih Pinjam pada Object TreeView, buat event BeforeDelete dan onNewRecord, ketikkan perintah seperti table di bawah ini :
Komponen Event Code
Pinjam BeforeDelete procedure TFPinjam.PinjamBeforeDelete(DataSet: TDataSet); begin
If MessageDlg('Hapus data?',mtConfirmation, [mbYes, mbNo], 0) = mrNo
then Abort; end;
onNewRecord procedure TFPinjam.PinjamNewRecord(DataSet: TDataSet); begin
If DBEdit3.Enabled then ActiveControl := DBEdit3; PinjamTglPinjam.Value := Today;
PinjamTotalSewa.Value := 0;
PinjamKaryawanID.Value := FUtama.KaryawanID; end;
44. Pilih DPinjam pada Object TreeView, buat event AfterDelete, AfterPost, BeforeDelete dan onNewRecord, ketikkan perintah seperti table di bawah ini :
Komponen Event Code
DPinjam AfterDelete procedure TFPinjam.DPinjamAfterDelete(DataSet: TDataSet); begin
UpdateTotalSewa; end;
AfterPost procedure TFPinjam.DPinjamAfterPost(DataSet: TDataSet); begin
UpdateTotalSewa; end;
BeforeDelete procedure TFPinjam.DPinjamBeforeDelete(DataSet: TDataSet); begin
If MessageDlg('Hapus data?',mtConfirmation, [mbYes, mbNo], 0) = mrNo then Abort else UpdateqStock; end;
onNewRecord procedure TFPinjam.DPinjamNewRecord(DataSet: TDataSet); begin
DPinjamPinjamID.Value := PinjamPinjamID.Value; end;
45. Pilih Datasource1 pada Object TreeView, buat event onStateChange, ketikkan perintah seperti table di bawah ini :
Komponen Event Code
DataSource1 onStateChange procedure TFPinjam.DataSource1StateChange(Sender: TObject); begin
SpeedButton1.Enabled := (Pinjam.State in dsEditModes) and (FUtama.HakAkses in [1,2]);
SpeedButton2.Enabled := (Pinjam.State in [dsBrowse]) and (FUtama.HakAkses in [1,2]);
SpeedButton3.Enabled := (Pinjam.State in [dsBrowse]) and (FUtama.HakAkses in [1,2]); DBEdit3.Enabled := FUtama.HakAkses in [1,2]; DBLookUpCombobox1.Enabled := FUtama.HakAkses in [1,2]; DBGrid1.Enabled := FUtama.HakAkses in [1,2]; DBGrid2.Enabled := FUtama.HakAkses in [1,2]; Edit1.Enabled := FUtama.HakAkses in [1,2]; DBNavigator1.Enabled := FUtama.HakAkses in [2]; end;
46. Pilih DBGrid1 pada Object TreeView, buat event onDblClick, ketikkan perintah seperti table di bawah ini :
Komponen Event Code
DBGrid1 onDblClick procedure TFPinjam.DBGrid1DblClick(Sender: TObject); begin
DPinjam.Delete; end;
47. Pilih DBGrid2 pada Object TreeView, buat event onDblClick, ketikkan perintah seperti table di bawah ini :
Komponen Event Code
DBGrid2 onDblClick procedure TFPinjam.DBGrid2DblClick(Sender: TObject); begin
If PinjamMemberID.Value = 0 then Begin
MessageDlg('Silakan Pilih Member!', mtInformation, [mbOK], 0); Abort;
End;
If qStockStock.Value > 0 then Begin
If Pinjam.State in dsEditModes then Pinjam.Post; DPinjam.Insert; DPinjamKoleksiID.Value := qStockKoleksiID.Value; DPinjamHargaSewa.Value := DPinjamHargaSewaKoleksi.Value; DPinjamTglHarusKembali.Value := PinjamTglPinjam.Value + DPinjamLamaSewaKoleksi.Value; DPinjamKembaliID.Value := 0; DPinjam.Post; UpdateqStock;
Komponen Event Code
Else MessageDlg('Stock koleksi kosong!', mtInformation, [mbOK], 0); end;
48. Pilih Edit1 pada Object TreeView, buat event onKeyPress, ketikkan perintah seperti table di bawah ini :
Komponen Event Code
Edit1 onKeyPress procedure TFPinjam.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 then UpdateqStock; end;
49. Kembali ke form FUtama, klik View – Forms, pilih FUtama, klik OK untuk melanjutkan.
50. Klik menu File – Use Unit, pilih FPinjam, klik OK untuk melanjutkan. 51. Pilih Peminjaman1 pada Object TreeView, buat event onClick, ketikkan
perintah seperti table di bawah ini : Komponen Event Code
Peminjaman1 onClick procedure TFUtama.Peminjaman1Click(Sender: TObject); begin
FPinjam.ShowModal; end;
52. Pilih SpeedButton3 pada Object TreeView, buat event onClick, ketikkan perintah seperti table di bawah ini :
Komponen Event Code
SpeedButton3 onClick procedure TFUtama.SpeedButton3Click(Sender: TObject); begin
FPinjam.ShowModal; end;