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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.03.2007, 16:39   #21  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
блин, а как все сложно начиналось та

по идее нужно ограничение вида

prodId == 'prodNum1' || CollectRefProdId == 'prodNum1';

т.е.
X++:
str value = '((ProdId == %1)||(CollectRefProdId == %1))'
...
....addRange(fieldNum(prodTable,recId)).value(strFmr(value, 'ProdNum1'));
и ненужны лишние источники данных. одного хватит

ПС: могут быть опечатки и пр мелочи. но идея вроде та.
Старый 29.03.2007, 16:58   #22  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Цитата:
Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 18.
откуда лезет???

X++:
        if( SalesEditFilter.valueStr() )
            prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange(  fieldNum( ProdTable, RecId ) ).value(strFmt(value, SalesEditFilter.valueStr()));
        else
            prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange(  fieldNum( ProdTable, RecId ) ).value(strFmt(value, ""));
__________________
Рабочий день сокращает жизнь на 8 часов

Последний раз редактировалось Himan; 29.03.2007 в 17:01.
Старый 29.03.2007, 17:10   #23  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
str value = '((ProdId == "%1")||(CollectRefProdId == "%1"))'
Старый 29.03.2007, 17:23   #24  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Цитата:
Сообщение от Jony Посмотреть сообщение
блин, а как все сложно начиналось та

по идее нужно ограничение вида

prodId == 'prodNum1' || CollectRefProdId == 'prodNum1';

т.е.
X++:
str value = '((ProdId == %1)||(CollectRefProdId == %1))'
...
....addRange(fieldNum(prodTable,recId)).value(strFmr(value, 'ProdNum1'));
и ненужны лишние источники данных. одного хватит

ПС: могут быть опечатки и пр мелочи. но идея вроде та.
нужно то не по ProdId а по InventRefId
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 29.03.2007, 17:23   #25  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
по else ветка должна по идее очищать существующий ренж а не добавлять пустой.


и ненада каждый раз добавлять ограничение, его можно тока 1 раз добавить и менять ему значение каждый раз.

Последний раз редактировалось Jony; 29.03.2007 в 17:26.
Старый 30.03.2007, 06:14   #26  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
т.е. надо фильтр налаживать на номар ссылки вот в чем проблемка
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 07:07   #27  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
по теории должно помочь, если сделать выборку, а потом join
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 07:55   #28  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
надо что-то подобное
X++:
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 ) );
а после DS с qbs объединить
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 09:40   #29  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Вылаживаю запрос который отрабатывает коректно...
в коде прописы df. следующее.:
X++:
qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable));
            qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) );
            qbs.joinMode( joinMode::InnerJoin );
            qbs.addRange(  fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr());
почему то что сделано в запросе не совподает с кодом???
Вложения
Тип файла: xpo SlinkinAlexandr.xpo (4.4 Кб, 260 просмотров)
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 10:55   #30  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от Himan Посмотреть сообщение
Вылаживаю запрос который отрабатывает коректно...
в коде прописы df. следующее.:
X++:
qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable));
            qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) );
            qbs.joinMode( joinMode::InnerJoin );
            qbs.addRange(  fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr());
почему то что сделано в запросе не совподает с кодом???
Потому что у Вас в коде CollectRefProdId относится к родительскому DS, а ProdId - к дочернему (см. выше замечание Jony про метод addLink). А в приложенном Query в relation всё указано наоборот: Field = CollectRefProdId, RelatedField = ProdId.

Не вникал в задачу, поэтому сказать, где - правильно, не могу. Но где-то точно неправильно
__________________
Старый 30.03.2007, 11:02   #31  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Цитата:
Потому что у Вас в коде CollectRefProdId относится к родительскому DS, а ProdId - к дочернему (см. выше замечание Jony про метод addLink). А в приложенном Query в relation всё указано наоборот: Field = CollectRefProdId, RelatedField = ProdId.
исправил но всеравно там где запрос построен, возвращает 1 запись(правильно),
а в коде все, не фильтрует почему не понятно
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 13:23   #32  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Попробуйте так:
X++:
...
qbs.joinMode( joinMode::InnerJoin );
qbs.fetchMode(1);
...
__________________
Старый 30.03.2007, 13:29   #33  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
X++:
            qbs.addLink( fieldNum( ProdTable, ProdId ), fieldNum( ProdTable, CollectRefProdId ) );
            qbs.joinMode( joinMode::InnerJoin );
            qbs.fetchMode(1);
            qbs.addRange(  fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr());
не действует, всеравно все валит
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 13:39   #34  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Ну да... фетчмоде вообще-то по умолчанию = 1. Это я ступил
Сложно конечно разгадывать вслепую. Форму бы глянуть...

Может быть дело в выравнивании...
У Вас на контроле SalesEditFilter (я так понимаю - это StringEdit) - в качестве EDT указан SalesIdBase или что?
__________________
Старый 30.03.2007, 13:45   #35  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
нет там EDT, просто поле на форма) Я из него значение прямо в фильтр и все
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 13:50   #36  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
вот форма)) посмотрите в чем дело
Вложения
Тип файла: xpo ProdTable.xpo (312.3 Кб, 267 просмотров)
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 13:54   #37  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Ну вот, как я и предполагал.
Попробуйте указать этому контролу свойство ExtendedDataType = SalesIdBase.
Если не поможет, значит проблема не в выравнивании вправо
__________________
Старый 30.03.2007, 13:57   #38  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
Значит не в выравнивании)
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 14:09   #39  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
почему интересно на значения фильтра не реагирует, если бы выравнивание то вообще ничего ббы не выводил а так, все выводит как будто на него ничего и не накладывали, что такое ума не приложу)

дак выложил же Up
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 14:25   #40  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
не, не выравнивание!
у Вас же там второй ds - InventDim. Тут надо думать, как их подружить - навскидку не подскажу, а времени разбираться к сожалению нет.

Но если попробовать на форме убрать связь с InventDim (понятно, что этого делать нельзя, но просто чтобы понять), то Ваш фильтр срабатывает.
__________________
Теги
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, время: 02:15.