润乾报表动态宏控制列显示状态
通过对最近一段时间工作的总结,了解到许多客户需求在参数表单查询数据的时候想动态的控制某一列状态的显示,我们这里介绍一下如何巧妙的应用动态宏控制某一列的显示状态的动态显示,达到的目的是在点击查询按钮之前某一列是以一种特定的状态显示,而在点击查询按钮后对应列的状态变为我们需要查询到的状态。下面我们以一个简单的填报表为例,实现以上的功能。
第一步我们需要新建一个简单的填报表。
首先我们先连好数据源,并在对应的单元格中填入对应表达式,具体的字段和需要填入的单元格如图一所示,建好报表以后我们设置A2-H2单元格均为可写属性,并设置E2单元格的编辑风格为下拉数据集,下拉数据集的设置方法如下面的图二所示。
图一
图二
然后我们给这个填报表添加四个参数,分别为cuid,about,sellid,state,均为字符型,接着我们在数据集ds1中也添加上这几个参数,对应的添加和设置方式如图三所示,做完以上步骤后,我们在数据集ds1的检索条件中写入:bespoke.sellID = employee.ID and (bespoke.dfrr like ? or ? is null or ? =”) and (bespoke.about like ? or ? is null or ?=”) and ( employee.name like ? or ? is null or ?=”) and ( bespoke.state=? or ? is null or ?=”)。
图三
第二步我们要新建一个对应的参数表单,来实现对应参数的查询。
我们先新建一张空白的填报表,然后在对应的单元格写入如下面图四中所示的对应的表达式,写好后我们选中B1单元格,然后在右侧B1单元格对应的变量名一项中写入:cuid,设置方法如图五所示。然后我们用同样的方法在D1,E1,F1单元格对应的变量名中分别写入:about,sellid,state。
图四
图五
然后我们设置B1,D1,F1,H1单元格为可写属性,并设置H1单元格的编辑风格为下拉数据集,设置的形式和方法与图三中的设置方法相同,只是将图三中数据集ds4设置成ds1即可。然后我们追加一个数据列,并在I1单元格中写入值:1。
第三步我们通过设置动态宏以及参数,以达到控制E2单元格的数据根据我们需要在查询前后显示特定状态的目的。
首先我们在主表单中增加一个参数,名字为ifselect,然后在参数表单中设置I1单元格对应的变量名为ifselect,设置的方法与图五相同。
然后我们在主报表中新建一个动态宏,名字为macro1,设置宏类型为动态宏,然后编辑宏的值,在值的表达式中写入内容:if(ifselect!=”1″,”and bespoke.state!=’22′”,”"),并确定,这个表达式的含义是如果没有点击查询按钮,那么E2单元格中的数据显示为state!=22的所有数据,而如果点击了查询按钮那么这个宏将不起任何作用,返回空值,这里的state=22对应的显示的状态为“已处理”,具体设置方法如图六所示:
图六
接下来我们点开数据集ds1并编辑,在数据集ds1的检索条件后面再补上: ${macro1}。最终的检索条件如图七所示:
图七
完成以上步骤我们的报表就已经设计好了,我们保存主报表为test.raq,保存参数表单为test_arg.raq,然后分别发布两个报表,这样我们就能看见想要的效果了。我们在没有输入参数点击查询之前列出的数据为所有主报表中E2单元格对应的state数据不等于22的数据,即状态不为已处理的所有数据,而当我们输入条件并点击查询后,显示出的数据即为我们按输入条件所对应的数据。效果图如下面的图八,图九所示:
图八
图九
其中图八为没有点击查询之前所显示的数据,图九为我们输入条件:状态下拉数据集中选择已处理,然后点击查询后所搜出来的数据。这样我们所需的应用动态宏控制某一列的显示状态能够动态显示的目的就达到了。