• Tidak ada hasil yang ditemukan

Membuat Form Pengembalian

Dalam dokumen MODUL KULIAH PEMROGRAMAN VISUAL 1 (Halaman 161-173)

Form Pengembalian digunakan untuk melakukan transaksi

pengembalian. Seperti Form Peminjaman, form ini juga

menggunakan konsep master detail gabungan dari table

Kembali dan DPinjam. Pada form ini metode input

transaksi dibuat semudah mungkin. Pada bagian kanan

terdapat daftar koleksi yang belum dikembalikan oleh

member bersangkutan.

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 Pengembalian BorderStyle bsSingle

Name FKembali

Position poDesktopCenter WindowState wsMaximized

4. Klik menu File – Save All untuk menyimpan project. Simpan Unit1 menjadi UFKembali.pas dalam folder Rental.

5. Klik menu File – Use Unit, pilih UFUtama, klik OK untuk melanjutkan. 6. Copy dan Paste ToolBar1 dari form FPinjam ke dalam FKembali.

7. Tambahkan 3 buah GroupBox1 dari tab Standard ke dalam FKembali, atur property seperti table di bawah ini :

Komponen Tab Parent Property Value GroupBox1 Standard FKembali Align alTop

Caption

GroupBox2 Standard FKembali Align alLeft

Caption Koleksi Yang Dikembalikan GroupBox3 Standard FKembali Align alBottom

Caption

8. Tambahkan 1 buah Splitter dari tab Additional ke dalam FKembali. 9. Tambahkan 1 buah GroupBox dari tab Standard ke dalam FKembali, atur

property seperti table di bawah ini :

Komponen Tab Parent Property Value GroupBox4 Standard FPinjam Align alClient

Caption Koleksi Belum Kembali 10. Tambahkan 3 buah ADOTable dan 4 buah ADOQuery atur property

seperti table di bawah ini :

Komponen Tab Parent Property Value ADOTable1, ADOTable2, ADOTable3, ADOQuery1, ADOQuery2, ADOQuery3, ADOQuery4 Connection FUtama.ADOConnection1

ADOTable1 ADO FKembali Name Kembali TableName Kembali ADOTable2 ADO FKembali Name DKembali

TableName DPinjam ADOTable3 ADO FKembali Name DPinjam

CursorLocation clUseServer TableName DPinjam ADOQuery1 ADO FKembali Name qMember

SQL Select Member.MemberID, Member.Nama, Member.Alamat, Member.Kota, Member.Handphone From Member Order by Member.Nama

ADOQuery2 ADO FKembali Name qKaryawan

SQL Select Karyawan.KaryawanID,

Karyawan.Nama From Karyawan

Order by Karyawan.Nama

ADOQuery3 ADO FKembali Name qKoleksi

SQL Select Koleksi.KoleksiID,

Koleksi.Judul From Koleksi

Order by Koleksi.Judul

ADOQuery4 ADO FKembali Name qBKembali

SQL Select Pinjam.PinjamID, Pinjam.TglPinjam, Pinjam.MemberID, DPinjam.DPinjamID, DPinjam.KoleksiID, Koleksi.Judul, Koleksi.HargaDenda, DPinjam.TglHarusKembali From Pinjam, DPinjam, Koleksi Where (Pinjam.PinjamID = DPinjam.PinjamID) and (DPinjam.KoleksiID = Koleksi.KoleksiID) and (DPinjam.KembaliID = 0) and (Pinjam.MemberID = :MemberID)

11. Pilih qBKembali 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 ftInteger

12. Buat persistent field table Kembali, klik dua kali Kembali 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 DKembali, DPinjam, qMember, qKaryawan, qKoleksi dan qBKembali. 14. Klik dua kali Kembali pada Object TreeView untuk membuka field

editor, pilih field TotalDenda, ubah property seperti table di bawah ini : Komponen Property Value

KembaliTotalDenda Currency True

15. Klik dua kali DKembali pada Object TreeView untuk membuka field editor, pilih field HargaDenda, ubah property seperti table di bawah ini :

Komponen Property Value DKembaliHargaDenda Currency True

16. Tambahkan 3 buah DataSource dari tab Data Acces, ubah property seperti table di bawah ini :

Komponen Tab Parent Property Value Datasource1 Data Access FKembali Dataset Kembali DataSource2 Data Access FKembali Dataset DKembali DataSource3 Data Access FKembali Dataset qBKembali

17. Buat hubungan master detail antara table Kembali dan DKembali, pilih table DKembali pada Object TreeView, ubah property seperti table di bawah ini :

Komponen Property Value DKembali MasterSource Datasource1

18. Pilih table DKembali pada Object TreeView, klik tombol elipsisi pada property MasterField untuk membuka Field Link Designer. Pilih KembaliID pada Detail Fields dan KembaliID pada Master Fields. Klik Add untuk menambahkan ke dalam Joined Fields. Klik OK untuk melanjutkan.

19. Tambahkan field baru NamaMember pada table Kembali, klik dua kali Kembali 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 Kembali, 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 Kembali, lengkapi informasi pada jendela New Field seperti table di bawah ini :

Field Section Property Value

Kota Field Properties Name Kota

Type String

Field type Field type Lookup Lookup Definition Key Fields MemberID

Dataset qMember Lookup Keys MemberID Result Field Kota

22. Tambahkan field baru Handphone pada table Kembali, 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 Kembali, 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 DKembali pada Object TreeView untuk membuka Field Editor, tambahkan field baru JudulKoleksi pada table DKoleksi, 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. Klik dua kali qBKembali pada Object TreeView untuk membuka field editor, tambahkan field baru Telat pada table qBKembali, lengkapi informasi pada jendela New Field seperti table di bawah ini :

Field Section Property Value Telat Field Properties Name Telat

Field type Field type Calculated

26. Tambahkan field baru Denda pada table qBKembali, lengkapi informasi pada jendela New Field seperti table di bawah ini :

Field Section Property Value Denda Field Properties Name Denda

Type Currency Field type Field type Calculated

27. Masih pada field editor table qBKembali, pilih field Denda, ubah property seperti table di bawah ini :

Komponen Property Value qBKembaliDenda Currency True

28. Klik dua kali Kembali pada Object TreeView untuk membuka field editor. Pilih field KembaliID, TglKembali, MemberID, NamaMember, Alamat, Kota dan Handphone, lakukan drag and drop ke dalam GroupBox1.

29. 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 False

Options.dgAlwaysShowSelection False

Options.dgEditing True

30. Klik dua kali DBGrid1 pada Object TreeView untuk membuka Column Editor, tambahkan 4 buah dengan mengklik kanan pada 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 Denda

Title.Caption Denda DBGrid1.Columns[0], DBGrid1.Columns[1], DBGrid1.Columns[2], DBGrid1.Columns[3] Title.Alignment taCenter Title.Font.Style.fsBold True

31. Klik dua kali table Kembali pada Object TreeView untuk membuka field editor, pilih field Nama Karyawan dan TotalDenda, lakukan drag and drop ke dalam GroupBox3.

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

33. 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 True Options.dgAlwaysShowSelection True 34. Klik dua kali DBGrid2 pada Object TreeView untuk membuka Column

Editor, tambahkan 6 buah kolom, ubah property masing-masing kolom seperti table di bawah ini :

Komponen Property Value

DBGrid2.Columns[0] FieldName TglPinjam Title.Caption Tgl Pinjam DBGrid2.Columns[1] FieldName KoleksiID

Title.Caption ID DBGrid2.Columns[2] FieldName Judul

Title.Caption Judul Koleksi DBGrid2.Columns[3] FieldName TglHarusKembali

Title.Caption Tgl Harus Kembali DBGrid2.Columns[4] FieldName Telat

Title.Caption Telat DBGrid2.Columns[5] FieldName Denda

Title.Caption Denda 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

DBEdit1, DBLookUpCombobox2, DBLookupCombobox3, DBLookupCombobox4, DBLookUpCombobox5, DBEdit4 Enabled False

36. Atur layout form FKembali seperti gambar di bawah ini :

37. Tambahkan unit DateUtils pada blok Uses di unit UFKembali, lihat Latihan 27 point 38.

38. Tambahkan variable KembaliID dengan type Integer pada blok Public di unit UFKembali, lihat Latihan 27 point 39.

39. Buat procedure UpdateqBKembali dan Procedure UpdateTotalDenda pada blok Private di unit UFKembali, tekan Ctrl+Shift+C untuk membuat blok procedure tersebut (lihat Latihan 27 point 40), ketikkan perintah seperti table di bawah ini :

Komponen Event Code

FKembali UpdateqBKembali procedure TFKembali.UpdateqBKembali; begin qBKembali.Close; If DBEdit3.Text = '' then qBKembali.Parameters[0].Value := 0 else qBKembali.Parameters[0].Value := strtoint(DBEdit3.Text); qBKembali.Open; end;

UpdateTotalDenda procedure TFKembali.UpdateTotalDenda; var

TempTotal: Real; PrevRecord: TBookmark; begin

Komponen Event Code PrevRecord := DKembali.GetBookmark; try DKembali.DisableControls; DKembali.First; TempTotal := 0;

while not DKembali.EOF do begin

TempTotal := TempTotal + DKembaliHargaDenda.Value; DKembali.Next;

end;

If not (Kembali.State in dsEditModes) then Kembali.Edit; KembaliTotalDenda.Value := TempTotal;

finally

DKembali.EnableControls; if PrevRecord <> nil then begin DKembali.GoToBookmark(PrevRecord); DKembali.FreeBookmark(PrevRecord); end; end; end;

40. Pilih FKembali pada Object TreeView, buat event onCreate, onShow dan onClose, ketikkan perintah seperti table di bawah ini :

Komponen Event Code

FKembali onCreate procedure TFKembali.FormCreate(Sender: TObject); begin

KembaliID := 0; end;

onShow procedure TFKembali.FormShow(Sender: TObject); begin Kembali.Open; DKembali.Open; DPinjam.Open; qMember.Open; qKaryawan.Open; qKoleksi.Open; UpdateqBKembali;

If KembaliID > 0 then Kembali.Locate('KembaliID', KembaliID, []) else Kembali.Insert;

end;

onClose procedure TFKembali.FormClose(Sender: TObject; var Action: TCloseAction); begin Kembali.Close; DPinjam.Close; DKembali.Close; qMember.Close; qKaryawan.Close; qKoleksi.Close; qBKembali.Close; end;

41. 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 TFKembali.SpeedButton1Click(Sender: TObject); begin

Case (Sender as TSpeedButton).Tag of 1 : Kembali.Post;

2 : Kembali.Delete; 3 : ;

4 : Kembali.Cancel; End;

If (Sender as TSpeedButton).Tag in [2,4] then Close; end;

42. Pilih DBEdit3 pada Object TreeView, buat event onChange, ketikkan perintah seperti table di bawah ini :

Komponen Event Code

DBEdit3 onChange procedure TFkembali.DBEdit3Change(Sender: TObject); begin

UpdateqBKembali; end;

43. Pilih table Kembali pada Object TreeView, buat event AfterScroll, BeforeDelete dan onNewRecord, ketikkan perintah seperti table di bawah ini :

Komponen Event Code

Kembali AfterScroll procedure TFKembali.KembaliAfterScroll(DataSet: TDataSet); begin

UpdateqBKembali; end;

BeforeDelete procedure TFKembali.KembaliBeforeDelete(DataSet: TDataSet); begin

If MessageDlg('Hapus data?',mtConfirmation, [mbYes, mbNo], 0) = mrNo

then Abort; end;

onNewRecord procedure TFKembali.KembaliNewRecord(DataSet: TDataSet); begin

If DBEdit3.Enabled then ActiveControl := DBEdit3; KembaliTglKembali.Value := Today;

KembaliTotalDenda.Value := 0;

KembaliKaryawanID.Value := FUtama.KaryawanID; end;

44. Pilih qBKembali pada Object TreeView, buat event onCalcFields, ketikkan perintah seperti table di bawah ini :

Komponen Event Code

qBKembali onCalcFields procedure TFKembali.qBKembaliCalcFields(DataSet: TDataSet); var

Komponen Event Code

Telat : Integer; begin

Telat := Trunc(Today - qBKembaliTglHarusKembali.Value); If Telat <= 0 then qBKembaliTelat.Value := 0

else qBKembaliTelat.Value := Telat;

qBKembaliDenda.Value := qBKembaliTelat.Value * qBKembaliHargaDenda.Value; end;

45. Pilih DataSource1 pada Object TreeView, buat event onStateChange, ketikkan perintah seperti table di bawah ini :

Komponen Event Code

DataSource1 onStateChange procedure TFKembali.DataSource1StateChange(Sender: TObject);

begin

SpeedButton1.Enabled := (Kembali.State in dsEditModes) and (FUtama.HakAkses in [1,2]);

SpeedButton2.Enabled := (Kembali.State in [dsBrowse]) and (FUtama.HakAkses in [1,2]);

SpeedButton3.Enabled := (Kembali.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]; 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 TFKembali.DBGrid1DblClick(Sender: TObject); begin

If MessageDlg('Batalkan pengembalian?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then

Begin DKembali.Edit; DKembaliKembaliID.Value := 0; DKembaliDenda.Value := 0; DKembali.Post; UpdateqBKembali; UpdateTotalDenda; End; end;

47. Pilih DBGrid2 pada Object TreeView, buat event onDblClick, ketikkan perintah seperti table di bawah ini :

Komponen Event Code

DBGrid2 onDblClick procedure TFKembali.DBGrid2DblClick(Sender: TObject); begin

Komponen Event Code

[mbYes, mbNo], 0) = mrYes then Begin

If qBKembaliMemberID.Value = strtoint(DBEdit3.Text) then Begin

If Kembali.State in dsEditModes then Kembali.Post; If DPinjam.Locate('DPinjamID', qBKembaliDPinjamID.Value, []) then Begin DPinjam.Edit; DPinjamKembaliID.Value := KembaliKembaliID.Value; DPinjamDenda.Value := qBKembaliDenda.Value; DPinjam.Post; DKembali.Close; DKembali.Open; UpdateqBKembali; UpdateTotalDenda; End; End

Else MessageDlg('Member tidak cocok!', mtInformation, [mbOK], 0); End;

end;

48. Kembali ke form FUtama, klik menu View – Forms, pilih FUtama, klik OK untuk melanjutkan.

49. Klik menu File – Use Unit, pilih FKembali, klik OK untuk melanjutkan. 50. Pilih Pengembalian1 pada Object TreeView, buat event onClick,

ketikkan perintah seperti table di bawah ini : Komponen Event Code

Pengembalian1 onClick procedure TFUtama.Pengembalian1Click(Sender: TObject); begin

FKembali.ShowModal; end;

51. Pilih SpeedButton4 pada Object TreeView, buat event onClick, ketikkan perintah seperti table di bawah ini :

Komponen Event Code

SpeedButton4 onClick procedure TFUtama.SpeedButton4Click(Sender: TObject); begin

FKembali.ShowModal; end;

Dalam dokumen MODUL KULIAH PEMROGRAMAN VISUAL 1 (Halaman 161-173)