2016-06-24 1 views
0

У меня есть хранимая процедура, которая передает данные в отчет о кристалле. Результат выглядит примерно так:Как я могу получить значение поля по его индексу в результирующем наборе в отчетах о кристаллах?

Product | Price 
---------------- 
Apple | 0.20 
Pear | 0.35 
Orange | 0.10 
Tomato | 0.23 

Я отображая большую часть данных мне нужно в порядке, я требую, но не могу получить доступ целого ряда данных, только отдельные поля.

Я могу получить доступ к определенной цене, используя функцию NthLargest;

NthLargest (2,{up_Fruit;1.Price}) 

Это возвращает значение 0,23. Я также хочу получить связанный с ним продукт (помидор)

Как это можно сделать? Я не могу найти способ связать значение в одном поле с другим, например. получая всю строку.

В конечном счете, я хочу показать что-то подобное в своем отчете;

Second most expensive product is Tomato, it costs $0.23. 

Я могу управлять всем форматированием строк, но не могу захватить продукт, где цена равна 0,23.

Я использую синтаксис Кристалла.

ответ

1

Repalce вашей формулы с кодом ниже:

Local Stringvar array x; 
Local Numbervar i; 
Local Stringvar display; 

x:=x+({up_Fruit;1.Product} &"-"&ToText({up_Fruit;1.Price})); 

join(x); 

for i:=1 to UBound(x) do 
(
if ToText(NthLargest (2,{up_Fruit;1.Price})) in x[i] 
then 
display:=x[i] 
else 
display:="" 

); 

"Second most expensive product is "& Split(display,"-")[1] & " , it costs "& Split(display,"-")[2]