润乾报表打印非入库型填报数据
2016-12-02 14:22
302 查看
需求描述:
润乾报表采用APPLET打印,能够实现对报表展现页面的精确打印控制。但是报表只能打印当前页面运算展现的数据,对于填报表,如果用户在报表展现之后填报数据,而这些数据并没有提交入库,那么这些数据就没有保存,也不可能出现在打印页面里。
用户对想利用润乾报表的精确打印功能来实现对单据的精确打印控制,而单据中的数据无须提交入库,只需要即时填写即时打印。本文就利用了传参的方法将用户填写的临时数据从填报表传递至打印页面,实现了对非入库型填报数据的打印功能。
解决思路:
从填报表展现页面传递当前报表的填报单元格及填报值至报表打印预览页面(打印模式发布报表模板),报表打印页面的报表解析传递来的参数,并在相应单元格中利用参数填充,这时打印预览页面中的报表就含有用户填写的非入库提交的临时数据了。
实现步骤:
报表模板设计:input.raq,填报页面报表模板
![](http://geeznros.oicp.net:84/reportmis/mis2/reportcenter/ewebeditor/imgServlet?fileID=eebd2d74-3dbc-4ecc-a14a-b6b42396bd25)
该报表为填报表,其中B2,B3,B4为可写单元格。
inputPrint.raq,打印预览页面报表模板
![](http://geeznros.oicp.net:84/reportmis/mis2/reportcenter/ewebeditor/imgServlet?fileID=8f086fd2-22b8-46b3-9e50-5782a63cd39c)
该报表模板样式和上面统一,报表参数pvalue,字符串型,用于接收从填报页面传递来的参数。传递的参数形如:”B2:aaaa;B3:bbbb;B4:cccc;”
表达式:
B2:=mid(pvalue,pos(pvalue,’B2′)+3,pos(pvalue,’;',pos(pvalue,’B2′)))
B3:=mid(pvalue,pos(pvalue,’B3′)+3,pos(pvalue,’;',pos(pvalue,’B3′)))
B4:=mid(pvalue,pos(pvalue,’B4′)+3,pos(pvalue,’;',pos(pvalue,’B4′)))
解析表达式可以看出,该表达式截取pvalue中对应单元格名冒号后的值在对应单元格中进行展现。用到函数mid(),pos(),详见润乾函数帮助。
报表填报页面inputPrint.jsp
部分代码说明:
//javascript实现将当前页面的单元格数据传递给打印预览页面print1.jsp
<script type=”text/javascript”>
function getPvalue(celllist){
var cellArray=new Array();
cellArray=celllist.split(‘,’);
var pvalue=”";
//根据单元格列表(B2,B3,B4)构建数组,循环遍历数组,得到单元格值,并将其拼接成”单元格名1:单元格填报值1;单元格名2:单元格填报值2;……”的形式
for(i = 0; i < cellArray.length; i++)
var rid=’report1_’+cellArray[i];
pvalue=pvalue+cellArray[i]+”:”+document.getElementById (rid).value+”;”;
//alert(pvalue);
return pvalue;
}
//打开打印预览页面,并传递参数pvalue
function show_print(obj){
var returnvalue=getPvalue(obj);
//var strurl=”http://baidu.com”;
var strurl=”/demo/jsp/print1.jsp?raq=/inputPrint.raq&pvalue=’”+returnvalue+”‘”;
window.open(strurl,”_blank”,” Width=800 ,Height=1000,top=100,left=100″);
//Response.Redirect()
</script>
//利用userFuncBarElements自定义功能按钮建立链接按钮,调用javascript打开打印预览页面。
<table align=”center” width=”100%” height=”100%”>
<tr><td>
<report:html name=”report1″ reportFileName=”input.raq”
funcBarLocation=”top”
needPageMark=”yes”
generateParamForm=”no”
params=”<%=param.toString()%>”
width=”-1″
userFuncBarElements=”<a href=’javascript:show_print(\”B2,B3,B4\”);’>打印</a>”
exceptionPage=”/reportJsp/myError2.jsp”
/>
</td></tr>
</table>
报表填报页面previewprint.jsp
部分代码说明:
<%
request.setCharacterEncoding( “GBK” );
String report = request.getParameter( “raq” );
String reportFileHome=Context.getInitCtx().getMainDir();
StringBuffer param=new StringBuffer();
//保证报表名称的完整性
int iTmp = 0;
if( (iTmp = report.lastIndexOf(“.raq”)) <= 0 ){
report = report + “.raq”;
iTmp = 0;
Enumeration paramNames = request.getParameterNames();
if(paramNames!=null){
while(paramNames.hasMoreElements()){
String paramName = (String) paramNames.nextElement();
String paramValue=request.getParameter(paramName);
if(paramValue!=null){
//把参数拼成name=value;name2=value2;…..的形式
param.append(paramName).append(“=”).append(paramValue).append(“;”);
%>
……
<table align=”center” width=”100%” height=”100%”>
<tr><td>
<report:print name=”report1″
reportFileName=”inputPrint.raq”
params=”<%=param.toString()%>”
savePrintSetup=”no”
needSelectPrinter=”no”
width=”800″
height=”1000″
/>
打印模式下发布报表inputPrint.raq该报表接受参数pvalue并在报表模板中解析,并把传递的参数在打印页面中展现。
报表效果展现:
填报页面:
![](http://geeznros.oicp.net:84/reportmis/mis2/reportcenter/ewebeditor/imgServlet?fileID=27354170-33b8-4405-8536-938e15574cb3)
打印页面
![](http://geeznros.oicp.net:84/reportmis/mis2/reportcenter/ewebeditor/imgServlet?fileID=0b403f0b-69ca-4237-983e-bdad5fa43792)
可以看出用户即时填报的数据已经在打印预览页面的相应区域显示,通过这种方式实现了数据的暂存,可以将非入库的填报数据在打印页面中精确打印。
需求描述:
润乾报表采用APPLET打印,能够实现对报表展现页面的精确打印控制。但是报表只能打印当前页面运算展现的数据,对于填报表,如果用户在报表展现之后填报数据,而这些数据并没有提交入库,那么这些数据就没有保存,也不可能出现在打印页面里。
用户对想利用润乾报表的精确打印功能来实现对单据的精确打印控制,而单据中的数据无须提交入库,只需要即时填写即时打印。本文就利用了传参的方法将用户填写的临时数据从填报表传递至打印页面,实现了对非入库型填报数据的打印功能。
解决思路:
从填报表展现页面传递当前报表的填报单元格及填报值至报表打印预览页面(打印模式发布报表模板),报表打印页面的报表解析传递来的参数,并在相应单元格中利用参数填充,这时打印预览页面中的报表就含有用户填写的非入库提交的临时数据了。
实现步骤:
报表模板设计:input.raq,填报页面报表模板
该报表为填报表,其中B2,B3,B4为可写单元格。
inputPrint.raq,打印预览页面报表模板
该报表模板样式和上面统一,报表参数pvalue,字符串型,用于接收从填报页面传递来的参数。传递的参数形如:”B2:aaaa;B3:bbbb;B4:cccc;”
表达式:
B2:=mid(pvalue,pos(pvalue,’B2′)+3,pos(pvalue,’;',pos(pvalue,’B2′)))
B3:=mid(pvalue,pos(pvalue,’B3′)+3,pos(pvalue,’;',pos(pvalue,’B3′)))
B4:=mid(pvalue,pos(pvalue,’B4′)+3,pos(pvalue,’;',pos(pvalue,’B4′)))
解析表达式可以看出,该表达式截取pvalue中对应单元格名冒号后的值在对应单元格中进行展现。用到函数mid(),pos(),详见润乾函数帮助。
报表填报页面inputPrint.jsp
部分代码说明:
//javascript实现将当前页面的单元格数据传递给打印预览页面print1.jsp
<script type=”text/javascript”>
function getPvalue(celllist){
var cellArray=new Array();
cellArray=celllist.split(‘,’);
var pvalue=”";
//根据单元格列表(B2,B3,B4)构建数组,循环遍历数组,得到单元格值,并将其拼接成”单元格名1:单元格填报值1;单元格名2:单元格填报值2;……”的形式
for(i = 0; i < cellArray.length; i++)
var rid=’report1_’+cellArray[i];
pvalue=pvalue+cellArray[i]+”:”+document.getElementById (rid).value+”;”;
//alert(pvalue);
return pvalue;
}
//打开打印预览页面,并传递参数pvalue
function show_print(obj){
var returnvalue=getPvalue(obj);
//var strurl=”http://baidu.com”;
var strurl=”/demo/jsp/print1.jsp?raq=/inputPrint.raq&pvalue=’”+returnvalue+”‘”;
window.open(strurl,”_blank”,” Width=800 ,Height=1000,top=100,left=100″);
//Response.Redirect()
</script>
//利用userFuncBarElements自定义功能按钮建立链接按钮,调用javascript打开打印预览页面。
<table align=”center” width=”100%” height=”100%”>
<tr><td>
<report:html name=”report1″ reportFileName=”input.raq”
funcBarLocation=”top”
needPageMark=”yes”
generateParamForm=”no”
params=”<%=param.toString()%>”
width=”-1″
userFuncBarElements=”<a href=’javascript:show_print(\”B2,B3,B4\”);’>打印</a>”
exceptionPage=”/reportJsp/myError2.jsp”
/>
</td></tr>
</table>
报表填报页面previewprint.jsp
部分代码说明:
<%
request.setCharacterEncoding( “GBK” );
String report = request.getParameter( “raq” );
String reportFileHome=Context.getInitCtx().getMainDir();
StringBuffer param=new StringBuffer();
//保证报表名称的完整性
int iTmp = 0;
if( (iTmp = report.lastIndexOf(“.raq”)) <= 0 ){
report = report + “.raq”;
iTmp = 0;
Enumeration paramNames = request.getParameterNames();
if(paramNames!=null){
while(paramNames.hasMoreElements()){
String paramName = (String) paramNames.nextElement();
String paramValue=request.getParameter(paramName);
if(paramValue!=null){
//把参数拼成name=value;name2=value2;…..的形式
param.append(paramName).append(“=”).append(paramValue).append(“;”);
%>
……
<table align=”center” width=”100%” height=”100%”>
<tr><td>
<report:print name=”report1″
reportFileName=”inputPrint.raq”
params=”<%=param.toString()%>”
savePrintSetup=”no”
needSelectPrinter=”no”
width=”800″
height=”1000″
/>
打印模式下发布报表inputPrint.raq该报表接受参数pvalue并在报表模板中解析,并把传递的参数在打印页面中展现。
报表效果展现:
填报页面:
打印页面
可以看出用户即时填报的数据已经在打印预览页面的相应区域显示,通过这种方式实现了数据的暂存,可以将非入库的填报数据在打印页面中精确打印。
相关文章推荐
- 润乾报表 填报表实现动态更新数据
- 润乾报表数据填报需要注意的问题
- 润乾报表 统计表如何修改页面数据,并将修改后的数据导出打印
- 润乾报表:动态改变填报更新数据的数据源
- 润乾报表5普通填报表单元格实现数据二次筛选
- 水晶报表导出数据并实现打印
- 润乾报表语义层数据管理批量置数之修改现有数据
- C#实现水晶报表绑定数据并实现打印
- 润乾报表中行式填报表如何实现批量删除
- 润乾报表根据数据的不同扩展出列宽不同的格子
- 润乾报表中填报中文出现乱码
- NET报表Web项目数据填报功能
- 填报表编辑框数据校验不通过填报单元格值置空
- 使用润乾报表数据作为数据源创建统计图
- 快逸报表填报后保留填报数据并自动关闭提示窗口
- C#.NET自定义报表数据打印
- 润乾报表语义层数据管理之引出
- 打印报表数据
- 润乾报表语义层数据管理之数据查询
- 票据打印, 银行账单打印, 标签印刷, 文档打印, 条码打印, 批量打印, 包装纸打印与设计,可变数据打印,数据库印刷,HMI报表打印,VC++源码库解决方案