Modul 5 Pembuatan Laporan I. Tujuan Mahasiswa dapat menampilkan informasi yang tersimpan dalam database (membuat laporan). II. Landasan Teori Setiap aplikasi database menuntut terciptanya laporan-laporan yang kemudian akan ditujukan ke user (pengguna aplikasi). Borland C++ Builder telah menyediakan komponen-komponen khusus untuk membuat sebuah laporan secara mudah dan cepat, yaitu yang dikelompokkan ke dalam tab page Quick Report pada Component Pallete. Pada modul ini, kita akan belajar membuat aplikasi database yang menghasilkan sebuah laporan sederhana dengan menggunakan Quick Report untuk kemudian dicetak ke printer. Meskipun banyak pakar memperkenalkan konsep kantor tanpa kertas, tapi dalam kenyataannya, laporan dalam bentuk kertas masih sering diperlukan. Sebuah laporan yang lengkap secara prinsip dapat terdiri dari 7 bagian sebagai berikut : - Bagian Judul (title). - Bagian header halaman (page header). - Bagian header grup (group header). - Bagian rincian (detail). - Bagian footer grup (group footer). - Bagian footer halaman (page footer). - Bagian ringkasan (summary). Bagian Judul (title). Bagian judul adalah bagian laporan yang hanya dicetak sekali saja, yakni pada saat laporan pertama kalinya mulai dicetak. Biasanya bagian judul dipakai untuk menampilkan nama file yang dicetak, tanggal hari ini, nama perusahaan atau nama jenis laporan. Pada gambar 5.1 bagian judul digunakan untuk mencetak nama laporan. 22
Bagian header halaman (page header). Bagian header halaman adalah bagian laporan yang dicetak di awal halaman setiap kali berganti halaman baru, biasanya dipakai untuk menampilkan nama field yang record-record-nya akan dicetak. Sering pula bagian header digunakan hanya untuk menampilkan garis -----------------, sebagai pembatas bagian rincian. Pada gambar 5.1. bagian header halaman dipakai untuk menampilkan tanda batas ------------- dan nama field. Bagian header grup (group header). Rincian yang dicetak dapat dikumpulkan dalam kelompok tertentu. Misalnya saja dalam contoh laporan pada gambar 5.1., rincian faktur dikelompokkan berdasarkan nama supplier (PT. Jaya Saputra). Disini kita dapat menampilkan header grup untuk menunjukkan judul kelompok record yang dicetak. Bagian rincian (detail). Bagian rincian sering disebut pula bagian detail. Sesuai namanya, bagian ini berisi rincian data yang dicetak. Artinya, data yang ingin kita cetak, dicetak lewat bagian rincian. Dalam contoh laporan gambar 5.1., bagian rincian berfungsi menampilkan record-record dari suatu database. Bagian footer grup (group footer). Sebagai penutup kelompok record, kita dapat tampilkan footer grup. Footer grup sering juga untuk menampilkan subtotal dari kelompok record yang ditampilkan seperti pada contoh laporan dalam gambar 5.1. Bagian footer halaman (page footer). Bagian footer halaman adalah bagian laporan yang dicetak diakhir halaman setiap kali akan bergantian halaman. Kita dapat menggunakan bagian footer untuk mencetak nomor halaman, atau garis --------------- sebagai pembatas bagian rincian. Kita juga dapat menggunakan bagian footer untuk mencetak subtotal untuk record-record yang ditampilkan dalam halaman bersangkutan. Bagian ringkasan (summary). Bagian ringkasan adalah bagian laporan yang dicetak menjelang selesainya laporan. Jadi, bagian ini selalu dicetak sesaat sebelum laporan selesai. Umumnya bagian ini dapat kita gunakan untuk mencetak nama file yang dicetak, nama operator komputer atau kita gunakan untuk mencetak total record yang tercetak, seperti pada contoh laporan pada gambar 5.1. 23
LAPORAN DATA MAHASISWA STMIK AKAKOM Judul N I M Nama Kota Telepon Nama Ortu Jurusan Manajemen Informatika Header grup 02310017 Herman Sanjaya Surabaya 031654317 Sanjaya 02310038 Ernita Putri Utami Semarang 024753621 Ibnu Barata 03310001 Sri Hartati Bengkulu 0736357402 Heru Indrayana 03310002 Jaka Saputra Sleman 027453621 Hari Jayanto 03310003 Lusi Andriani Medan 0757363165 H. Subakri 03310004 Rina Azizah Bantul 027453621 Muhammad Safei 03310005 Abi Saputra Bekasi 0218893266 Panca Trijaya 03310006 Lukman Hakim Riau 0273346466 Muhammad Hasyim 03310007 Indrianingsih Klaten 071652317 Harjono 03310008 Febtyana Sudihartini Bekasi 0218865467 Sudiri Saputra Header halaman Bagian rinci Subtotal item : 1 Footer grup Total item yang dicetak : 5 Ringkasan Contoh pembuatan laporan : Gambar 5.1. Contoh suatu laporan. 1. Membuat Suatu Database. Langkah-langkahnya : 1. Pilih Menu Tools Database Desktop, setelah database desktop aktif pilih menu File -> New -> Table. 2. Kemudian akan muncul kotak dialog Create Table, lalu pilih tipe Paradox 7. 24
3. Lalu akan muncul kotak dialog untuk pembuatan tabel yaitu : Create Paradox 7 Table. Dan disinilah kita akan mengisikan field-field untuk tabel yang akan dibuat. 4. Simpan tabel tersebut dengan nama DataPribadiMahasiswa pada direktori yang diinginkan dengan cara memilih tombol SaveAs. Jika menginginkan tabel baru, ulangi langkah-langkah diatas. 2. Membuat Koneksi ke Database Melalui BDE. Langkah-langkahnya : 1. Pilih menu Start Settings Control Panel pada system operasi windows, kemudian pilihlah icon BDE Administrator. 2. Setelah muncul kotak dialog BDE Administrator, pilih menu Object New dan akan muncul kotak dialog New Database Alias, dan pilihlah nama driver databasenya STANDART. 25
3. Kemudian klik OK, maka tampilannya menjadi : Isikan lokasi (path ) dari databasenya Isikan nama aliasnya 4. Jika nama aliasnya sudah diisikan (misalnya DataMahasiswa), pilih menu Object Apply, kemudian akan muncul kotak dialog konfirmasi dan pilihlah tombol OK. Sehingga tampilannya akan menjadi : Lokasi (path ) dari databasenya nama aliasnya 26
3. Membuat Form Utama untuk Input Data. Rancangan Formnya : Sintak programnya : 1. File Unitlaporan.h #ifndef UnitlaporanH #define UnitlaporanH #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Db.hpp> #include <DBTables.hpp> class TForm1 : public TForm published: // IDE-managed Components TLabel *Label1; TLabel *Label2; TLabel *Label3; TLabel *Label4; TLabel *Label5; TLabel *Label6; TEdit *Edit1; TEdit *Edit2; TEdit *Edit3; TEdit *Edit4; TEdit *Edit5; TEdit *Edit6; TButton *Button1; TButton *Button3; TQuery *Query1; TButton *Button2; void fastcall Button3Click(TObject *Sender); 27
void fastcall Button1Click(TObject *Sender); void fastcall Button2Click(TObject *Sender); private: // User declarations public: // User declarations void Kosongkan(); fastcall TForm1(TComponent* Owner); ; extern PACKAGE TForm1 *Form1; #endif 2. Unitlaporan.cpp #include <vcl.h> #pragma hdrstop #include "Unitlaporan.h" #include "UnitTampilLaporan.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) void fastcall TForm1::Button3Click(TObject *Sender) Close(); void fastcall TForm1::Button1Click(TObject *Sender) Query1->DatabaseName="DataMahasiswa"; Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add("INSERT INTO DataPribadiMahasiswa (NIM,Nama,Jurusan,Kota,Telepon,Ortu) VALUES"); Query1->SQL->Add("('"+Edit1->Text+"','"+Edit2->Text+"','"+Edit3->Text+"','"+Edit4- >Text+"','"+Edit5->Text+"','"+Edit6->Text+"')"); Query1->ExecSQL(); ShowMessage(AnsiString("Data Sudah Tersimpan...")); Kosongkan(); Edit1->SetFocus(); void TForm1::Kosongkan() Edit1->Text = ""; Edit2->Text = ""; Edit3->Text = ""; Edit4->Text = ""; 28
Edit5->Text = ""; Edit6->Text = ""; void fastcall TForm1::Button2Click(TObject *Sender) Form2->Show(); Form1->Hide(); Hasil eksekusi : 3. Membuat Form untuk Hasil Laporan. Rancangan Formnya : Sintak programnya : 1. File UnitTampilLaporan.h #ifndef UnitTampilLaporanH #define UnitTampilLaporanH 29
#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Db.hpp> #include <DBTables.hpp> #include <ExtCtrls.hpp> #include <QuickRpt.hpp> #include <Qrctrls.hpp> class TForm2 : public TForm published: // IDE-managed Components TQuickRep *QuickRep1; TQuery *Query1; TButton *Button1; TQRBand *QRBand1; TQRLabel *QRLabel1; TQRBand *QRBand3; TQRShape *QRShape7; TQRShape *QRShape10; TQRShape *QRShape11; TQRShape *QRShape12; TQRDBText *QRDBText1; TQRShape *QRShape8; TQRDBText *QRDBText2; TQRDBText *QRDBText4; TQRDBText *QRDBText5; TQRDBText *QRDBText6; TQRBand *QRBand2; TQRShape *QRShape6; TQRShape *QRShape5; TQRShape *QRShape4; TQRShape *QRShape1; TQRShape *QRShape2; TQRLabel *QRLabel2; TQRLabel *QRLabel3; TQRLabel *QRLabel5; TQRLabel *QRLabel6; TQRLabel *QRLabel7; TQRBand *QRBand4; TQRSysData *QRSysData1; TQRBand *QRBand5; TQRSysData *QRSysData2; TQRShape *QRShape3; TQRLabel *QRLabel4; TQRDBText *QRDBText3; TQRShape *QRShape9; TButton *Button2; void fastcall Button1Click(TObject *Sender); void fastcall FormCreate(TObject *Sender); void fastcall Button2Click(TObject *Sender); private: // User declarations public: // User declarations fastcall TForm2(TComponent* Owner); ; extern PACKAGE TForm2 *Form2; 30
#endif 2. UnitTampilLaporan.cpp #include <vcl.h> #pragma hdrstop #include "Unitlaporan.h" #include "UnitTampilLaporan.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm2 *Form2; fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) void fastcall TForm2::Button1Click(TObject *Sender) QuickRep1->Preview (); void fastcall TForm2::FormCreate(TObject *Sender) QuickRep1->Visible = false; void fastcall TForm2::Button2Click(TObject *Sender) Form1->Show(); 3. Sintaks property SQL untuk Query1 Select NIM,Nama,Jurusan,Kota,Telepon,Ortu From DataPribadiMahasiswa Hasil eksekusi : 31
Tampilan laporan : III. Praktek Buatlah suatu form masukkan dan laporan seperti diatas dengan menggunakan Borland C++ Builder dan lampirkan listingnya. VI. Tugas Buatlah suatu form masukkan dan laporan dari suatu data obat-obatan dengan menggunakan Borland C++ Builder dan lampirkan listingnya. 32