AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.05.2012, 10:43   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от uskutus Посмотреть сообщение
А не дадите ссылочку, с описанием что делает SetCursor ? Ни в MSDN ни в встроенной справке не нашел.
Чего-то вменяемого описания не смог найти. Попробую объяснить сам

Классы 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).
Старый 03.05.2012, 11:09   #2  
uskutus is offline
uskutus
Участник
 
28 / 10 (1) +
Регистрация: 04.04.2012
Всем спасибо. С ошибкой в

qbds = this.query().dataSourceTable(tablenum(mytmptable));
qbds = qbds.addDataSource(tablenum(myTable)); - "QueryBuildDataSource, объект не инициализирован."

вроде разобрался.

Этот код был в executequery mytable. Наоборот было нельзя, т.к. временные таблицы не должны быть вложенными. Поставил в executequery mytmptable, ошибка исчезла. Еще много чего не работает. Будем дальше познавать тайны аксапты)
Старый 03.05.2012, 17:07   #3  
uskutus is offline
uskutus
Участник
 
28 / 10 (1) +
Регистрация: 04.04.2012
Очередная проблема. После джойна с временной таблицей, невозможно выбрать ни одну запись в гриде. Сразу курсор перескакивает на первую запись.
Старый 03.05.2012, 17:54   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от uskutus Посмотреть сообщение
Очередная проблема. После джойна с временной таблицей, невозможно выбрать ни одну запись в гриде. Сразу курсор перескакивает на первую запись.
Какой датасурс указан в свойствах grida? Должен быть главный, а не подчинённый. Т.е. в вашем случае датасурс временной таблицы.
Старый 04.05.2012, 09:35   #5  
uskutus is offline
uskutus
Участник
 
28 / 10 (1) +
Регистрация: 04.04.2012
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Какой датасурс указан в свойствах grida? Должен быть главный, а не подчинённый. Т.е. в вашем случае датасурс временной таблицы.
Спасибо, так и есть.
Теги
ax2.5

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передать временную таблицу из формы в класс Eldar9x DAX: Программирование 26 20.06.2008 19:09
Как join'ить временную таблицу и query на форме IvanS DAX: Программирование 1 07.05.2008 09:49
Два DataSource на одну временную таблицу mou DAX: Программирование 4 22.03.2008 11:00
импорт текст.файла во временную таблицу fialka DAX: Программирование 5 07.02.2007 15:42
Как передать временную таблицу Aslan DAX: Программирование 15 23.05.2006 17:34

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:45.