目录

填报表中使用参数

填报表中使用参数

在5.1.4.raq 的例子中,报表在展现时,会把数据库所有用户展现出来,显然在某些情况下这是不合理的,特别是数据量很大的情况下,我们不可能把所有用户数据展现出来,这时,需要输入参数,来查询特定的数据,例如在填报的时候要先传入员工的编号,然后填入或修改的信息就是这个员工的简历了,每次填报只填一个员工的信息。

那么,如何在填报表使用参数呢?实际上与普通的报表使用方法是一样的,我们在5.6的例子基础上增加参数,介绍如何在填报表中使用参数。

打开5.1.4.raq,并另存为7.1.raq,点击配置-》参数,然后增加如下三个参数:

 


他们分别是雇员ID,雇员所在地区,职务,也就是我们可以根据empID来查取特定的用户信息,而且也可以根据area与duty进行模糊查询。

以上步骤仅是完成参数定义,定义完的参数需要在报表中引用。例如,在SQL中引用方式如下:

打开数据集,并编辑数据集ds1,切换至检索条件标签页,编辑条件如下:

 


条件表达式为:(雇员.雇员ID = ? or ? is NULL) and 雇员.职务 like ? and 雇员.地区 like ? 即SQL的where条件部分。可以看到一共使用了四个问号。在正常的SQL中,他们应该是具体的值才对,但实际上,这里的问号由报表系统根据用户输入的值作一个动态的替换,细心的读者可能会问,是怎么替换的呢,又是怎么知道哪个问号对应哪个参数?的确,到目前为止这还是未知数,我们还必须定义一个参数引用序号,使得问号与参数之间形成一一对应,这步可以在SQL编辑器的参数中完成:

如下图,在SQL编辑器的参数中分别对SQL中的四个问号进行了一一引用,即@empID引用的是雇员ID,它对应于SQL中的第一个问号,第二个问号还是引用@empID,第三个引用的是'%'+@duty+'%',实际这个就可以生成模糊查询职务的语句,同理,很容易理解'%'+@area+'%'是地区的模糊查询条件。

 


到目前为止,参数报表就设计完了,在设计器里预览时,首先弹出参数输入框,提示输入参数数据,这里我们在雇员ID里输入1,查询ID为1的用户

 


点击【确定】按钮,得到预览的结果:

 


说明在设计器里预览成功了。接着我们把3.10.jsp修改成如下,并保存为7.1.jsp:

<%@ page contentType="text/html;charset=GBK" %><%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %><table align=center><tr><td><report:html name="report1" reportFileName="/填报专题/7.1.raq"needSaveAsWord="yes"needSaveAsPdf="yes"needSaveAsExcel="yes"/></td></tr></table>

发布报表,但发布到web上查看发现,还是出来全部的用户数据,而没有查询的输入框,这是因为我们默认的发布报表的JSP的TAG中没有配置相应的表单生成,用计事本打开7.1.jsp,在tag标签中增加generateParamForm="yes"。然后再在web预览,可以看到,已经自动生成录入参数的表单:

在雇员ID里输入1,就可以查询ID号为1的雇员信息了。

 


同样,我们可以在雇员地区中输入“华北”,来查询华北地区的雇员等等。

  • 参数使用流程

    参数使用流程一般按如下步骤:

    一、 在配置-》参数中定义所需要的参数,如empID。参数分为普通参数与动态参数,两者的区别是:动态参数可以引用普通参数、润乾函数库中的函数进行计算,将计算的结果返回给报表系统。

    二、 在SQL中用?表示本sql中用到的参数,并在SQL编辑器参数中引用第一步配置的实际参数,使他们与sql中的参数一一对应。当然也可以在报表单元格中直接引用第一步定义的参数。

    三、 如果在web中需要自动生成表单,那么,tag属性generateParamForm的值必须为yes。