宏定义
宏定义
本菜单项的功能是用于定义报表中用到的宏。
宏是一个没有数据类型的字符串标识,在报表运算之前,系统会全面搜索整张报表定义,将所有的宏名替换成宏值。
利用宏可以在报表中动态的进行表达式的替换,根据用户传入的不同宏值,在报表中可以计算出不同的表达式结果,从而得到不同的报表信息,这样用户就不用根据不同的情况编制许多不同的报表了,大大减轻了用户的工作量。
属性值不能用宏,宏只能用在表达式中,填报属性、数据集属性中的参数值,这两个地方目前不能用宏,其它地方的表达式都可以使用。
表达式中的引用方法为${宏名}。 宏不能写在引号里面。
-
sql语句中使用宏
-
举例:
SELECT contract.contractno,contract.${macro1},contract.amount FROM contract WHERE contract.signdate >? and contract.signdate <? ORDER BY contract.signdate ASC 可以在sql语句的任意一个位置使用宏
-
-
表达式中使用宏
-
举例:=ds1.${macro1}
宏的类型分普通宏和动态宏
-
点击 配置-宏定义 ,可打开报表宏编辑界面,如下图所示:
点击【增加】按钮,添加一个宏定义,可以编辑宏名称,描述,值和宏类型;在宏列表中选择一个宏,点击【删除】按钮,可删除一个宏定义;点击【上移】/【下移】按钮,可调整宏列表中宏的位置。编辑完点击【确定】按钮即可。
宏的类型分普通宏和动态宏
普通宏和动态宏的主要区别在于普通宏是直接将宏值传到报表中计算,动态宏是先计算传进来的宏,然后再把计算得到值做为宏值传到报表中参与计算,通过下面的例子看两者的区别,首先定义宏,如下图所示:
这里定义了两个宏,值一样,但是类型不同,通过下面的报表看下区别,如下图:
预览如下图所示:
A1和A2表达式都是把字符串”aaa”和宏拼成一个字符串,在A1中用普通宏是把宏值”111+111”传到单元格里才计算的,最终结果为”aaa111111”,在A2中用的是动态宏,在传进来之前先计算111+111得到222,再把该值作为宏值传给报表,所以产生了不同的结果。