![]() |
#21 |
Участник
|
Цитата:
![]() Классы Query, QueryBuildDataSource, QueryBuildRange реализуют/формируют структуру запроса. Класс QueryRun реализует обход/цикл по сформированному запросу (Query) На форме перебор записей/обход запроса реализуется ядром системы самостоятельно, без вмешательства прораммиста и явного использования QueryRun. Датасурс формы (FormDataSource, котрый лежит на форме в узле DataSource) выполняет одновременно и роль элемента query (QueryBuildDatasource) и табличного курсора (Common), через который осуществляется доступ к активной строке таблицы. На самом деле и при использовании QueryRun неявно создаются подобные табличные курсоры, связанные с каждым QueryBuildDatasource. Именно их возвращает метод queryRun.get(). Метод queryRun.setCursor() позволяет подменить автоматически созданный при инициализации queryRun курсор на свой. Это в частности позволяет подсовывать в QueryRun курсоры от временных таблиц или осуществлять вот такие штуки queryRun метод get При работе с датасурсами формы нет необходимости в использовании setCursor для связи источника с временной таблицей, т.к. имея непосредственный доступ к табличному курсору источника, связь с временными данными можно сделать через setTmpData. Каждый раз при объявлении курсора временной таблицы или при вызове метода common.setTmp (преобразовании постоянного курсора во временный) система создаёт отдельный временный буфер данных. Для каждого курсора даже одного и того же типа, будет создан независимый от других курсоров буфер. Метод setTmpData позволяет несколько табличных курсоров связать с одним временным буфером данных. Не путайте с простым присваиванием одного курсора другому. Курсоры, связанные через setTmpData, могут независимо друг от друга перемещаться по данным (т.е. select одного курсора не изменит позицию и выборку другого). В тоже время setTmpData не выполняет копирования данных (происходит именно назначение курсору ссылки на буфер) - это означает, что изменение данных (вставка/изменение/удаление) через один из курсоров будет непосредственно отражаться на всех остальных курсорах связанных с тем же временным буфером. |
|
|
За это сообщение автора поблагодарили: sukhanchik (2), driller (2), AndyPanda (0). |