Laporan, sebagai salah satu bentuk output khas dari informasi sistem, adalah fungsi penting dari sebagian besar sistem aplikasi yang merupakan fungsi luar biasa dan penting dari sistem MIS. Apakah ia memiliki fungsi pencetakan yang baik sering kali terkait dengan keberhasilan atau kegagalan sistem sampai batas tertentu. Delphi memiliki fungsi pelaporan yang kuat, tetapi fungsi pelaporannya tidak dapat memenuhi kebutuhan kita. Oleh karena itu, banyak pakar Delphi telah secara berturut -turut meluncurkan banyak kontrol laporan (modul) yang sangat baik sebagai suplemen untuk quickreport, di antaranya fastreport adalah perwakilan.
Fastreport menggabungkan keunggulan quickreport dan reportBuilder, ukurannya kecil, cepat dalam kecepatan, dan memiliki semua kode sumber. Saat mengembangkan sistem perawatan obat, penulis berhasil menghasilkan laporan berbasis bentuk yang persis sama dengan bentuk penerimaan obat dan alokasi obat menggunakan Fastreport 2.51. Izinkan saya memperkenalkannya kepada teman -teman saya di bawah ini.
Fastreport2.51 Alamat unduhan: http // www.skycn.com/soft/8805.html.
Analisis Persyaratan Laporan
Teman -teman yang bekerja di rumah sakit tahu bahwa ketika obat -obatan dimasukkan ke dalam gudang, mereka harus mengisi formulir penerimaan obat, dan ketika staf farmasi menerima obat -obatan, mereka harus mengisi formulir alokasi obat. Bentuk penerimaan obat dan bentuk alokasi yang digunakan oleh penulis tidak berdedikasi, tetapi formulir penerimaan produk umum dan formulir alokasi. Berbeda dengan laporan yang digunakan di department store dan sistem telekomunikasi, penampilannya berbentuk bar, dan setiap lembar dapat diisi dengan lima jenis obat, termasuk unit pengiriman, nomor pesanan pengiriman, unit pengiriman, nama produk, spesifikasi, unit, harga , Jumlah, dll., Satu kombinasi gaya dan tiga kali lipat.
Singkatnya, kami dapat meringkas persyaratan desain laporan sebagai berikut:
1. Ukuran: panjang 21cm dan lebar 10cm;
2. Masing -masing dapat mencetak 5 jenis obat, dan subtotal halaman ini ditemukan di bawah formulir.
3. Ketika ada lebih dari 5 obat, mulailah mencetak formulir baru.
Desain Laporan
1. Buka perancang laporan Fastreport dan rancang "formulir penerimaan obat" menurut Gambar 1.
(Gambarnya besar, tarik bilah gulir untuk ditonton)
Selain itu, variabel Inhj, outhj, Cahj, dan lineCount mewakili "total di dalam toko", "total di luar toko", "perbedaan total" dan "baris data total", dan variabel-variabel ini akan ditetapkan nilai dalam program.
2. Tekan F11 untuk memanggil penampil objek, pilih Band2, dan masukkan kode berikut di acara OnBeforPrint:
Mulai
Jika line#-1 <> 0 dan line#-1 mod 5 = 0 Kemudian
Mulai
showbandchild1
showbandband1
end
end
Dalam kode, gunakan fungsi bawaan line# dari Fastreport untuk mendapatkan nomor baris saat ini.
3. Pilih Child3 dan masukkan kode berikut dalam acara OnBeforPrint:
Mulai
lin = linecount // Tetapkan nilai ke variabel ini dalam program
Sedangkan lin mod 5 <> 0 lakukan
Mulai
showbandchild2 // cetak garis kosong
Inclin
end
showbandchild3
end
Tujuan kode ini adalah untuk mencetak garis kosong jika saluran data terakhir tidak cukup untuk ditampilkan formulir.
4. Pilih Band3 dan masukkan kode berikut di acara OnBeforPrint:
Mulai
showbandchild1 // Saat laporan tercapai, konten di bagian bawah formulir ditampilkan
end
5. Simpan laporan dan kembali ke lingkungan pengembangan Delphi.
Bagian Pemrograman Delphi
Di bagian pemrograman Delphi, kami terutama menyelesaikan lewat parameter yang diperlukan untuk laporan ini.
Pribadi
line1line2integer // Simpan nomor baris
inputxjintemp // entri subtotal ke gudang, jelas setelah setiap 5 baris, sama di bawah ini
outxjoutemp // output subtotal
CAJIAXJCATEMPREAL // Subtotal Perbedaan Harga
Di bawah ini adalah daftar kode untuk beberapa proses utama.
// proses penggabungan data bentuk tunggal
Prosedur tinputform.frdbdataset1nextsender tobject
var
Recountinteger
Mulai
Recount = adoruku.recordcount
Incline1 // Variabel ini dikirim ke file laporan untuk mengontrol pencetakan garis kosong
Incline2 // Variabel ini mengontrol nilai subtotal
Jika bukan adoruku.eof maka
Mulai
inputxj = inputxj+adoruku.fieldbyname'input jumlah'.asfloat
outxj = outxj+adoruku.fieldbyname'out-deposit jumlah '.asfloat
Cajiaxj = cajiaxj+adorukujxcj.asfloat
end
// Bersihkan nilai subtotal setelah setiap 5 baris
Jika line2 mod 5 = 0 dan recount> line2 Div 5 5 maka
Mulai
intemp = inputxj
outemp = outxj
Catemp = cajiaxj
inputxj = 0
outxj = 0
Cajiaxj = 0
end
// Tetapkan nilai ke variabel saat mencapai ujung dataset
Jika adoruku.eof maka
Mulai
intemp = inputxj
outemp = outxj
Catemp = cajiaxj
end
end
Program di atas didebug dan disahkan di Windows 2000/XP+Delphi6.0. Sejauh ini, kami telah mengisi desain formulir penerimaan obat, dan desain laporan serupa lainnya dapat merujuk pada proses di atas. Gambar 2 adalah efek pratinjau dari laporan yang dihasilkan saat program berjalan.
(Gambarnya besar, tarik bilah gulir untuk ditonton)