商业智能,数据分析,路漫漫其修远兮。
在实际项目中,经常遇到打印需求,对于打印的特殊需求越来越多,如需要记录最后一个打印位置,当前打印根据最后一个打印位置继续打印功能,如银行存折数据,而是根据上次打印位置继续打印。
如何在润乾的打印功能中实现上述需求?
一般思路:邮政储蓄存折样本:
首先,润乾提供打印后调用的服务js函数runqian_printOver()打印后调用runqian_printOver()计算本次打印的最后一页高度、报表名称等相关参数,统一插入库中。再次访问时,根据相关字段取出相应记录raq插入空白线,设置行高存成新的raq文件,然后通过标签中的文件printedRaq属性打印修改后raq。实现记录打印功能。
首先,准备一份可以显示多页数据的报告(添加一个参数模板,通过选择不同的参数来模拟多次打印的功能)。
由于将打印记录的相关数据插入数据库,创建数据库表存储报表名称、最后一页的行高、参数、状态等信息(根据具体需要确定具体参数,例如只使用报表名称作为标志),表结构如下。
REPORTNAMEVARCHAR2(20)Y
ROWHEIGHTNUMBERY
在显示报表之前,检查是否有打印记录。如果有,读取行高,插入当前报表,设置行高,然后将其存储为新的raq,然后通过标签printedRaq打印修改后的属性(打印报表,用于显示报表不同)raq。(因为这个属性只能存储具体的属性raq,所以不能用reportdefine报表对象需要单独存储为一种形式raq文件)。如果没有记录,正常。
///查询是否有记录。如果有记录,将最后一页的行高插入报告的第一行,然后将新报告存储在标签中printedRaq属性
Connectconnect=newConnect();
ResultSetres=connect
.executeQuery(“select*fromPRINTMEMORYtwheret.reportname=‘”
report );
//如果数据库中没有记录,则表示第一次打印。若有记录计算
if(res.next()){
///读取历史打印位置(行高)插入报表第一行
reportTemp=“temp” report;
floatrowHeight=res.getFloat(“ROWHEIGHT”);
System.out.println取历史打印位置: rowHeight);
.getRealPath(reportFileHome File.separator report));
rd.insertRow(1,1);
rd.getRowCell(1).setRowHeight(rowHeight);
File.separator reportTemp),rd);
}else{
System.out.println(第一次打印);
reportTemp=report;
打印后,润乾内置函数将自动调用runqian_printOver(),重写runqian_printOver()函数内容,通过ajax或直接嵌入java插入或修改行高记录的数据库表代码。
在后台servlet高计算和数据变更:邮政储蓄存折样本
输入参数为打印报表(注意不是浏览报表),即标签printedRaq属性报表名称及相关参数。
然后通过pagebuilder分页计算,取最后一页,逐行遍历获取累计行高数。
floatrowHeight=0;
for(inti=1;i<=ireport.getRowCount();i ){
rowHeight=rowHeight ireport.getRowCell(i).getRowHeight();
最后,根据报表名判断是否是第一次打印数据库数据insert和update操作。
reportName );
//有记录update,无记录insert
connect.executeUpdate(“UPDATEprintmemorySETrowheight=“
rowHeight ”WHEREreportname=‘” reportName );
connect.executeInsert(“INSERTINTOprintmemoryVALUES(‘”
reportName rowHeight );
更多打印问题请查看:邮政储蓄存折样本找到74601906个原邮政储蓄存折样本设计图片,包括邮政储蓄存折样本图片、材料、海报、证书背景、源文件PSD、PNG、JPG、AI、CDR等格式素材!
毕业证样本网创作《邮政储蓄存折样本(打印银行存折--打印记录位置)》发布不易,请尊重! 转转请注明出处:https://www.czyyhgd.com/177859.html