2013-12-09 9 views
0

Возможно ли использовать формулу Crystal Reports внутри самой формулы (в Crystal 8.5)?Получение имени формулы Crystal Reports внутри формулы

Например, предположим, я иметь такие формулы, как:

@MOISTURE 
@PROTEIN 
@ACIDITY 
@PROPERTYX 
@PROPERTYY 
@PROPERTYZ 

и что логика для каждой формулы идентичны. Единственное различие между формулами - это имя поля , к которому они в конечном счете обращаются. Для exmaple, @MOISTURE выглядит следующим образом:

if ... then {VIEW_SPECS.SOURCE_1_MOISTURE} 
if ... then {VIEW_SPECS.SOURCE_2_MOISTURE} 
if ... then {VIEW_SPECS.SOURCE_3_MOISTURE} 
if ... then {VIEW_SPECS.AVERAGE_MOISTURE} 

и @PROTEIN выглядит следующим образом:

if ... then {VIEW_SPECS.SOURCE_1_PROTEIN} 
if ... then {VIEW_SPECS.SOURCE_2_PROTEIN} 
if ... then {VIEW_SPECS.SOURCE_3_PROTEIN} 
if ... then {VIEW_SPECS.AVERAGE_PROTEIN} 

Вместо того, чтобы печатать всю эту repetetive материал для каждой формулы, я могу получить имя формулы в самой формуле, так что каждая формула будет выглядеть следующим образом:

if ... then {VIEW_SPECS.SOURCE_1_{$this}} 
if ... then {VIEW_SPECS.SOURCE_2_{$this}} 
if ... then {VIEW_SPECS.SOURCE_3_{$this}} 
if ... then {VIEW_SPECS.AVERAGE_{$this}} 

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

ответ

1

Насколько я знаю в Crystal, формула не может ссылаться на себя. Кристалл всегда выдаст вам ошибку. То, что вы можете сделать, это хранить значения в ваших формулах, а затем ссылаться на них в другой формуле. Таким образом, вы можете создавать Moisture1, Moisture2 и т. Д., А затем ссылаться на них. Это похоже на то же, но, на мой взгляд, немного меньше писать и лучше с точки зрения обслуживания. Если какой-либо из источников когда-либо изменится, вам придется пройти через все формулы и изменить его, тогда как если у вас есть значения, хранящиеся в формуле, вам нужно только изменить одну формулу.

Пример:

@ формула Moisture1 будет иметь следующий код в нем:

{VIEW_SPECS.SOURCE_1_MOISTURE} 

Ваша другая формула, которая проверяет наличие условия (если/другое) будет выглядеть примерно так:

if......then {@Moisture1} 
if......then {@Moisture2} 

... и так далее.

+0

Как одна формула ссылается на значение из другой формулы? –

+0

См. Пересмотр моего ответа. –

+0

Хорошо, принятый ответ заключается в том, что вы не можете делать то, что я хотел сделать. –

Смежные вопросы