当然,宏在带来方便的同时,也有其缺点,写进了宏的表达式在报表设计期间无法进行语法检查,只能在解析后才能查出错误,使用时必须很小心;另外,宏的解析很复杂,会影响表达式的处理速度(C编译器有相当多时间用于解析宏,PASCAL没这问题速度能快很多),对于表达式很多且性能要求很高的情况尽量不要采用宏。曾经有个相关的案例。用户有一张报表希望以某个字段排序输出,需要有正序和逆序两种形式。出于某些设计方面的原因,必须采用数据库的排序运算,即用SQL的ORDER BY子句控制,但该排序字段又不是数值型量,只能用ASC和DESC控制,但排序方向在水晶报表中不可作为参数传递,结果只能制作两张报表(如果是数值型量可通过乘1或-1控制,不必改变排序方向,即可用参数传递了),维护其一致性非常麻烦;而采用华天企业报表系统特有的宏,只要把排序方向作为宏传入就可以轻松解决。