使用复杂数据集,用户可以直接在输入框中写sql语句,这种方式比较适合对sql语句有深入了解的用户。 # 建立复杂数据集的步骤 【新建复杂SQL数据集】-->【写入sql】-->【其他配置】-->【预览数据】-->【完成】。 其中【其他配置】包含宏配置、参数设置,如果是简单的不带宏与参数的sql语句则无需进行此步骤。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_27ef3eb6ce1c6b96168c2d63889ad63d_r.png) # 复杂SQL书写规则与注意事项 - 如果复杂sql数据集制作的报表需要使用通用查询,则必须为复杂sql数据集进行条件宏的配置。 - sql语句中的一个条件宏可以添加多个数据表。使用通用查询时只显示一个查询块,但供选择的查询字段会显示宏配置中所添加的多个数据表的字段。 - 如果制作带条件宏的复杂sql数据集并进行宏配置,必需先为用户分别数据表和字段授权,否则提取宏时数据表和字段不显示。 - sql语句中书写了多个同名的宏时,同名的宏自动识别只提取一个。 - 复杂sql数据集中同时出现order by和条件宏时,order by必须写到where以后。 - 复杂数据集sql语句中使用表别名时,在条件宏设置中表别名要和sql中的表别名一致。 - 复杂数据集sql语句未使用表别名时,在条件宏可以不设置表别名如果要设置的话只能是真实表名不能随便定义表别名。 # 其他设置 ## 数据集工厂监听类 该类由IDataSetFactoryListener 接口来实现,如果数据集创建不需要做特殊处理,就不用设置该属性。 如果需要做特殊处理,则需要写一个数据集创建后处理类,用IDataSetFactoryListener 接口,实现它的public void beforeCreated(Context context, DataSetConfig dsc, DataSet arg2)及public void afterCreated(Context arg0, DataSetConfig arg1, DataSet arg2)方法,并将编译后的类带包路径放在应用的APPPAHT/web-inf/classes下。 ## 数据集记录行设置 用于控制数据集的按页取数。一般来说,起始行和结束行都是输入参数,通过参数来控制行号,如果输入常数,一般没什么意义。起始行和结束行可用来人为控制分页,如果您的报表数据量比较大时,可以通过参数传递来改变起始行和结束行,通过按页取数的方式来减少数据量 。根据需要填写数据集工厂侦听器类名,以及起始行和结束行。没有特殊需要,可不填。 数据集记录行仅对复杂/自由报表起作用,不适用于分组、交叉。 ![](/uploads/projects/7.11_online/uploads/sjjc/images/m_0742a3db2385ed0e21893f35eea5367a_r.png)