宏
宏的概念
宏是一个没有数据类型的字符串标识,在报表运算之前,系统会全面搜索整张报表定义,将所有的宏名替换成宏值。
利用宏可以在报表中动态的进行表达式的替换,根据用户传入的不同宏值,在报表中可以计算出不同的表达式结果,从而得到不同的报表信息,这样用户就不用根据不同的情况编制许多不同的报表了,大大减轻了用户的工作量。
属性值不能用宏,宏只能用在表达式中,填报属性、数据集属性中的参数值,这两个地方目前不能用宏,其它地方的表达式都可以使用。
表达式中的引用方法为${宏名}。 宏不能写在引号里面。
- sql语句中使用宏
举例:
SELECT contract.contractno,contract.${macro1},contract.amount FROM contract WHERE contract.signdate >? and contract.signdate <? ORDER BY contract.signdate ASC;
注意:可以在sql语句的任意一个位置使用宏
- 表达式中使用宏
举例:=ds1.${macro1}
宏的类型
报表宏的类型分普通宏和动态宏。
普通宏和动态宏的主要区别在于:普通宏是直接将宏值传到报表中计算,动态宏是先计算传进来的宏,然后再把计算得到值做为宏值传到报表中参与计算。
对于普通宏还可根据来源的不同分为通用查询宏和自定义普通宏,区别在于:通用查询的宏为复杂SQL中所配置的通用查询宏,默认值固定为1=1,不允许修改,该宏不会显示在通用查询中;自定义普通宏可多次修改其默认值,且该宏会显示在通用查询面板中,并随查询条件一同展现,并为查询条件传入动态条件值。
通用查询宏显示在数据集宏中,自动添加到报表宏中,以方便报表引用。
宏的定义
宏的类型分普通宏和动态宏
普通宏和动态宏的主要区别在于普通宏是直接将宏值传到报表中计算,动态宏是先计算传进来的宏,然后再把计算得到值做为宏值传到报表中参与计算,通过下面的例子看两者的区别。
首先定义宏,如下图所示
在报表设计器的宏定义界面可以进行宏的定义,编辑宏名称,描述,值和宏类型;还可以通过相应按钮实现宏的删除和位置调整。
宏运算顺序为从上到下,后面的宏可以引用前面的宏的结果。