在使用皕杰报表设计报表时,往往需要按照某个字段的顺序进行排序,比如按序号、时间的顺序排序。那么这个排序是如何设计出来的呢?
首先要知道,设计报表的过程实质上就是把数据集表中的数据按一定格式展现在报表里的过程,因而报表的排序是与数据集中记录顺序有关的,所以在写sql语句取数的时候就应根据需要按照某个字段的顺序进行排序。sql中进行排序的关键字是order by,需要根据哪个字段排序order by后面就跟什么字段。如:
select 雇员id, 姓氏||名字 as 姓名,雇用日期 from 雇员 order by 雇用日期
就是按照雇佣日期进行排序的,默认ASC升序。
数据集预览:
在把数据集表里数据放到报表里展现的时候,我们还可以调整顺序,这取决于数据集函数select中的排序顺序,在单元格表达式里可以根据我们的需要重新排序。
Select
函数说明:从当前数据组中取出一组数据,在扩展方式为纵向扩展或横向扩展(含默认时自动计算出来的)时, 所有附属单元格所用的同一数据集的数据在同一行(Row)
语法:datasetName.select(selectExp{,descExp{,filterExp{,sortExp}}})
参数说明:
selectExp 选出的字段或其表达式
descExp 选出数据的排序规则,true为逆序,false为正序
filterExp 过滤表达式
sortExp 排序依据表达式
举例说明:
1.例1:ds1.select(订单ID,false),将数据集ds1中的“订单ID”字段以列表的形式显示,并顺序排序。
2.例2:ds1.select(订单ID,true,订单id>=12),将数据集ds1中的“订单ID”字段以列表的形式显示,并逆序排序,而且筛选出大于等于12号的订单ID。
3.例3:ds1.select(订单ID,false,订单id>=12,数量),将数据集ds1中的“订单ID”字段以列表的形式显示,按“数量”字段顺序排序,并筛选大于等于12号的订单ID。
针对上述数据集,如果在单元格里简单用=ds0.select(雇员ID),则报表的顺序就是数据在数据集中的顺序,见下图:
如果我们在select函数中加上排序的参数,=ds0.select(雇员ID,false,,雇员ID)则报表的顺序则按雇员ID顺序重新排序,见下图:
那么究竟是在sql中排序还是在单元格表达式中排序,则根据报表的性能要求灵活掌握,不管sql中是否排序,如果单元格表达式出来的排序不满足需求,则一定加上排序方式和排序参数。