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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.03.2007, 11:00   #1  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
query
Пишу код:
X++:
query.addDataSource(tableNum(ProdTable));
        qbs = query.dataSourceTable( tableNum(ProdTable) );

        query.addDataSource(tableNum(SalesTable));
        qbs = query.dataSourceTable( tableNum(SalesTable) );
        if( SalesEditFilter.valueStr() )
        {
            qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr());
        }

        qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId ));
В чем ошибка что-то вьехать не могу???
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 29.03.2007, 11:12   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Честно говоря ломает напрягать свои телепатические способности... Чё за ошибка то???
Старый 29.03.2007, 11:13   #3  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
X++:
qbs = query.addDataSource( tableNum(ProdTable) );

        qbs = qbs.AddDataSource( tableNum(SalesTable) );
        if( SalesEditFilter.valueStr() )
        {
            qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr());
        }

        qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId ));
a так?

Последний раз редактировалось Sada; 29.03.2007 в 11:23. Причина: косячокс
Старый 29.03.2007, 11:21   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ошибка в том, что второй источник нужно добавлять дочерним к первому. А вы их оба добавляете к запросу на одном уровне.
X++:
qbs = qbs.addDataSource(tableNum(SalesTable));
Старый 29.03.2007, 11:44   #5  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
пишу в executeQuery() следущее:
X++:
qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(SalesTable));
        
        qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId ));
        
        if( SalesEditFilter.valueStr() )
        {
            qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr());
        }
шибок нет но не фильтрует в чем проблема есть идеии))
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 29.03.2007, 12:36   #6  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
Syntax
public QueryBuildLink addLink(fieldId _parentField, fieldId _thisField)

а у вас как я вижу наоборот идет - _thisField, _parentField

эт про линк

второе:

условие накладывается до супер или после в методе?
Старый 29.03.2007, 13:00   #7  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Цитата:
Сообщение от Jony Посмотреть сообщение
Syntax
public QueryBuildLink addLink(fieldId _parentField, fieldId _thisField)

а у вас как я вижу наоборот идет - _thisField, _parentField

эт про линк
исправил
Цитата:
Сообщение от Jony Посмотреть сообщение
второе:

условие накладывается до супер или после в методе?
до супера

Ктонить пробовал таблицу саму с собой связать ProdTable, поля ProdId и CollectRefProdId.. просто очень надо такую фишку сделать)
__________________
Рабочий день сокращает жизнь на 8 часов

Последний раз редактировалось Himan; 29.03.2007 в 13:10.
Старый 29.03.2007, 13:20   #8  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
нет ничего трудного.

Query q = new Query();
QueryBuildDataSource qbs;
;
qbs = q.addDataSource(tableNum(ProdTable));
qbs = qbs.addDataSource(tableNum(ProdTable));

qbs.addLink(fieldNum( ProdTable, ProdId), fieldNum( ProdTable, CollectRefProdId));

или что-то другое имелось ввиду?
За это сообщение автора поблагодарили: Himan (1).
Старый 29.03.2007, 13:27   #9  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
X++:
qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable));
        qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) );

        prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange(  fieldNum( ProdTable, InventRefType ) ).value( Enum2Str(InventRefType::Sales) );
        
        if( SalesEditFilter.valueStr() )
        {
            prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange(  fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() );
            qbs.addRange(  fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() );
        }
Я вот так сделал только както неахти работает)
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 29.03.2007, 13:38   #10  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
ну "неахти" это не показатель совсем.


а както так оно может работать, потаму, что надо не добавлять ренж на каждый вызов, а только изменять значение его.
Старый 29.03.2007, 13:54   #11  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Цитата:
а както так оно может работать, потаму, что надо не добавлять ренж на каждый вызов, а только изменять значение его.
clearLinks()
clearRanges()
и все)
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 29.03.2007, 14:11   #12  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
X++:
public void executeQuery()
{
    QueryBuildDatasource    qbs;
    ;
    prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).clearLinks();
    prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).clearRanges();

    if( SalesCheckFilter.value( ) )                                                 
    {
        qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable));
        qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) );

        prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange(  fieldNum( ProdTable, InventRefType ) ).value( Enum2Str(InventRefType::Sales) );
        
        if( SalesEditFilter.valueStr() )
        {
            prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange(  fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() );
            qbs.addRange(  fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() );
        }
    }

    super();
}
вот так нормально будет???
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 29.03.2007, 14:48   #13  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от Himan Посмотреть сообщение
clearLinks()
clearRanges()
и все)
Почему-то мне это напомнило старый русский обычай - бить стакан об пол после выпивания его содержимого...

Извините, не сдержался

P.S.: Himan, прислушайтесь к совету Jony. Лучше сразу привыкать к общепринятым правилам - и Вам, и вашим коллегам потом легче будет читать такой код.
За это сообщение автора поблагодарили: Himan (1).
Старый 29.03.2007, 15:00   #14  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Ruff, просто их может быть, а может нет, так что держать их не вижу смысла)
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 29.03.2007, 15:40   #15  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
формируйте запрос в инит источника данных, запомните ранж, в executeQuery только меняйте его значение.
Старый 29.03.2007, 15:47   #16  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
А как или сделать или, чтоб
prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() );
или
qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable));
qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) );
qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() );
подскажите)
__________________
Рабочий день сокращает жизнь на 8 часов

Последний раз редактировалось Himan; 29.03.2007 в 15:50.
Старый 29.03.2007, 15:52   #17  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
сделать можно повсякому, за что я и люблю аксапту , но все зависит от конкретной задачи.

Опишите задачу как можно полнее, что есть и что надо получить, тогда и можно что-то думать.
Старый 29.03.2007, 15:54   #18  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
1. Все заказы которые имеют в поле номер ссылки номер указанного в фильтре заказа.
2. Все заказы которые ссылаются (через поле ссылка производства т.е. ) на производственный заказ у которого в поле номер ссылки указан заказ из фильтра.
При этом если я наложил стандартный фильт, то твой запрос должен накладывать ограничения сверх этого заказа.
__________________
Рабочий день сокращает жизнь на 8 часов

Последний раз редактировалось Himan; 29.03.2007 в 16:06.
Старый 29.03.2007, 16:11   #19  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
т.е. показать заказы с номером из фильта и заказы, связанные с первым по полю CollectRefProdId ?

т.е. показать основной заказ и его дочерние? я прально понял?
Старый 29.03.2007, 16:16   #20  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
ну да
__________________
Рабочий день сокращает жизнь на 8 часов
Теги
datasource, query, датасорс (datasource), источник данных (datasource), подчиненный источник данных, программно, запрос (query)

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
palleagermark: Sample union query from AX 2009 Blog bot DAX Blogs 0 11.07.2008 20:05
Dynamics AX Geek: Using query() Blog bot DAX Blogs 0 28.10.2006 16:40
Установка условия ИЛИ (OR) в Query Zeratul DAX: Программирование 3 22.06.2006 14:28
Проблема с составлением Query axaLearner DAX: Программирование 10 01.12.2005 15:00

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

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

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