procedure cetakSemua; var totalBeli,totalJual,jual,beli,stock:Integer; //variabel untuk perhitungan begin with FstockBarang do //nama formnya begin totalJual:=0; //inisialisasi awal totalBeli:=0; with Q_stock_barang do //saya menggunakan Query pada tab data Acces. begin Close; SQL.Clear; SQL.Add('select * from t_master_barang'); //inisialisasi query Prepare; if Prepared=true then begin Open; end; end; with Q_total_harga_beli do //query perhitungan data harga beli , dengan query string sama dengan Q_stock_barang begin try //fungsi try , untuk membangkitkan eksepsi First; //memposisikan kursor pada field pertama dari tabel while not Eof do //Eof=end of field , bila belum sampai pada field terakhir , maka perintah setelahnya akan terus dieksekusi begin beli:=StrToInt(fieldbyname('harga_beli').AsString); //var beli diisi dengan field harga_beli stock:=StrToInt(fieldbyname('stock_barang').AsString); //var stock diisi dengan field stock totalBeli:=totalBeli+(beli*stock); //menjumlahkan hasil perkalian tiap field Next; // berfungsi agar kursor berpindah pada field selanjutnya end; finally //fungsi finally , di eksekusi bila fungsi try telah mencapai kondisi tertentu , dalam hal ini Eof. lblTotalHargaBeli.Caption:=IntToStr(totalBeli); //mengisi lblTotalHargaBeli dengan var totalBeli end; end; with Q_total_harga_jual do begin try First; while not Eof do begin jual:=StrToInt(fieldbyname('harga_jual').AsString); stock:=StrToInt(fieldbyname('stock_barang').AsString); // penjelasannya sama dengan query total beli totalJual:=totalJual+(jual*stock); Next; end; finally lblTotalHargaJual.Caption:=IntToStr(totalJual); end; end; with Q_total_stock_barang do begin Close; SQL.Clear; SQL.Add('select SUM(stock_barang) AS total from t_master_barang'); //menjumlahkan semua stock barang Prepare; if Prepared=true then // agar lebih afdol query siap di eksekusi. begin Open; lblTotalStockBarang.Caption:=fieldbyname('total').AsString; end; end; lblTotalPerkiraanLaba.Caption:=IntToStr(totalJual-totalBeli); //menghitung perkiraan laba end; end; Selanjutnya , saya men-triger procedure tadi pada tombol cetak , seperti di bawah ini : procedure TFstockBarang.btnCetakClick(Sender: TObject); begin cetakSemua; if Q_stock_barang.Prepared=true then begin QRstockBarang.Refresh; QRstockBarang.Prepare; QRstockBarang.PreviewModal; end; end;
6 komentar:
Kenapa mesti susah2 pake koding gan??? kan ada komponen QRExpression??? tinggal di sum()... jadi deh... :)
awalnya gitu gan ..
Cuma pas mau milih database fieldnya , gak nongol tuh field yang ane mau SUM ..
Makanya ngoding gitu !! hehe ..
tenkyu ..
Biasanya klo nama fieldnya ga nongol, kemungkinannya :
1. Dataset belom active
2. Dataset terpisah dari report (di datamodule misalnya)
Yuph , saya emang nyimpen semua tabel and datasetnya di data module , biar lebih gampang organisirnya.Yaa kadung koding , jadi cara saya gak salah juga dong !? hehe ..
komponen yang dipake buat bikin tabel kaya gitu apa ya? soalnya saya juga mau bikin report yang pake tabel, cuma belum bisa juga.
bikin garis vertical di dalam tabel itu gimana sih caranya ? pake apa ?
Posting Komentar