2014-02-21 3 views
1

Я составляю отчет, в котором будет отображаться список клиентов и некоторые числовые значения. я использую формулу для того, чтобы упорядочить свою группу, которым является следующее:Порядок сортировки группы Crystal Report

if {Db.SortOrder} = 0 then 
    {Db.CostumerName} 
else 
    ToText({Db.Value},'00000000',0,'') 

Таким образом, я могу группа по костюмера имя или значение, проблема заключается в том, что мне нужно использовать другой порядок сортировки для них , возрастающий порядок, когда i группируется по CostumerName и убывает, когда я группирую значение Value. Как я могу это достичь? Я попробовал «Sort группу по формуле» с помощью crAscendingOrder, crDescendingOrder, но сказал, что я нужен Tu использовать Костант, а не переменный (в моем случае я использовал db.SortOrder)

ответ

8

Моего подход:

Первых , создайте поле параметра ({?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} 

Наконец, ссылка это поле в асе записей сортировки:

enter image description here

+0

Благодарим вас за подробный ответ, но он, похоже, не работает в моем случае. В записи Сортировка эксперта я не могу отменить мою формулу группы как поле сортировки, она всегда на высоте. – SilentRage47

+0

Извините, я только что заметил свою ошибку. Добавьте формулу в эксперт групповой сортировки. Сегодня я изменю ответ. – craig

0

в моем случае мне нужно было только выбрать поле для сортировки. Я создал поле параметра 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} 
Смежные вопросы