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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.05.2006, 19:12   #1  
Petruccio is offline
Petruccio
Участник
 
35 / 10 (1) +
Регистрация: 12.09.2005
Адрес: Минск
Обновление DataSource
На форме есть два связанных источника данных. При активации формы сохраняется положения курсора в родительском источнике и вызывается research(). Затем положение курсора восстанавливается. Для подчиненного источника хочу сделать тоже самое, но ничего не получается. Видимо это связанно с типом соединения - Active и Delayed. Пробовал менять их, но все без изменения: курсор в подчиненном источнике становиться на первую запись.

Может есть какой-то другой выход? Сейчас опишу задачу. Из формы 1 вызывается форма 2. В ней обновляются таблицы. Эти таблицы являются источниками данных формы 1. Нужно, чтобы при обновлении этих таблиц обновлялись источники данных формы 1 и курсоры становились на первоначальные позиции.
Старый 05.05.2006, 00:51   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
Сообщение от Petruccio
... Затем положение курсора восстанавливается. Для подчиненного источника хочу сделать тоже самое, но ничего не получается...
Каким методом восстанавливаете?
__________________
Андрей.
Старый 05.05.2006, 01:10   #3  
Petruccio is offline
Petruccio
Участник
 
35 / 10 (1) +
Регистрация: 12.09.2005
Адрес: Минск
Код:
public void activate(boolean _active)
{
    SalesId         SalId;
    Sales           sal;
    WorkCode        wrkCode;
    SalesLines      sl;
    ;

    SalId = Sales.SalesId;
    wrkCode = SalesLines.WorkCode;
    sal = Sales::find(SalId);
    sl = SalesLines::find(SalId,wrkCode);

    super(_active);

    Sales_ds.research();
    Sales_ds.findRecord(sal);
    SalesLines_ds.research();
    SalesLines_ds.findRecord(sl);
}
Старый 05.05.2006, 11:11   #4  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Да, действительно, дочерний datasource сбрасывает свою позицию.
Тут можно посоветовать такое решение: в activate() присваивать глобальной переменной текущую SalesLine, а в SalesLine_DS.executeQuery() проверять ее заполнение и при наличии записи делать findRecord() и затем сбрасывать значение переменной.
__________________
Андрей.
Старый 05.05.2006, 15:09   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Как вариант
1. описать в ClassDeclaration формы флаг
2. установить при инициализации формы значение флага
X++:
fl = false;
3. перекрыть LinkActive() на связанном датасорсе
X++:
public void linkActive()
{
    if (!fl)
        super();
    else
        fl = false;
}
4. Слегка модифицировать ваш метод
X++:
    ...
    Sales_ds.research();
    Sales_ds.findRecord(sal);
    SalesLines_ds.linkActive();  
// внутри в super() идет вызов SalesLines_ds.queryExecute()
// или оставить research();
    SalesLines_ds.findRecord(sl);
    fl = true;
__________________
Axapta v.3.0 sp5 kr2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление DataSource из формы Печать\Новый отчет. Poleax DAX: Программирование 19 13.04.2011 09:28
Обновление таблицы в DataSource при ее изменении Андре DAX: База знаний и проекты 7 22.04.2008 13:16
Заполнение DataSource из постоянной и временной таблиц m_ax DAX: Программирование 2 21.06.2007 13:08
Добавить поле в таблицу -> обновление Datasource Surok DAX: Программирование 1 21.10.2002 14:03
Обновление таблицы в DataSource при ее изменении Андре DAX: Программирование 7 08.05.2002 15:41

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

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

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