Sorting Crystal报表组排序顺序
我正在制作一份报告,其中将显示客户列表和一些数值。 我使用公式对我的组进行排序,如下所示:Sorting Crystal报表组排序顺序,sorting,crystal-reports,Sorting,Crystal Reports,我正在制作一份报告,其中将显示客户列表和一些数值。 我使用公式对我的组进行排序,如下所示: if {Db.SortOrder} = 0 then {Db.CostumerName} else ToText({Db.Value},'00000000',0,'') 通过这种方式,我可以按客户名称或值分组,问题是我需要对它们使用不同的排序顺序,按客户名称分组时按升序,按值分组时按降序。我怎样才能做到这一点?我尝试过使用crAscendingOrder、crdegendingord
if {Db.SortOrder} = 0 then
{Db.CostumerName}
else
ToText({Db.Value},'00000000',0,'')
通过这种方式,我可以按客户名称或值分组,问题是我需要对它们使用不同的排序顺序,按客户名称分组时按升序,按值分组时按降序。我怎样才能做到这一点?我尝试过使用crAscendingOrder、crdegendingorder的“按公式排序”方法,但它说我需要使用costant而不是变量(在我的例子中,我使用了db.SortOrder)我的方法:
首先,创建一个参数字段({?Sorted field}
)来选择排序字段:String;静态列表,包括“客户”和“价值”;默认值为“客户”
接下来,创建一个自定义函数,将字符串转换为ASCII表示形式,允许更改顺序:
// ASCII()
Function (Stringvar characters, Optional Numbervar direction:=crAscendingOrder)
Local numbervar i;
Local stringvar c;
For i:= 1 To Len(characters) Do (
If direction=crAscendingOrder Then
c:=c + ToText( Ascw(Mid(characters,i,1)), "#")
Else
c:=c + ToText( 256- Ascw(Mid(characters,i,1)), "#")
);
c;
接下来,创建一个用于排序的公式字段:
// {@Sorted Field}
Select {?Sorted Field}
Case "Customer": {Db.Customer}
Case "Value": ASCII(ToText({Db.Value},'00000000',0,''), crDescendingOrder)
Default: {Db.Customer}
最后,在记录排序专家中引用此字段:
在我的例子中,我只需要选择要排序的字段。我创建了名为SortField的参数字段作为静态文本,并创建了我想要显示的三个友好值,然后创建了引用它的公式。我有水晶2011,所以我的公式如下:
// {@Sorted Field}
Select {?SortField}
Case "BIN":{V_ITEM_MASTER.BIN}
Case "ORDER REF":{V_ITEM_MASTER.HEAT}
Case "PART":{V_ITEM_MASTER.PART}
Default: {V_ITEM_MASTER.BIN}
谢谢你的详细答复,但在我的情况下似乎不起作用。在record Sort expert中,我无法取消选择我的组公式作为排序字段,它始终位于顶部。对不起,我刚刚注意到我的错误。将公式添加到组排序专家。今天晚些时候我会改变答案。