Wednesday, July 18, 2012

File Eksekusi Aplikasi Perpustakaan

Untuk mendapatkan gambaran mengenai aplikasi perpustakaan yang telah kita buat,
maka pada kesempatan kali ini saya akan memberikan file hasil compile yaitu perpus.zip

Unggahlah file tersebut DISINI dan letakkan di folder/direktori kesukaan pada hardisk Anda. Ekstraklah menjadi 2 file yaitu Pustakaprj.exe dan perpustakaan.mdb.


Jika sudah, maka Anda bisa me-run aplikasi ini dengan cara dobel klik pada file Pustakaprj.exe

Selamat mencoba

Modul 9. Membuat Form Transaksi Pengembalian Dan Membuat Toolbar Pada Aplikasi Perpustakaan


Form Pengembalian akan kita buat dengan nama frmkembali dan disimpan dalam kembaliU.pas. Form ini sangat mirip dengan form peminjaman terdahulu, hanya saja tentunya mengacu kepada tabel kembali dan det_kembali.

Perbedaan lainnya adalah pada form kali ini kita akan membuat toolbar yaitu tombol kecil-kecil bergambar (ikon) yang akan memudahkan user untuk melakukan sebuah perintah.

Bila dirun dan dipanggil, maka frmkembali akan tampil sbb:



Pembuatan form dan kode untuk frmkembali ini sangat mirip dengan frmpinjam, maka pada kesempatan ini kita akan membahas cara membuat toolbar. 



Seret dan letakkan komponen toolbar dari pallete win32 ke dalam form. Klik kanan pada toolbar1 dan klik NewButton sampai 3 kali, setelah itu klik NewSparator kemudian NewButton lagi sampai terlihat seperti gambar di atas.

Untuk mengisi ikon, letakkan komponent Imagelist1 masih dari pallete win32. Set properti Toolbar1.Image = Imagelist1. Kemudian barulah kita memilih gambar ikon dari library kita melalui Imagelist1.
Klik Add dan Anda akan memilih file ikon. Urutan yang akan tertera pada toolbar1 sesuai dengan Imagelist1.
Maka frmkembali akan tampak sbb pada design time



Akhirnya kode lengkap untuk kembaliU.pas adalah sbb:
unit KembaliU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, DBCtrls, ComCtrls, Mask, Grids, DBGrids,
  ExtCtrls, ImgList, Menus, ToolWin;

type
  TfrmKembali = class(TForm)
    MainMenu1: TMainMenu;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ransaksi1: TMenuItem;
    ambahKembali1: TMenuItem;
    HapusKembali1: TMenuItem;
    RekamKembali1: TMenuItem;
    Buku1: TMenuItem;
    ambahBuku1: TMenuItem;
    HapusBuku1: TMenuItem;
    SimpanBuku1: TMenuItem;
    ImageList1: TImageList;
    ToolButton7: TToolButton;
    Panel1: TPanel;
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBLookupComboBox1: TDBLookupComboBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    DateTimePicker1: TDateTimePicker;
    DBNavigator1: TDBNavigator;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    DBNavigator2: TDBNavigator;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    ADOTable2: TADOTable;
    ADOTable3: TADOTable;
    ADOTable4: TADOTable;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    DataSource3: TDataSource;
    ADOTable2ID_DetKembali: TAutoIncField;
    ADOTable2ID_Kembali: TWideStringField;
    ADOTable2ID_Buku: TWideStringField;
    ADOTable2JudulBuku: TStringField;
    procedure DateTimePicker1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ambahKembali1Click(Sender: TObject);
    procedure HapusKembali1Click(Sender: TObject);
    procedure RekamKembali1Click(Sender: TObject);
    procedure ambahBuku1Click(Sender: TObject);
    procedure HapusBuku1Click(Sender: TObject);
    procedure SimpanBuku1Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure DBGrid1EditButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmKembali: TfrmKembali;

implementation

uses pilihKembaliU;

{$R *.dfm}

procedure TfrmKembali.DateTimePicker1Change(Sender: TObject);
begin
ADOTable1.Edit;
DBEdit2.Text := DateToStr(DateTimePicker1.date);
end;

procedure TfrmKembali.FormCreate(Sender: TObject);
begin
DateTimePicker1.Date:=Date;
end;

procedure TfrmKembali.Button4Click(Sender: TObject);
begin
close;
end;

procedure TfrmKembali.Button1Click(Sender: TObject);
begin
ADOTable2.Append;
end;

procedure TfrmKembali.Button2Click(Sender: TObject);
begin
ADOTable2.Delete; 
end;

procedure TfrmKembali.Button3Click(Sender: TObject);
begin
ADOTable2.Post;
end;

procedure TfrmKembali.ambahKembali1Click(Sender: TObject);
begin
ADOTable1.Append; 
end;

procedure TfrmKembali.HapusKembali1Click(Sender: TObject);
begin
ADOTable1.Delete;
end;

procedure TfrmKembali.RekamKembali1Click(Sender: TObject);
begin
ADOTable1.Post; 
end;

procedure TfrmKembali.ambahBuku1Click(Sender: TObject);
begin
ADOTable2.Append;
end;

procedure TfrmKembali.HapusBuku1Click(Sender: TObject);
begin
ADOTable2.Delete;
end;

procedure TfrmKembali.SimpanBuku1Click(Sender: TObject);
begin
ADOTable2.Post; 
end;

procedure TfrmKembali.ToolButton1Click(Sender: TObject);
begin
ADOTable1.Append;
end;

procedure TfrmKembali.ToolButton2Click(Sender: TObject);
begin
ADOTable1.Delete;
end;

procedure TfrmKembali.ToolButton3Click(Sender: TObject);
begin
ADOTable1.Post; 
end;

procedure TfrmKembali.ToolButton5Click(Sender: TObject);
begin
ADOTable2.Append; 
end;

procedure TfrmKembali.ToolButton6Click(Sender: TObject);
begin
ADOTable2.Delete;
end;

procedure TfrmKembali.ToolButton7Click(Sender: TObject);
begin
ADOTable2.Post; 
end;

procedure TfrmKembali.DBGrid1EditButtonClick(Sender: TObject);
begin
frmpilihbukukembali.Show;
end;

end.

Modul 8. Membuat Form Transaksi Peminjaman Buku dan Hubungan Master Detail Database



Setelah cukup familiar dengan pembuatan form yang mengakses tabel MS Access secara sederhana, maka kali ini kita akan membuat sebuah form Peminjaman Buku yang akan mengakses beberapa tabel.
Sebelum lebih jauh dengan pemrograman, maka akan dijelaskan disini gambaran apa yang terjadi ketika dilakukan peminjaman buku. Data peminjaman akan disimpan dalam tabel Pinjam dengan atributnya yaitu tgl_pinjam dan siapa yang meminjam buku (ID_Anggota).

Akan tetapi buku yang dipinjam tidak akan disimpan dalam tabel pinjam, karena buku yang dipinjam bisa lebih dari satu item dalam satu transaksi peminjaman.

Dalam Delphi, hal ini bisa diselesaikan dengan metoda Master Detail, yaitu untuk menangani database yang mempunyai hubungan satu ke banyak.

Dalam hal ini yang akan kita hubungkan adalah tabel pinjam dengan tabel det_pinjam. Data buku dalam satu peminjaman semua akan disimpan dalam tabel det_pinjam yang dihubungkan oleh field ID_Pinjam.




Dalam frmpinjam, terdapat 4 object ADOTable, yaitu:
  1. ADOtable1 à table pinjam (menyimpan peminjaman)
  2. ADOTable2 à tabel Det_pinjam (menyimpan data buku)
  3. ADOTable3 à table Anggota (bantuan nama Anggota)
  4. ADOTable4 à table Buku (Bantuan Judul Buku).

Setting Master Detail
Seperti diketahui, baik dalam tabel pinjam maupun tabel Det_Pinjam terdapat field ID_Pinjam. Field inilah masing-masing yang akan kita gunakan sebagai penghubung kedua tabel tersebut.



Adapun cara untuk menghubungkan dua tabel adalah sbb:
Setelah diset masing2 connection dan tablenamenya, untuk ADOTable2
MaterSource : DataSource1.
Klik MasterFiled-nya maka akan muncul:



Pilih ID_Pinjam di kanan dan kiri dan klik Add, maka kedua table sudah dihubungkan.

Pada frmPinjam diatas, Data peminjaman ditampilkan di bagian atas dan data buku-bukunya di DBGrid1 bagian bawah.


Field Lookup.
Seperti diketahui, pada tabel Det_Pinjam tidak terdapat field Jdl_Buku. Hanya ID_Buku. Untuk menampilkan field judul buku pada DBGrid1, harus dibuat field baru yang mengacu ke tabel buku. DblKlik ADOTable2, maka akan muncul


Klik kanan dan klik New Field, dan isikan sesuai gambar


Kita pilih Datasetnya ADOTable4 yang mengakses ke tabel Buku. Klik OK maka akan kita peroleh Field baru dengan nama Judul Buku (Bukan Jdl_Buku pd tabel Buku)




Pada DBGrid1, Field ini akan mengikuti field di depannya yaitu ID_Buku yang akan kita masukkan sebagai input data peminjaman buku.

Alat memilih Buku
Untuk data buku yang besar, tidak mungkin kita menghapal kode ID_Buku satu persatu. Maka dari itu akan kita buat suatu cara yaitu dengan memilih saja dari tabel buku. Untuk itu, pertama kolom ID_Buku pada DBGrid harus kita ubah ButtonStylenya menjadi cbllipsis sehingga bisa diklik.
Caranya Dblklik DBGrid1, akan muncul form kosong. Klik kanan dan klik Add All Field.





DblKlik field ID_Buku dan setlah seperti pada gambar:




Setelah diset, maka jika dirun, khusus kolom ID_Buku akan keluar tombol (…) sebagai alat memilih buku.



 
Form Pilih Buku
Yang kita lakukan ketika user mengklik tombol (…) adalah memanggil form pilih buku, memilih dari tabel buku dan mengisikan ID_Buku hasil pilihan tadi ke dalam Kolom ID_Buku pada DBGrid1.
Kode untuk memanggil frmpilihbukupinjam adalah:

procedure TfrmPinjam.DBGrid1EditButtonClick(Sender: TObject);
begin
frmpilihbukupinjam.Show;
end;


Buatlah frmpilihbukupinjam seperti gambar:




Kode untuk frmpilihbukupinjam setelah klik Pilih:
procedure Tfrmpilihbukupinjam.Button1Click(Sender: TObject);
begin
frmpinjam.ADOTable2.Edit;
frmPinjam.ADOTable2ID_Buku.Value:=ADOTable1ID_Buku.Value;
Close; 
end;

catatan: baik frmpinjam maupun frmpilihbukupinjam harus saling mengikut sertakan dengan perintah uses.


Akhirnya inilah kode lengkap dari pinjamU.pas:
unit PinjamU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ImgList, ComCtrls, ToolWin, DB, StdCtrls, ADODB, Grids,
  DBGrids, ExtCtrls, DBCtrls, Mask;

type
  TfrmPinjam = class(TForm)
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    Button1: TButton;
    Button2: TButton;
    DataSource1: TDataSource;
    MainMenu1: TMainMenu;
    ransaksi1: TMenuItem;
    PinjamBaru1: TMenuItem;
    Hapuspinjam1: TMenuItem;
    RekamPinjam1: TMenuItem;
    N1: TMenuItem;
    ambahBuku1: TMenuItem;
    HapusBuku1: TMenuItem;
    Panel1: TPanel;
    ADOTable2: TADOTable;
    DataSource2: TDataSource;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DateTimePicker1: TDateTimePicker;
    DBLookupComboBox1: TDBLookupComboBox;
    DBNavigator1: TDBNavigator;
    Button3: TButton;
    DBNavigator2: TDBNavigator;
    ADOTable3: TADOTable;
    DataSource3: TDataSource;
    ADOTable2ID_DetPinjam: TAutoIncField;
    ADOTable2ID_Pinjam: TWideStringField;
    ADOTable2ID_Buku: TWideStringField;
    ADOTable4: TADOTable;
    Button4: TButton;
    ADOTable2JudulBuku: TStringField;
    procedure PinjamBaru1Click(Sender: TObject);
    procedure Hapuspinjam1Click(Sender: TObject);
    procedure RekamPinjam1Click(Sender: TObject);
    procedure ambahBuku1Click(Sender: TObject);
    procedure HapusBuku1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure DateTimePicker1Change(Sender: TObject);
    procedure DBGrid1EditButtonClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmPinjam: TfrmPinjam;

implementation

uses pilihpinjamU;

{$R *.dfm}

procedure TfrmPinjam.PinjamBaru1Click(Sender: TObject);
begin
if ADOTable1.State in [dsbrowse] then
       ADOTable1.Edit;
ADOTable1.Append;
end;

procedure TfrmPinjam.Hapuspinjam1Click(Sender: TObject);
begin
ADOTable1.Delete;
end;

procedure TfrmPinjam.RekamPinjam1Click(Sender: TObject);
begin
ADOTable1.Edit;
ADOTable1.Post;
end;

procedure TfrmPinjam.ambahBuku1Click(Sender: TObject);
begin
if ADOTable2.State in [dsbrowse] then
       ADOTable2.Edit;
ADOTable2.Append;
end;

procedure TfrmPinjam.HapusBuku1Click(Sender: TObject);
begin
ADOTable2.Delete;
end;

procedure TfrmPinjam.Button1Click(Sender: TObject);
begin
if ADOTable2.State in [dsbrowse] then
       ADOTable2.Edit;
ADOTable2.Append;
end;

procedure TfrmPinjam.Button2Click(Sender: TObject);
begin
ADOTable2.Delete;
end;

procedure TfrmPinjam.Button3Click(Sender: TObject);
begin
close;
end;

procedure TfrmPinjam.DateTimePicker1Change(Sender: TObject);
begin
ADOTable1.Edit; 
DBEdit2.Text:=DateToStr(DateTimePicker1.Date);
end;

procedure TfrmPinjam.DBGrid1EditButtonClick(Sender: TObject);
begin
frmpilihbukupinjam.Show;
end;

procedure TfrmPinjam.Button4Click(Sender: TObject);
begin
  if ADOTable2.State in [dsbrowse] then
       ADOTable2.Edit;
ADOTable2.Post;
end;

end.

Modul 7. Membuat Form Buku pada Aplikasi Perpustakaan


Kali ini untuk melanjutkan Proyek Perpustakaan, akan kita buat frmBuku yaitu dengan cara:

1. Mengaktifkan Delphi 7.0 dengan cara, klik Start, Klik All Program, Klik Borland Delphi 7, Klik Delphi 7.

2. Klik menu File, klik Open Project, tentukan folder tempat anda menyimpan project pustakaPrj, lalu klik pustakaPrj.dpr dan klik open

3. Klik Menu file, Klik New, klik form, ganti caption pada properties dengan Data Buku, dan pada name ketikkan frmBuku.

4. Klik menu View, lalu klik forms dan double klik mainmenu1, klik file pada mainmenu1, klik Buku dan ketikkan :

frmbuku.show; (pastikan sudah menambahkan uses BukuU.pas)

5. Klik menu View, lalu klik forms dan double klik frmbuku, lengkapi form tersebut seperti gambar berikut :







Yang khusus untuk kode pada form buku ini adalah pada komponen DBLookUpCombobox. Komponen ini menyajikan data jenis buku. Dimana pada tabel buku sesungguhnya hanya tercatat data ID_Buku.
Tetapi yang terlihat di form di atas adalah data jenis buku yang diambil dari tabel Jenis_Buku. Artinya komponen ini memang mengakses 2 tabel sekaligus.

Dalam frmBuku terdapat :
  1. ADOTable1 : mengakses tabel Buku
  2. ADOTable2 : mengakses tabel Jenis_Buku.
Untuk bisa membuat DBLookUpComboBox1 berfungsi, maka setlah propertinya:
-         DataSource = DataSource1
-         Datafield = ID_Jenis(dr tabel Buku)
-         ListSource = DataSource2
-         ListField = Jenis_Buku
-         KeyField = ID_Jenis (dr tabel Jenis_Buku)
Untuk Setting Komponen yang lain sama dengan yang dilakukan pada latihan sebelumnya. Hanya disesuaikan pada databasenya.
Kode lengkap dari frmBuku adalah sbb:
unit BukuU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DBCtrls, Mask, DB, ADODB, Grids, DBGrids,
  ExtCtrls, ComCtrls;

type
  TfrmBuku = class(TForm)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    ADOTable2: TADOTable;
    DataSource2: TDataSource;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBLookupComboBox1: TDBLookupComboBox;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Panel1: TPanel;
    Button4: TButton;
    DBGrid1: TDBGrid;
    Panel2: TPanel;
    DBNavigator1: TDBNavigator;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmBuku: TfrmBuku;

implementation

{$R *.dfm}

procedure TfrmBuku.SpeedButton1Click(Sender: TObject);
begin
ADOTable1.First;
end;

procedure TfrmBuku.SpeedButton2Click(Sender: TObject);
begin
ADOTable1.Prior;
end;

procedure TfrmBuku.SpeedButton3Click(Sender: TObject);
begin
ADOTable1.Next;
end;

procedure TfrmBuku.SpeedButton4Click(Sender: TObject);
begin
ADOTable1.Last;
end;

procedure TfrmBuku.Button1Click(Sender: TObject);
begin
ADOTable1.Append;
end;

procedure TfrmBuku.Button2Click(Sender: TObject);
begin
ADOTable1.Delete;
end;

procedure TfrmBuku.Button3Click(Sender: TObject);
begin
ADOTable1.Post; 
end;

end.