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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.03.2007, 16:39   #1  
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, 17:23   #2  
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, 16:58   #3  
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   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
str value = '((ProdId == "%1")||(CollectRefProdId == "%1"))'
Старый 29.03.2007, 17:23   #5  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
по else ветка должна по идее очищать существующий ренж а не добавлять пустой.


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

Последний раз редактировалось Jony; 29.03.2007 в 17:26.
Старый 30.03.2007, 06:14   #6  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
т.е. надо фильтр налаживать на номар ссылки вот в чем проблемка
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 07:07   #7  
Himan is offline
Himan
Участник
Аватар для Himan
 
312 / 12 (1) ++
Регистрация: 07.11.2006
Адрес: Tumen
по теории должно помочь, если сделать выборку, а потом join
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 07:55   #8  
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   #9  
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 Кб, 265 просмотров)
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 10:55   #10  
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   #11  
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   #12  
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   #13  
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   #14  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Ну да... фетчмоде вообще-то по умолчанию = 1. Это я ступил
Сложно конечно разгадывать вслепую. Форму бы глянуть...

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

дак выложил же Up
__________________
Рабочий день сокращает жизнь на 8 часов
Старый 30.03.2007, 14:25   #20  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от Himan Посмотреть сообщение
дак выложил же Up
Заметил, но не сразу
Теги
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:58.