31 января 2011 г.

Запросы к Dabacon. Часть 2

Пример нахождения элементов по определенных условиям и вывод информации.

Задача:
    найти и вывести все элементы типа EQUI, у которых в атрибуте Desc встречается слово "Насос"

Вариант 1.Запрос типа без фильтра и фильтрация в цикле (долгий вариант)
 
--запрашиваем элементы типа EQUI
VAR !equi COLLECT ALL EQUI FOR CE
--запускаем цикл с конечной точкой - размер полученного массива элементов
do !x from 1 to !equi.Size()
  $( пропускаем элемент и переходим к следующему, если условие не выполнилось
  используется метод Matchwild, применяемый к строке, для поиска вхождения подстроки
  метод .Matchwild возвращает логическое значение "да" или "нет"
  соответственно следующая команда трактуется как "если в атрибуте Desc --НЕ встретилось
  значение Насос, тогда пропустить $)
     SKIP IF (!equi[!x[.Dbref().Desc.Matchwild('*Насос*').Not())   

    --выводим на печать
    $P $!equi[$!x]

enddo

Вариант 2. Запрос типа без фильтра и фильтрация в цикле (простой вариант)

--запрашиваем элементы типа EQUI сразу включая фильтр
VAR !equi COLLECT ALL EQUI WITH (MATCHWILD(NAME,'*Насос*')) FOR CE
--запускаем цикл с конечной точкой - размер полученного массива элементов
do !x from 1 to !equi.Size()

    --сразу выводим на печать, так как в найденном массиве уже есть нужные элементы
    $P $!equi[$!x]

enddo
PS.На печать выводятся референтные номера, содержащиеся в массиве !equi

Данные операции удобно применять когда необходимо найти элементы по определенному критерию
 

0 коммент.:

Отправить комментарий