Динамически ссылаться на значения столбцов временной таблицы в процессе выполнения

Я использую Прогресс 4GL

У меня есть электронная таблица данных, содержащая несколько столбцов с именем data1....50.

Я создал временную таблицу, в которой хранятся все значения.

Теперь я хотел бы просмотреть столбцы временной таблицы и выполнить различные вычисления.

Итак, мне нужно что-то вроде этого:

for each record loop thru cols_in_temp_table .

   if col_value = "XYZ" then
     do calcs and stuff      

end.

Итак, как я могу ссылаться на столбцы temp_table?


person user1410023    schedule 22.05.2012    source источник


Ответы (2)


Хорошо, не разрешил исходный запрос, но нашел обходной путь. Разделить данные и поместить в отдельные таблицы, многословно, но помогает.

person user1410023    schedule 23.05.2012

В зависимости от вашей версии, это один из способов сделать это:

DEFINE VARIABLE h-cols  AS HANDLE   NO-UNDO.         

h-cols = tt-cols:BUFFER-HANDLE.                      

FOR EACH tt-cols                                     
   NO-LOCK:                                         

   IF h-cols::col-name = "some value" THEN       
       RUN do-something.                            

END.        

Для версий, которые не могут использовать оператор "::", сделайте следующее:

FOR EACH tt-cols                                     
   NO-LOCK:                                         

   IF h-cols::buffer-field("col-name"):buffer-value = "some value" THEN       
       RUN do-something.                            

END.        
person Tim Kuehn    schedule 22.05.2012
comment
ОПРЕДЕЛИТЕ ПЕРЕМЕННЫЕ h-cols КАК ОБРАБАТЫВАТЬ NO-UNDO. h-cols = BUFFER temptable:HANDLE. назначьте vi = 0. ДЛЯ КАЖДОГО соблазнительного NO-LOCK: назначьте vi = vi + 1. ЕСЛИ h-cols:col-name ‹› THEN сообщение h-cols:name view-as информационные кнопки окна оповещения ok. если vi › 2 то оставить. КОНЕЦ. h-cols:col-name недействителен для 9.1e. Проверил справочную документацию, и там нет атрибута handle:colname или подобного атрибута, есть идеи, как я могу обойти это? - person user1410023; 22.05.2012
comment
Сделайте это вместо этого: h-cols:buffer-field(field-name):buffer-value - person Tim Kuehn; 23.05.2012