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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.06.2002, 16:22   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Перемещение по записям отфильтрованного DataSource
Добрый день.

Проблема следующая. Есть форма с гридом на который выводятся данные из datasource. Данные на форме как угодно фильтруются пользователем, а мне надо считать сумму отфильтрованных данных по какому либо полю(с учетом фильтрации) и выводить ее на форму.

Создал свою форму поместил datasource свою таблицу и перекрыл executeQuery() следующим образом:

public void executeQuery()
{
QueryRun qr;
InventTrans it;
real sm;
;
super();

qr = this.queryRun();
it = qr.get(tableNum(InventTrans));
sm = it.Qty;
print it.ItemId;

while (qr.next())
{
it = qr.get(tableNum(InventTrans));
sm = sm + it.Qty;
print it.ItemId;
}

dem_rl.realValue(sm);
}

Все работает.

Теперь пробую тоже самое реализовать в форме VendTrans - у datasource VendTrans в метод executeQuery() добавлюя следующий код:

QueryRun qr;
VendTrans vt;
real sm;

............................

qr = this.queryRun();

vt = qr.get(tableNum(VendTrans));
sm = vt.AmountMST;

while (qr.next())
{
vt = qr.get(tableNum(VendTrans));
sm = sm + vt.AmountMST;
}

dem_Balance.realValue(sm);

super();

При запуске формы появляется ошибка - QueryRun object не инициализован (при вызове метода get).

В чем может быть дело ?

Или данную задачу можно (и нужно) решать другим способом ?
Старый 17.06.2002, 17:59   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
1. Сравнивая эти 2 метода, видно, что они отличаются - super() вызывается в разных местах
2. Для попдобных занятий лучше не использовать "родной" queryRun, а создавать новый на основе query. Это, кстати, поможет избежать ошибок, когда "родной" не инициализирован (еще)
PHP код:
    Query                   query;
    
QueryRun            queryRun;
    ;

    if (
this.queryRun())
        
query   this.queryRun().query();
    else
        
query   this.query();

    
// Тут можно поменять что-дь в запросе, например добавить суммирование по полю
     
................

    
queryRun    = new QueryRun(query); 
3. Как считать сумму это дело личных предпочтений
Старый 17.06.2002, 18:26   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
1. Спасибо. До сих пор не могу научиться определять куда вставлять свой код в том или ином случае, до super() или после.

2. Тоже спасибо. Кстати один вопрос. Когда я в методе dataSource я говорю this, какой экземпляр какого класса я получаю ?
Старый 18.06.2002, 08:37   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
1. "И опыт - сын ошибок трудных..."
2. Получаешь объект TvoyTable_DS (класс FormDataSource)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление таблицы в DataSource при ее изменении Андре DAX: База знаний и проекты 7 22.04.2008 13:16
Два DataSource на одну временную таблицу mou DAX: Программирование 4 22.03.2008 11:00
Заполнение DataSource из постоянной и временной таблиц m_ax DAX: Программирование 2 21.06.2007 13:08
Грид и поле в строке, не связанное с DataSource NataLee DAX: Программирование 2 26.01.2004 17:02
Как получить доступ к записям в Datasource отчета? Anton Sk. DAX: Программирование 1 05.06.2002 15:43

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

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

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