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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.10.2005, 18:39   #1  
PMS is offline
PMS
Участник
 
54 / 29 (1) +++
Регистрация: 25.02.2005
Адрес: Санкт-Петербург
Два Dstasource с Range в init()
Добрый день!

На форме есть два Datasource: InventJournalTrans и InventDim.
Мне нужно выбрать строки определенного типа журнала, например, "Проводка", с определенным складом.
Перекрываю у обоих метод init().
В InventDim_DS:
PHP код:
public void init()
{
    
Query                             q = new Query();
    
QueryBuildDataSource    queryBuildDataSource;
    
QueryBuildRange            InventLocationRange;
    ;
    
queryBuildDataSource q.addDataSource(InventDim.TableId);
    
InventLocationRange queryBuildDataSource.addRange(fieldnum(InventDimInventLocationId));
    
InventLocationRange.value('Склад1');
    
this.query(q);
    
super();

В InventJournalTrans_DS:
PHP код:
public void init()
{
    
Query                 q = new Query();
    
QueryBuildDataSource    queryBuildDataSource;
    
QueryBuildRange         JournalTypeRange;
    ;
    
queryBuildDataSource q.addDataSource(InventJournalTrans.TableId);
    
JournalTypeRangequeryBuildDataSource.addRange(fieldnum(InventJournalTransJournalType));
    
JournalTypeRange.value('0');
    
this.query(q);
    
super();

Однако срабатывают не оба Range, а только один.
Причем если у InventDim_DS указаны свойства:
JoinSource: InventJournalTrans
LinkType: InnerJoin
то срабатывает Range, указанный в Init() InventJournalTrans.
А если сделать наоборот, и указать у InventJournalTrans:
JoinSource: InventDim
LinkType: InnerJoin
то срабатывает Range, указанный в Init() InventDim.

А хотелось бы чтобы срабатывали оба Range.
Не подскажете, что я не так делаю?
Старый 25.10.2005, 18:55   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
При использовании линка InnerJoin на оба DS создается один общий query. C этим связана специфика работы init-методов этих источников. Чтобы срабатывали оба range, надо разместить их в одном методе init(), например, init() формы после super().
__________________
Андрей.
Старый 26.10.2005, 16:40   #3  
PMS is offline
PMS
Участник
 
54 / 29 (1) +++
Регистрация: 25.02.2005
Адрес: Санкт-Петербург
Dron AKA andy, спасибо.
В init() формы написал:
PHP код:
void init()
{
    
Query    q = new Query();
 
    
super();
 
    
inventJournalTrans_ds.query();
    
q.dataSourceTable(tablenum(InventJournalTrans)).addRange(fieldnum(InventJournalTransJournalType)).value('0');
    
q.dataSourceTable(tablenum(InventDim)).addRange(fieldnum(InventDimInventLocationId)).value('Склад1');

Методы init() с датасорсов удалил.
И все заработало. Еще раз спасибо

Последний раз редактировалось PMS; 26.10.2005 в 16:44.
Старый 26.10.2005, 17:40   #4  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
this.query().dataSourceNo(1).addRange(fieldnum(Table, field)).value('XXX');

а чем это не катит?
Старый 26.10.2005, 18:21   #5  
PMS is offline
PMS
Участник
 
54 / 29 (1) +++
Регистрация: 25.02.2005
Адрес: Санкт-Петербург
У формы нет query()
Старый 27.10.2005, 10:43   #6  
Dronas is offline
Dronas
Участник
 
213 / 14 (1) ++
Регистрация: 16.11.2004
Цитата:
Сообщение от PMS
У формы нет query()
Так перекрываются же методы инит на датасурсе, см. первый пост!
Старый 28.10.2005, 09:54   #7  
PMS is offline
PMS
Участник
 
54 / 29 (1) +++
Регистрация: 25.02.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от Dronas
Так перекрываются же методы инит на датасурсе, см. первый пост!
Ну, в данном случае, init() на датасорсах вообще перекрывать не надо.

Так а в чем разница? Просто чтобы не создавать дополнительных объектов? В остальном все точно также.
Старый 26.10.2005, 19:27   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Наверное, из-за переноса, у вас создается экземпляр Query, который не используется.

Query q= new Query();

super();

q = inventJournalTrans_ds.query();

Судя по всему это и смутило Dronas.

__________________
Axapta v.3.0 sp5 kr2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ComExcelDocument_RU по именнованной ячейки вывести номер ее строки. Poleax DAX: Программирование 37 15.10.2008 14:06
axaptapedia: Packing date range values in queries Blog bot DAX Blogs 1 09.11.2007 13:10
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter) gl00mie DAX: Программирование 15 30.03.2007 18:37
Копирование Range по имени (2.5) Wamr DAX: Программирование 9 14.05.2004 18:33

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:43.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.