Navigation: Работа с переменными > GETQUE - Считать запись из очереди |
![]() ![]() ![]() |
Считать запись из очереди:
getque qname +field1,-field2,..... или getqueue qname +field1,-field2,.....
ИЛИ
getque qname номер или getqueue qname номер
qname - имя группы или очереди
field - имя поля (можно указать перед именем поля знак сортировки + или -)
номер - указатель записи
Значение указателя должно находиться в диапазоне
от 1 до числа элементов в очереди.
Оператор GETQUE считывает элемент в буфер структуры QUEUE для работы с ним. Если оператор GETQUE не находит соответствующего запросу элемента, то выдается сообщение об ошибке «Entry Not Found» (элемент не найден).
GETQUE очередь имя
Ищет элемент очереди, который соответствует значениям полей, указанные параметром имя. Строка имя должна содержать значения атрибутов NAME, относящихся к полям структуры QUEUE, разделенные запятыми, с необязательным знаком + или - спереди. Если очередь предварительно не была упорядочена по полям, указанным в параметре имя, имя указывает «альтернативный порядок сортироки» который кэшируется (то есть последующие сортировки по тем же самым полям очень эффективны).
GETQUE очередь ключ
Ищет первый элемент очереди, который соответствует значениям ключевых полей в буфере. Может использоваться несколько (до 16-ти) параметров ключ очереди. Очередь должна быть уже упорядочена по полям, использующимся в качестве ключевых параметров, ключ в очереди указывает «альтернативный порядок сортироки» который кэшируется (то есть последующие сортировки по тем же самым полям очень эффективны).
GETQUE очередь указатель в очереди
Выбирает элемент с относительным номером, заданным параметром указатель в очереди в том порядке, в каком элемент был добавлен или порядка последней сортировки. Если указатель в очереди равен нулю, то функция POINTER тоже возвращает значение 0.
Выдаваемые сообщения об ошибках:
08 Insufficient Memory (недостаточно памяти)
30 Entry Not Found (элемент не найден)
35 Record Not Found (запись не найдена)
37 File Not Open (файл не открыт)
43 Record Is Already Held (запись уже заблокирована)
75 Invalid Field Type Descriptor (неправильный описатель типа поля)
Пример:
DEFINE DATA
JQ QUEUE,PRE(JQ)
a1 LONG
a2 LONG
s1 STRING(50)
END
ENDDEFINE
getqueue JQ +JQ:a1,-JQ:s1
# считаем 4ю запись в очереди
getqueue JQ 4
См. также: DEFINE DATA, PUTQUE, ADDQUE, SORTQUE, POINTER, DELETEQUE, RECORDS