2016-02-16 4 views
0

У меня есть введенный пользователем параметр, который может быть 1 значением до того, как все много значений они вводят. Прямо сейчас, где [i] находится в формуле, которая является индексом массива количества входящих. Мне нужно увеличить формулу так, чтобы она повторялась по каждому из их параметров, но не более того, что они приводили в действие. Я пробовал жесткие индексы кодирования [1] - [20], но если было введено менее 20 параметров, я получил бы ошибку.Увеличение массива Crystal Report

if TONUMBER({?Order #}[i]) = TONUMBER({V_ORD_COMB.ORDERNO}) 
    then TRUE 
    ELSE 

    FALSE 

Это отлично работает для 1 входного значения, но не более

if TONUMBER({?Order #}[1]) = TONUMBER({V_ORD_COMB.ORDERNO}) 
    then TRUE 
    ELSE 

    FALSE 

Это отлично работает для 3 входных значений, но не менее или более

if TONUMBER({?Order #}[1]) = TONUMBER({V_ORD_COMB.ORDERNO}) 
    then TRUE 
    ELSE 
    if TONUMBER({?Order #}[2]) = TONUMBER({V_ORD_COMB.ORDERNO}) 
    then TRUE 
    ELSE 
    if TONUMBER({?Order #}[3]) = TONUMBER({V_ORD_COMB.ORDERNO}) 
    then TRUE 
    ELSE 
    FALSE 

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

ответ

1

Попробуйте это:

Local Numbervar i; 
Local Stringvar result:="not found"; 

for i:=1 To Ubound({?Order #}) do (
    if {?Order #}[i]={V_ORD_COMB.ORDERNO} then (
     result:="found"; 
     exit for 
    ); 
); 

result 
0

Я изменил его

Local Numbervar i; 
Local Booleanvar result:=False; 

for i:=1 To Ubound({?Order #}) do (
    if {?Order #}[i]={V_ORD_COMB.ORDERNO} then (
     result:= TRUE; 
     exit for 
    ); 
); 

result 

и он прекрасно работает! Я ценю помощь.