润乾集算报表应用开发之参数输入

   参数对于报表的重要性不言自明,润乾集算报表支持两种参数输入方案,可以使用集算报表设计参数模板联合报表一同发布,还可以自定义参数输入后与报表结合。二者并没有显著的差异,前者在开发使用上更加方便快捷,而后者则在灵活性上更胜一筹,用户在使用集算报表参数输入时可以根据实际需要进行选择。

  下面就上述两种参数输入方式的使用分别来看一下。

使用参数输入模板

  集算报表提供了“参数模板的报表类型,使用参数模板可以制作参数输入表单,而且其内置了多种编辑风格,如下拉树、下拉日历、列表框、下拉数据集等。使用时可以参照下面的步骤:

  1、定义参数模板

  新建参数模板类型报表,可以使用新建向导进行选择,也可以通过报表属性进行修改,新建的参数模板保存为orders_arg.rpx

wKioL1U-AebANHh9AABZpYbEhxg118.jpg

   定义参数模板内容,主要包括表单样式、查询内容等信息。

wKiom1U-AIGhgNQDAAA_Aw6YYj4248.jpg

   右键单元格设置编辑风格,设置B2D2为下拉日历,F2为编辑框。

wKioL1U-AeaydTqsAACYT3Hr9BY031.jpg

   在设计器中右侧的属性面板中设置单元格变量名称,用于数据报表接收参数。这里设置B2格变量名b_dateD2e_dateF2orderID

wKiom1U-AILADsBjAAA69Csks0s411.jpg

   2、编辑数据报表

   新建数据报表,保存报表名称为orders.rpx,在数据报表中定义参数,其中用于接收参数输入的参数名应与参数模板中变量名一致。

wKioL1U-AeayC4ReAACd9pEdmFw529.jpg

   设置报表数据集,这里要根据订购日期起止和订单ID来过滤数据,数据集SQL为:

wKiom1U-AIKT-mU9AACiH8dCO9w113.jpg

   SQL中的问号与参数要一一对应,包括名称和位置。

wKioL1U-AefDAnLXAAE7iQh9VLg797.jpg

   有时希望报表初次加载(不输入参数)时查询所有数据,此时需要修改SQL为:

   SELECT *  FROM 订单

   where (订购日期>=? or ? isnull)

   and (订购日期<=? or ? isnull)

   and (订单ID>? or ? isnull)

   同时参数部分也要做相应修改:

wKiom1U-AIOAlUZxAACna-sot8g972.jpg

   设置报表表达式,完成数据报表制作。

wKioL1U-AefjXEO_AAB8xBOr9jg825.jpg

   3、编写发布报表JSP页面

  集算报表安装后自带了一个完整的web应用demo,在[安装目录]\report\webapps下可以找到。该应用中的reportJsp目录下自带showReport.jsp为发布报表的页面,用户可以直接使用,其中主要包括如下内容,当用户自定义页面发布带有参数的报表时使用。

  报表部署可以参考润乾集算报表部署的相关文档,发布带有参数模板的报表时定义的JSP至少包含如下内容。

   (1)参数处理部分,通过request接收参数模板传递的参数,将参数拼接成 参数名1=参数值1;参数名2=参数值2;…的格式:

   EnumerationparamNames = request.getParameterNames();

   if(paramNames!=null){

       while(paramNames.hasMoreElements()){

          String paramName =(String) paramNames.nextElement();

          StringparamValue=request.getParameter(paramName);

          if(paramValue!=null){

           //把参数拼成name=value;name2=value2;.....的形式

           param.append(paramName).append("=").append(paramValue).append(";");

                  }

          }

      }

    (2)发布参数模板部分,使用集算报表提供的<report:param>标签发布参数报表,该标签中带有很多属性,使用时至少应包含nameparamFileName(模板名称)和params(参数):

    <report:paramname="form1" paramFileName="orders_arg.rpx"

         needSubmit="no"

       params="<%=param.toString()%>"/>

    (3)发布数据报表部分,联合参数模板一同发布的数据报表采用集算报表提供的<report:html>标签,其包含的的众多属性中必须使用的属性如下:

    <report:htmlname="report1" reportFileName="orders.rpx"

        params="<%=param.toString()%>"

   />

 

    最后报表在页面上展现:

wKiom1U-AIOhNHgpAAD1rhjyQJc796.jpg


【附】完整JSP代码:

<%@page contentType="text/html;charset=GBK" %>
<%@taglib uri="/WEB-INF/raqsoftReport.tld" prefix="report"%>
<%@page import="java.util.*"%>
<html>
<bodytopmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>
<%
         request.setCharacterEncoding("GBK" );
         StringBuffer param=new StringBuffer();
         
         Enumeration paramNames =request.getParameterNames();
         if(paramNames!=null){
                   while(paramNames.hasMoreElements()){
                            String paramName =(String) paramNames.nextElement();
                            StringparamValue=request.getParameter(paramName);
                            if(paramValue!=null){
                                     //把参数拼成name=value;name2=value2;.....的形式
                                     param.append(paramName).append("=").append(paramValue).append(";");
                            }
                   }
         }
%>
<tableid="rpt" width=100% height=100%>
                   <tr><td=top height=100%>
                   <tableid="param_tbl"><tr><td>
                            <report:paramname="form1" paramFileName="orders_arg.rpx"
                                     needSubmit="no"
                                     params="<%=param.toString()%>"
                            />
                   </td><td><ahref="javascript:_submit( form1 )"><imgsrc="../images/query.jpg" border=nostyle="vertical-align:middle"></a></td>
                   </tr></table>
         </td></tr>
         <tr><td=top height=100%>
                   <report:htmlname="report1" reportFileName="orders.rpx"
                            params="<%=param.toString()%>"
                   />
         </td></tr>
</table>
</body>
</html>

自定义参数输入

  用户自定义参数输入时,需要自己定义查询表单,设置查询条件等信息。如仍以上述查询报表为例,使用自定义参数输入可参考如下步骤:

   1、定义参数输入表单

   <formaction="showReport.jsp?rpx=orders.rpx" method="post">

         <p>订购日期起:<input type="text"name="b_date" /></p>

         <p>订购日期止:<input type="text"name="e_date" /></p>

         <p>订单ID大于:<input type="text"name="orderID" /></p>

         <input type="submit"value="查询" />

   <form>

   其中参数name应与数据报表中参数名一致,这里参数输入均为文本框。

 

   2、编辑数据报表

  编辑数据报表与使用参数输入模板中数据报表一致,此处不再赘述。

 

   3、定义发布报表页面

   (1)接收参数表单传递的参数:

    EnumerationparamNames = request.getParameterNames();

    if(paramNames!=null){

      while(paramNames.hasMoreElements()){

          String paramName =(String) paramNames.nextElement();

          StringparamValue=request.getParameter(paramName);

          if(paramValue!=null){

             //把参数拼成name=value;name2=value2;.....的形式

             param.append(paramName).append("=").append(paramValue).append(";");

               }

         }

     }

   这里仍然要将参数拼成参数名=参数值;…的形式,这样数据报表才能正常接收。

 

   (2)发布数据报表:

    <report:htmlname="report1" reportFileName="orders.rpx"

       params="<%=param.toString()%>"

    />

   最后访问参数输入页面,输入条件即可得到数据报表的查询结果。

 

  【附】完整JSP代码:

  1、参数输入界面query.jsp

<html>
<bodytopmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>
<formaction="show.jsp" method="post">
         <p>订购日期起:<input type="text" name="b_date"/></p>
         <p>订购日期止:<input type="text" name="e_date"/></p>
         <p>订单ID大于:<input type="text"name="orderID" /></p>
         <input type="submit"value="查询" />
<form>
</body>
</html>

  2、报表发布页面show.jsp

<%@page contentType="text/html;charset=GBK" %>
<%@taglib uri="/WEB-INF/raqsoftReport.tld" prefix="report"%>
<%@page import="java.util.*"%>
<html>
<bodytopmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>
<%
         request.setCharacterEncoding("GBK" );
         StringBuffer param=new StringBuffer();
         
         Enumeration paramNames =request.getParameterNames();
         if(paramNames!=null){
                   while(paramNames.hasMoreElements()){
                            String paramName =(String) paramNames.nextElement();
                            StringparamValue=request.getParameter(paramName);
                            if(paramValue!=null){
                                     //把参数拼成name=value;name2=value2;.....的形式
                                     param.append(paramName).append("=").append(paramValue).append(";");
                            }
                   }
         }
%>
<tableid="rpt" width=100% height=100%>
         <tr><td=top height=100%>
                   <report:htmlname="report1" reportFileName="orders.rpx"
                            params="<%=param.toString()%>"
                   />
         </td></tr>
</table>
</body>
</html>

  集算报表中使用参数模板非常方便,通过报表设计器中的向导即可快速完成;而当应用中已有或者需要自定义的参数输入界面时,集算报表也支持与自定义页面联合发布,非常灵活。


你可能感兴趣的:(集算报表,参数方案,自定义参数模板,参数模板)