Sabtu, 10 Oktober 2009

Visual Foxpro Report Multi Band

Saat liburan lebaran ini, seseorang mengirim email ke saya. Kirain paket apa gitu, taunya minta pencerahan tentang Report Multi Detail

Ini Permintaannya :


Dan ini script untuk data mysqlnya :

CREATE DATABASE IF NOT EXISTS aneka_report;
USE aneka_report;

DROP TABLE IF EXISTS `tbl_potongan`;
CREATE TABLE `tbl_potongan` (
`kd_pot` varchar(11) NOT NULL,
`nm_pot` varchar(33) NOT NULL,
`jmlh` int(7) unsigned NOT NULL,
`no_slip_pot` varchar(22) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `tbl_potongan` (`kd_pot`,`nm_pot`,`jmlh`,`no_slip_pot`) VALUES
('YPT-9281','Potongan Absensi',17500,'PT-34420871'),
('YPT-4424','Potongan JAMSOSTEK',87500,'PT-34420871'),
('YPT-9003','Potongan Kredit Usaha',400000,'PT-34420871'),
('YPT-7537','Potongan Koperasi',21200,'PT-34420871'),
('ZKL-8920','Potongan Penggantian',290000,'PT-1357911'),
('ZKL-2892','Potongan Rumah',2100000,'PT-1357911');

DROP TABLE IF EXISTS `tbl_slip_gaji`;
CREATE TABLE `tbl_slip_gaji` (
`no_slip` varchar(22) NOT NULL,
`tgl_slip` date NOT NULL,
`nik` varchar(33) NOT NULL,
`nm_krywn` varchar(33) NOT NULL,
`no_rek_bank` varchar(22) NOT NULL,
`periode` varchar(15) NOT NULL,
`no_slip_tunj` varchar(22) NOT NULL,
`no_slip_pot` varchar(22) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `tbl_slip_gaji` (`no_slip`,`tgl_slip`,`nik`,`nm_krywn`,`no_rek_bank`,`periode`,`no_slip_tunj`,`no_slip_pot`) VALUES
('289.DK95','2007-01-23','29359832','Udin Burhanudin','32440.400.9','Jan-07','TJ-39908SA','PT-34420871'),
('914.FG77','2008-05-05','82983380','Vero Hartuti','38922.900.5','Feb-06','TJ-224466','PT-1357911');

DROP TABLE IF EXISTS `tbl_tunjangan`;
CREATE TABLE `tbl_tunjangan` (
`kd_tunj` varchar(11) NOT NULL,
`nm_tunj` varchar(33) NOT NULL,
`jmlh` int(7) unsigned NOT NULL,
`no_slip_tunj` varchar(22) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `tbl_tunjangan` (`kd_tunj`,`nm_tunj`,`jmlh`,`no_slip_tunj`) VALUES
('XTJ-8992','Tunjangan Transportasi',250000,'TJ-39908SA'),
('XTJ-4720','Tunjangan Telekomunikasi',100000,'TJ-39908SA'),
('XTJ-6628','Tunjangan Kesehatan',321500,'TJ-39908SA'),
('HPT-7788','Tunjangan Luar Kota',277000,'TJ-224466'),
('HPT-9012','Tunjangan Resiko',1050000,'TJ-224466');

---------------------------------------------------------------------------------------------------------------------------------------
Lalu saya coba analisa dan buat solusinya seperti ini

SET DEFAULT TO "c:\Temp\Report"
cConnection = 'DRIVER={MySQL ODBC 3.51 Driver};DESC=;DATABASE=aneka_report'+;
';SERVER=localhost;UID=root;'+;
';PASSWORD=root;PORT=3306;OPTION=;STMT=;'

&& http://dev.mysql.com/get/Downloads/Connector-ODBC/3.51/mysql-connector-odbc-3.51.27-win32.msi/from/http://mirrors.dedipower.com/www.mysql.com/

cNo_Slip = '289.DK95'
&&cNo_Slip = '914.FG77'

nConnection = SQLSTRINGCONNECT(cConnection)
&&MESSAGEBOX(nConnection) && 1 = connect

SQLEXEC(nConnection,"select * from tbl_slip_gaji where no_slip=?cNo_Slip","cur_slip_gaji")
*!* SELECT cur_slip_gaji
*!* BROWSE

STORE 'XXX' TO no_slip_tunj, no_slip_pot
cno_slip_tunj = cur_slip_gaji.no_slip_tunj
cno_slip_pot = cur_slip_gaji.no_slip_pot
cScript = "select '1' as tipe, no_slip_tunj as faktur, kd_tunj as kode, nm_tunj as nama, jmlh as nilai "+;
"from tbl_tunjangan where no_slip_tunj=?cno_slip_tunj UNION ALL "+;
"select '2' as tipe, no_slip_pot as faktur, kd_pot as kode, nm_pot as nama, jmlh as nilai "+;
"from tbl_potongan where no_slip_pot=?cno_slip_pot "
SQLEXEC(nConnection,cScript,"cur_detail_gaji")

*!* SELECT cur_detail_gaji
*!* BROWSE

REPORT FORM myReport PREVIEW


Atau Anda bisa download lengkapnya di sini.

Have fun with this