Progress 4GL: Атрибут дескриптора буфера для всех полей

Я новичок в Progress и даже новичок в обращении, поэтому извиняюсь, если я пропустил что-то очевидное, я искал в Интернете, но еще не нашел то, что ищу.

Я выполняю динамический запрос, подобный приведенному ниже, в этом примере после выполнения запроса на экране отображается поле «age» соответствующей записи, я понимаю, как это делается из метода атрибута поля буфера, но у меня вопрос: как отобразить всю запись, есть ли эквивалентный метод атрибута или я неправильно понял что-то важное? Спасибо за уделенное время. :

def var tbl as character no-undo.
def var fld as character no-undo.
def var qh as handle no-undo.
def var bh as handle no-undo.
def var fh as handle no-undo.

assign tbl = "customer".
assign fld = "age".
create buffer bh for table tbl.
create query qh.
qh:set-buffers( bh ).
qh:query-prepare( "for each " + tbl + " where name = 'tom'" ).
qh:query-open.

do transaction:
    qh:get-first( no-lock ).
    fh = bh:buffer-field( fld ).
    display fh:buffer-value.
end.

delete object bh.
delete object qh

person tom01    schedule 08.02.2014    source источник


Ответы (1)


Не существует «простого» способа отобразить всю запись в одном операторе, как это можно сделать с помощью статического оператора «DISPLAY имя-таблицы». Вы можете получить количество полей (дескриптор буфера: NUM-FIELDS), а затем пройти по отдельным полям и отобразить их значения, используя

DO i = 1 to bh:NUM-FIELDS: 
     DISPLAY bh:BUFFER-FIELD(i):BUFFER-VALUE WITH DOWN.
     DOWN.
END.
person Tim Kuehn    schedule 08.02.2014