Арсений писал(а):Как будет выглядеть в MAV следующий код:
my_file.field1 = my_value
my_file.field2 = my_other_value
set(my_file.Field1Field2Key, my_file.Field1Field2Key)
loop
next(my_file)
if errorcode() or (my_file.field1 <> my_value) or (my_file.field1 <> my_other_value) then break .
some statement
end
cursor MAVSelect
CODE
cursor.Init(,0) !читаем всё БЛОКАМИ, количество записей в блоке устанавливается через первый параметр (default =100)
cursior.BindFields(my_file) ! читаем все поля файла, но через метод .BindField можно указать только те поля, которые необходимы, например, в данной задаче инфо о двух полях просто не нужна это field1 и field2. Для этих двух методов опущен второй параметр, куда читаем, т е читать можно в произвольные буфера, например сразу в поля очереди, если второй параметр опущен то читаем в поля файла
cursor.Where(my_file.field1,my_value) ! контсруктор Where, опущены два последних параметра, это условие сравнения (default =) и правило склеивания с пред условием Where (default AND)
cursor.Where(my_file.field2,my_other_value)
cursor.OrderBy(my_file.field1) !
конструктор ORDER BY, опущен второй параметр - тип сортировки (default ASC)
cursor.OrderBy(my_file.field2)
IF cursor.Run()
MAVSHOWERROR
RETURN
END
LOOP
CASE cursor.Fetch()
OF NoError
OF NoRecErr
BREAK
ELSE
MAVSHOWERROR
BREAK
END
END
хочу напомнить, если хотим прочитать ВСЮ выборку по определённым условиям, то ORDER BY по идее и не требуется, т к всё равно прочитаем всё, хотя всё зависит от задачи, если уж нужен последовательный проход то выставляйте, я стараюсь этого не делать, если требуется последовательный проход, то сначало заливаю результат в Queue, далее её сортирую и работаю с ней, чтобы бессмысленно не нагружать сервак.
Арсений писал(а):т. е. как организовать проход по определенному набору записей таблицы без использования MAVLoad('select bla-bla-bla', my_Queue)?
много раз говорил, но думаю надо повторить всем, при работе со структурами из словаря нелогично использовать MAVLOAD, объясняю почему:
в технологии MAV при первом использовании структуры из словаря происходит проверка соответсивия структуры в словаре и на сервере (SQLDescribe), а-ля OPEN(FILE), которого нет в кодах т к библиотека делает это на автомате (ошибки File Already Open не дождётесь

), при повторных использованиях структур из словаря проверка уже не производится т к она уже была и вся инфо имеется во внутренних структурах библиотеки.
При использовании MAVLOAD SQLDescribe будет производиться ВСЕГДА.
MAVLOAD по идее нужен для получения данных по структурам, которые не продекларированы в словаре.