Sabtu, 26 Maret 2011

Membuat report + Rave pada Delphi7

Karena project Perpustakaan sebelumnya sudah dibuat, pada modul 2. Membuat menu, maka pada kesempatan ini adalah melengkapi frmanggota 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 PRjpustaka, lalu klik prjpustaka dan klik open
3. Klik Menu file, Klik New, klik form, ganti caption pada properties dengan Cetak Data Anggota, dan pada name ketikkan frmcetakanggota.
4. Klik menu View, lalu klik forms dan double klik frmenu, klik file pada frmmenu, klik anggota dan ketikkan :
frmcetakanggota.show;
5. Klik menu View, lalu klik forms dan double klik frmcetakanggota, lengkapi form tersebut seperti gambar berikut :
Gambar 1. Membuat form Cetak Buku Per Penerbit

Catatan :
Form diatas terdiri dari :
Groupbox, Edit1 dan label1
Ado connection, ADoQuery dan Dataset
Button1 untuk cetak dan Button2 untuk Cancel
Untuk membuat laporan kita menggunakan dua komponen pallete RAVE yaitu
RVProject dan RVDataSetConnection
6. Mengkoneksikan database
Klik ADOQuery1 pada Form, klik ConnectionString (…), klik Build, Klik Microsoft Office 12.0 Acces Database Engine OLEDB Provider (untuk office 2007) tetapi kalau menggunakan office XP dapat dipilih Microsoft jet OLEDB 4.0, test connection
Dan klik next, pada data source ketikkan : D:\perpustakaan\perpustakaan.accdb, dan yang terakhir klik test connection. Apabila test connection tampil keterangan tes connection succeeded, maka koneksinya sudah benar, tutup semua windows koneksi dengan cara klik OK. kembali ke frmCetakanggota.
7. Masih pada Adoquery1, klik SQL pada properties, lalu ketikkan :
select * From anggota
Dan Klik Active pada properties ganti false menjadi true.
8. Mengaktifkan DataSource, yaitu dengan cara klik Datasource pada form anggota, lalu klik Dataset pilih Adoquery1
9. Mengkoneksikan RVDataSetConnection dengan dataset, dengan cara klik RVDataSetConnection, pada properties klik Dataset, lalu pilih AdoQuery1
Langkah-langkah membuat laporan dengan menggunakan RAVE Klik Disini… Klik Disinisi… untuk Rave
Setelah selesai membuat Report dengan Rave dilanjutkan dengan
10. Kembali Menu Project Delphi pada form Cetak
11. Klik RVProject1, lalu pada properties klik ProjectFile, Klik tombol titik-titik, pilih file report yang akan ditampilkan (PRJanggota.rav) dan klik OK
12. Selanjutnya adalah Double klik pada tombol Cetak dan ketikkan koding sebagai berikut :
01procedure TForm1.Button1Click(Sender: TObject);
02begin
03adoquery1.Close;
04adoquery1.SQL.Clear;
05adoquery1.SQL.add('select * from Penerbit,buku where penerbit.id_penerbit = buku.id_penerbit and  buku.id_penerbit = "'+ edit1.Text +'"');
06adoquery1.Open;
07if not adoquery1.Eof then
08begin
09  rvproject1.Execute;
10  rvproject1.ExecuteReport('prjbukupenerbit.rav');
11end
12else
13  showmessage('Data tidak ditemukan');
14end;

Membuat Reeport dengan Rave

Karena project Perpustakaan sebelumnya sudah dibuat, pada modul 2. Membuat menu, maka pada kesempatan ini adalah melengkapi frmanggota 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 PRjpustaka, lalu klik prjpustaka dan klik open
  3. Klik Menu file, Klik New, klik form, ganti caption pada properties dengan Cetak  Data Anggota, dan pada name ketikkan frmcetakanggota.
  4. Klik menu View, lalu klik forms dan double klik frmenu, klik file pada frmmenu, klik anggota dan ketikkan :
  5. frmcetakanggota.show;
  6. Klik menu View, lalu klik forms dan double klik frmcetakanggota, lengkapi form tersebut seperti gambar berikut :
Gambar 1. Membuat form Cetak Anggota

Catatan :
Form disamping terdiri dari :
Ado connection, ADoQuery dan Dataset
Button1 untuk cetak dan Button2 untuk Cancel
Untuk membuat laporan kita menggunakan dua komponen pallete RAVE yaitu :
RVProject dan RVDataSetConnection
Mengkoneksikan database


  • Klik ADOQuery1 pada Form, klik ConnectionString (…), klik Build, Klik Microsoft Office 12.0 Acces Database Engine OLEDB Provider (untuk office 2007) tetapi kalau menggunakan office XP dapat dipilih Microsoft jet OLEDB 4.0, test connection




  • Dan klik next, pada data source ketikkan : D:\perpustakaan\perpustakaan.accdb, dan yang terakhir klik test connection. Apabila test connection tampil keterangan tes connection succeeded, maka koneksinya sudah benar, tutup semua windows koneksi dengan cara klik OK. kembali ke frmCetakanggota.




  • Masih pada Adoquery1, klik SQL pada properties, lalu ketikkan :



  • select * From anggota
    Dan Klik Active pada properties ganti false menjadi true.

  • Mengaktifkan DataSource, yaitu dengan cara klik Datasource pada form anggota, lalu klik Dataset pilih Adoquery1




  • Mengkoneksikan RVDataSetConnection  dengan dataset, dengan cara klik RVDataSetConnection, pada properties klik Dataset, lalu pilih AdoQuery1




  • Langkah-langkah membuat laporan dengan menggunakan RAVE

    1. Klik menu Tools pada delphi, klik RAVE designer
    2. Klik file, Klik New
    3. Klik File, Klik New Data Object
    4. Klik Direct Dataview
    5. Apabila sebelumnya pernah membuat laporan dengan rave, maka akan ditampilkan pesan “Warning! Duplicate Design-time Data Connections found with name “RvDataSetConnection1”. Lalu klik Ok dan klik tombol Next
    6. Klik finish
    7. Klik RVDatasetconnection1 (DT), lalu Klik Finish
    8. Untuk  memastikan data yang akan dibuatkan reportnya dapat dilihat pada sudut kanan lembar kerja Rave yaitu seperti gambar berikut, dengan cara klik Data view Dictionary, Klik Dataview.
    9. Klik menu tools pada Rave, lalu klik Report Wizard, Klik Simple Table
    10. Klik Dataview1 dan Klik Next, Klik All (untuk mengikutsertakan seluruh data yang ada pada table) atau klik field tertentu saja yang akan ditampilkan, lalu klik Next, Klik Next, Klik next dan yang terakhir klik Generate
    11. Untuk melihat hasil report dapat diklik menu File pada RAVE, lalu klik Execute report1 dan Klik OK
    12. Tutup laporan
    13. Klik Menu file pada RAVE, lalu Klik Save As, perintah ini untuk menyimpan Report, tentukan folder sama dengan project Delphi disimpan, beri nama file dengan nama PRJAnggota.rav, lalu Klik Save
    10.  Kembali Menu Project Delphi
    11.  Klik RVProject1, lalu pada properties klik ProjectFile, Klik tombol titik-titik, pilih file report yang akan ditampilkan (PRJanggota.rav) dan klik OK
    12.  Selanjutnya adalah Double klik pada tombol Cetak dan ketikkan koding sebagai berikut :
    01procedure TFrmCetBuku.Button1Click(Sender: TObject);
    02begin
    03adoquery1.Close;
    04adoquery1.SQL.clear;
    05adoquery1.SQL.Add('select kode, judulbuku from Anggota');
    06adoquery1.Open;
    07adoquery1.Active := true;
    08RVproject1.Execute;
    09RVproject1.ExecuteReport('prjbuku.rav');
    10end;

    Membuat Nomor peminjaman secara otomatis pada Form Transaksi peminjaman buku secara otomatis pada Delphi7+ Ms.Access2007

    Karena project Perpustakaan sebelumnya sudah dibuat dan From peminjaman pun sudah dibuat pada modul 8. Klik disini , maka pada kesempatan ini adalah melengkapi frmpinjam yaitu dengan cara:
    Membuat nomor pinjam secara otomatis yang terdiri dari 9 digit yang dihasilkan dengan proses :
    Dua digit pertama adalah tahun
    Dua digit kedua adalah bulan
    Lima digit terakhir adalah nomor urut
    Sehingga menghasilkan nomor : 100100001
    Adapun langkah-langkahnya adalah :
    1. Membuat fungsi rightstr dengan cara mengetikan koding secara langsung diluar procedure di bawah implementation.
    // Membuat Fungsi Left, right, mid String
    //sumber : Klik disini
    01
    02implementation
    03
    04{$R *.dfm}
    05function RightStr
    06    (Const Str: String; Size: Word): String;
    07begin
    08  if Size > Length(Str) then Size := Length(Str) ;
    09  RightStr := Copy(Str, Length(Str)-Size+1, Size)
    10end;
    11
    12function MidStr
    13    (Const Str: String; From, Size: Word): String;
    14begin
    15  MidStr := Copy(Str, From, Size)
    16end;
    17
    18function LeftStr
    19    (Const Str: String; Size: Word): String;
    20begin
    21  LeftStr := Copy(Str, 1, Size)
    22end;
    2. Membuat koding pada Form Create sebagai berikut :
    01procedure TFrmPinjam.FormCreate(Sender: TObject);
    02var i,nomor: integer;
    03nom,no : string;
    04begin
    05
    06//Membuat Nomor peminjaman secara otomatis
    07decodedate(date,Thn,Bln,hari);
    08adoquery5.Close;
    09adoquery5.SQL.clear;
    10adoquery5.SQL.add('Select * from pinjam');
    11adoquery5.open;
    12if adoquery5.RecordCount = 0 then
    13  nomor := 1
    14else
    15begin
    16nom := rightstr(inttostr((adoquery5.fields[0].AsInteger)),5);
    17nomor := strtoint(nom) + 1;
    18end;
    19no:='0';
    20for i := 1 to (4 - length(inttostr(nomor))) do
    21begin
    22  no := no + '0';
    23end;
    24edit1.text := rightstr(inttostr(thn),2) + rightstr(('0'+inttostr(bln)),2)+no+ inttostr(nomor);
    25
    26//untuk menghitung tanggal tempo
    27decodedate(date,Thn,Bln,hari);
    28hari := hari + 5;
    29tanggal := encodedate(thn,bln,hari);
    30edit2.Text := formatdatetime('DD/MM/yyyy',tanggal) ;
    31sg.RowCount :=1;
    32sg.ColCount:=5;
    33sg.Cells[0,0]:='No';
    34sg.Cells[1,0]:='Kode Buku';
    35sg.Cells[2,0]:='Judul buku';
    36sg.Cells[3,0]:='Pengarang';
    37sg.Cells[4,0]:='Qty';
    38
    39sg.ColWidths [0]:=40;
    40sg.ColWidths [1]:=60;
    41sg.ColWidths [2]:=80;
    42sg.Colwidths[3]:=80;
    43sg.colwidths[4]:=60;
    44
    45end;

    Membuat Form Transaksi pengembalian buku pada Delphi7+Ms.Accsess2007

    Karena project Prjpustaka sebelumnya sudah dibuat, pada modul 4.
    Membuat menu
    , maka pada kesempatan ini adalah melengkapi frmkembali 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 PRjpustaka, lalu klik prjpustaka dan klik open
    3. Klik Menu file, Klik New, klik form, ganti caption pada properties dengan Input Data Transaksi Pengembalian, dan pada name ketikkan frmkembali.
    4. Klik menu View, lalu klik forms dan double klik frmenu, klik Transaksi pada frmmenu, klik Pengembalian dan ketikkan :
    frmkembali.show;
    5. Klik menu View, lalu klik forms dan double klik frmkembali, lengkapi form tersebut seperti gambar berikut :
    Gambar 1. Membuat form Transaksi Pengembalian Buku

    Adapun koding selengkapnya adalah :
    a. Buatlah variable seperti di bawah ini :
    b. Membuat Koding pada Form Activate
    procedure TFrmKembali.FormActivate(Sender: TObject);
    begin
    edit1.SetFocus;
    end;
    c. Membuat Koding pada Form Create
    01procedure TFrmKembali.FormCreate(Sender: TObject);
    02begin
    03edit1.Text :='';
    04edit6.Text := '1000';
    05edit2.Enabled := false;
    06edit3.Enabled := false;
    07edit4.Enabled := false;
    08edit5.Enabled := false;
    09edit6.Enabled := false;
    10edit7.Enabled := false;
    11edit8.Enabled := false;
    12datetimepicker1.Enabled := false;
    13end;
    d. Buat koding pada edit1 dengan menggunakan event on keypress
    01procedure TFrmKembali.Edit1KeyPress(Sender: TObject; var Key: Char);
    02var tgl :tdatetime;
    03begin
    04if key=#13 then
    05begin
    06adoquery1.Close;
    07adoquery1.SQL.Clear;
    08adoquery1.SQL.add('Select * from pinjam where id_pinjam="'+ edit1.Text +'"');
    09adoquery1.open;
    10if not adoquery1.Eof then
    11begin
    12 
    13  //menghitung tanggal tempo
    14  decodedate(datetimepicker1.DateTime,thn,bln,hari);
    15  hari := hari + 5;
    16  tanggal := encodedate(thn,bln,hari);
    17  edit2.Text := formatdatetime('dd/mm/yyyy',tanggal);
    18 
    19  edit3.Text := adoquery1.Fields[1].AsString;
    20  tgl := adoquery1.Fields[3].AsDateTime;
    21  if datetostr(tgl)  <> ''  then
    22  begin
    23    button1.Enabled := false;
    24    datetimepicker2.enabled := false;
    25    showmessage('Buku Sudah dikembalikan');
    26  end;
    27 
    28  datetimepicker1.Date := adoquery1.Fields[2].AsDateTime;
    29  datetimepicker2.date := adoquery1.fields[3].asdatetime;
    30 
    31  //menselect data pada id anggota
    32  adoquery2.close;
    33  adoquery2.SQL.clear;
    34  adoquery2.SQL.add('select * from Anggota where id_Anggota = "'+ edit3.Text +'"');
    35  adoquery2.Open;
    36  if not adoquery2.Eof then
    37  begin
    38    edit4.text := adoquery2.Fields[1].AsString;
    39    edit5.Text := adoquery2.Fields[2].AsString;
    40  end;
    41 
    42  //menampilkan data buku pada datagrid
    43  adoquery3.Close;
    44  adoquery3.SQL.Clear;
    45  adoquery3.SQL.add('select dpinjam.id_pinjam,dpinjam.id_buku,buku.judulbuku,jumlah from dpinjam,buku where dpinjam.id_buku = buku.kode and id_pinjam ="' + edit1.Text +'"');
    46  adoquery3.open;
    47  if not adoquery3.eof then
    48  datasource1.dataset := adoquery3;
    49  DBGrid1.DataSource := datasource1;
    50end
    51else
    52  showmessage('data tidak ditemukan');
    53 
    54end;
    55end;
    e. Membuat koding pada datetimepicker2 dengan menggunakan event change
    01procedure TFrmKembali.DateTimePicker2Change(Sender: TObject);
    02begin
    03edit8.text:='0';
    04edit7.Text :='0';
    05tgl1 := datetimepicker1.Date;
    06tgl2 := datetimepicker2.date;
    07if (tgl2 > tanggal) then
    08begin
    09lama :=trunc(tgl2 - tgl1);
    10edit7.Text := inttostr(lama);
    11edit8.text := inttostr(strtoint(edit6.text) * lama);
    12end
    13else
    14edit7.Text := '0';
    15end;
    f. Membuat koding pada tombol prosess button1
    procedure TFrmKembali.Button1Click(Sender: TObject);
    begin
    01adoquery1.Close;
    02adoquery1.SQL.clear;
    03adoquery1.SQL.add('update pinjam set tgl_kembali = "'+ datetostr(datetimepicker2.date)+'", tgl_tempo = "'+ edit2.text +'" where id_pinjam ="'+ edit1.text +'"');
    04adoquery1.ExecSQL;
    05showmessage('Data Sudah terupdate');
    06edit1.Text := '';
    07edit2.text := '';
    08edit3.text := '';
    09edit4.text := '';
    10edit5.text := '';
    11edit6.text := '';
    12edit7.text := '';
    13edit8.text := '';
    14end;

    Membuat Form Transaksi peminjaman buku pada Delphi7

    Karena project Prjpustaka sebelumnya sudah dibuat, pada modul 4. Membuat menu, maka pada kesempatan ini adalah melengkapi frmpinjam 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 PRjpustaka, lalu klik prjpustaka dan klik open
    3. Klik Menu file, Klik New, klik form, ganti caption pada properties dengan Input Data Transaksi Peminjaman, dan pada name ketikkan frmpinjam.
    4. Klik menu View, lalu klik forms dan double klik frmenu, klik Transaksi pada frmmenu, klik peminjaman dan ketikkan :
    frmpinjam.show;
    5. Klik menu View, lalu klik forms dan double klik frmpeminjam, lengkapi form tersebut seperti gambar berikut :
    Gambar 1. Membuat form Transaksi Peminjaman Buku

    Catatan :
    Form diatas terdiri dari :
    Palette DataControl : bblookupcombobox, DBedit
    Palette standard : panel, Label, Edit, Button
    Palette Additional : StringGrid
    Palette ADO : Ado Connection dan ADOquery
    Palette DataAcces : DataSource
    Palette Win32 : DatetimePicker
    6. Mengkoneksikan database dengan menggunakan Adoconnection
    Klik ADOconnection pada Form, klik ConnectionString (…), klik Build, Klik Microsoft Office 12.0 Acces Database Engine OLEDB Provider (untuk office 2007) tetapi kalau menggunakan office XP dapat dipilih Microsoft jet OLEDB 4.0, test connection
    Dan klik next, pada data source ketikkan : D:\perpustakaan\perpustakaan.accdb, dan yang terakhir klik test connection.
    Gambar 2. mengkoneksikan Database M. Access
    7. apabila test connection tampil keterangan tes connection succeeded, maka koneksinya sudah benar, tutup semua windows koneksi dengan cara klik OK. kembali ke frmpinjam.
    8. Klik Adoquery1, klik Adoconnection pada proterties: lalu pilih ADOConnection1, dan klik SQL pada properties, lalu ketikkan :
    select * From anggota
    Dan Klik Active pada properties ganti false menjadi true.
    9. Klik Adoquery2, klik Adoconnection pada proterties: lalu pilih ADOConnection1, dan klik SQL pada properties, lalu ketikkan :
    select * From Buku
    Dan Klik Active pada properties ganti false menjadi true.
    Untuk Adoquery3 dan ADOquery4 hanya properties untuk Adoconnection : ADOConnection1.
    10. Mengaktifkan DataSource1, yaitu dengan cara klik Datasource1 pada form pinjam, lalu klik Dataset pilih Adoquery1
    11. Mengaktifkan DataSource2, yaitu dengan cara klik Datasource2 pada form pinjam, lalu klik Dataset pilih Adoquery2
    12. Mengaktifkan DBLookupComboBox1, dengan cara klik DBLookupcombobox1, dan klik listssource : pilih DataSource1, ListField isi dengan IDAnggota, dan untuk keyfield isi dengan IDAnggota.
    13. Mengaktifkan DBEdit1, dengan cara klik DBEdit1, lalu klik Datasource pada properties, lalu pilih datasource1 dan datafilednya nama
    14. Mengaktifkan DBLookupComboBox2, dengan cara klik DBLookupcombobox2, dan klik listssource : pilih DataSource2, ListField isi dengan IDBuku, dan untuk keyfield isi dengan IDBuku
    15. Mengaktifkan DBEdit2, dengan cara klik DBEdit2, lalu klik Datasource pada properties, pilih datasource2 dan datafilednya JudulBuku
    16. Mengaktifkan DBEdit3, dengan cara klik DBEdit3, lalu klik Datasource pada properties, pilih datasource2 dan datafilednya Pengarang
    17. Mengisi Edit2, dengan cara double klik Edit2 pada form pinjam, ganti events dengan OnKeypress, lalu ketik listing berikut :
    1procedure TFrmPinjam.Edit3KeyPress(Sender: TObject; var Key: Char);
    2begin
    3if not ((key >= '0') and (key <= '9') or (key=#8)) then
    4begin
    5key:=#0;
    6Application.Messagebox('maaf hanya angka','Cek Input',mb_iconstop);
    7end;
    8end;
    18. Mengisi Tombol Proses, dengan cara double klik tombol proses lalu ketik listing berikut :
    01procedure TFrmPinjam.Button1Click(Sender: TObject);
    02var
    03i,qty,tot:integer;
    04 
    05begin
    06sg.RowCount := sg.rowcount+1;
    07sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text;
    08sg.Cells[2,sg.RowCount-1]:=dbedit2.Text ;
    09sg.Cells[3,sg.rowcount-1]:=dbedit3.Text ;
    10qty:=strtoint(edit3.Text);
    11sg.cells[4,sg.rowcount-1]:=edit3.text;
    12tot:=0;
    13for i:=1 to sg.RowCount-1 do
    14begin
    15tot := tot + strtoint(sg.Cells[4,i]);
    16sg.Cells[0,i]:=inttostr(i);
    17end;
    18edit4.text := inttostr(tot);
    19end;
    19. Mengisi tombol Hapus, dengan cara double klik tombol hapus lalu ketik listing berikut :
    procedure TFrmPinjam.Button5Click(Sender: TObject);
    begin
    sg.RowCount := sg.rowcount-1;
    end;
    20. Mengisi tombol Save, dengan cara double klik tombol save lalu ketik listing berikut :
    01procedure TFrmPinjam.Button2Click(Sender: TObject);
    02var i :integer;
    03begin
    04if messagedlg('Yakin akan disimpan',mtinformation,[mbyes,mbno],0)=mryes then
    05begin
    06adoquery4.sql.Clear;
    07adoquery4.sql.add ('insert into pinjam(id_pinjam,id_anggota,tgl_pinjam)values ("'+ edit1.Text +'","'+ dblookupcombobox1.Text +'","'+ datetostr(dt.date) +'")');
    08adoquery4.execsql;
    09 
    10for i :=1 to sg.RowCount-1 do
    11begin
    12adoquery3.SQL.Clear;
    13adoquery3.sql.add('insert into dpinjam(id_pinjam,id_buku,jumlah) values ("'+ edit1.Text +'","'+ sg.Cells[1,i] +'","'+ sg.cells[4,i] +'")');
    14adoquery3.ExecSQL ;
    15end;
    16end;
    17end;
    21. Membuat Koding program pada tombol close, double klik tombol close ketikkan listing berikut :
    procedure TFrmpinjam.Button4Click(Sender: TObject);
    begin
    frmpinjam.Close;
    end;
    22. Pada form Create (OnCreate) ketik listing berikut :
    01procedure TFrmPinjam.FormCreate(Sender: TObject);
    02begin
    03edit2.text:=datetostr(dt.Date);
    04edit6.Text:=datetostr(dt2.Date);
    05sg.RowCount :=1;
    06sg.ColCount:=5;
    07sg.Cells[0,0]:='No';
    08sg.Cells[1,0]:='Kode Buku';
    09sg.Cells[2,0]:='Judul buku';
    10sg.Cells[3,0]:='Pengarang';
    11sg.Cells[4,0]:='Qty';
    12 
    13sg.ColWidths [0]:=40;
    14sg.ColWidths [1]:=60;
    15sg.ColWidths [2]:=80;
    16sg.Colwidths[3]:=80;
    17sg.colwidths[4]:=60;
    18 
    19end;