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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.07.2005, 11:55   #1  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
? Как в query добавить фильтр по аналитике (Dimension)?
Здравствуйте, столкнулся с такой проблемой:

У меня есть довольно сложный запрос с уже созданной формой, на которой имеются стандартные поля для указания аналитик (Департамент, продукт, пр.). Необходимо, собственно, получить данные из этих полей (которые вводит пользователь) и установить по ним фильтр на ранее выбранные записи таблицы smmQuotationTable.

Сейчас мои попытки выглядят примерно так:

for (i = 1; i <= enumcnt(SysDimension); i++)
{
ds.addRange(fieldId2ext(fieldnum(smmQuotationTable, Dimension), i));
}

Насколькок я понимаю, это лишь добавление фильтра, но не получение значений для него. Если в цикле (или вообще без цикла) использовать value и указать какое-нибудь конкретное значение, то оно [значение] попадёт во ВСЕ dimensions. В общем, как всё это корректно оформить? Могу конкретизировать вопрос: напишите, пожалуйста, простенький запрос, выбирающий из таблицы предложений smmQuotationTable все предложения, для которых, скажем, аналитика "департамент" имеет значение, введенное пользователем на форме.

Заранее спасибо.
Старый 14.07.2005, 12:23   #2  
LEX is offline
LEX
NavAx
Аватар для LEX
NavAx Club
 
33 / 12 (1) ++
Регистрация: 06.04.2004
можно попробовать :
smmQuotationTable.Dimension[1]
(в квадратных скобах указать номер аналитики)
Старый 14.07.2005, 12:23   #3  
Andrew AG is offline
Andrew AG
Участник
 
24 / 14 (1) ++
Регистрация: 11.09.2003
Адрес: München
purposeId = fieldId2Ext(fieldNum(VendTrans, Dimension), SysDimension::Purpose + 1);
queryBuildRangeConfigId = queryBuildDataSource.addRange(purposeId);
queryBuildRangeConfigId.value("значение");
За это сообщение автора поблагодарили: macklakov (4).
Старый 14.07.2005, 12:55   #4  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
Спрошу чуток по-другому:

Как с ФОРМЫ снять значения аналитик (dimension), вводимые пользователем, и использовать их в качестве фильтра для query?

Сейчас интересующая меня часть запроса выглядит так:

Some_qr = new QueryRun(Some_Query);
for (i = 1; i<= enumcnt(SysDimension); i++)
{
Some_qr.query().dataSourceNo(1).addRange(fieldId2ext(fieldnum(smmQuotationTable, Dimension), i)).value("?????");
}

Что нужно написать вместо value("??????"), чтобы туда подставлялись значения, введенные пользователем в соответствующие поля формы?
Старый 14.07.2005, 14:51   #5  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
...да, забыл добавить, что поля формы, куда вводятся условия фильтрации по аналитикам, являются стандартными, я их вообще нигде в родительских классах не нашёл Как же получить эти значения, что пользователь вводит?
Старый 14.07.2005, 15:58   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Не знаю, как у вас, но у меня вот этот код накладывает фильтр только на первую аналитику:
PHP код:
static void Job12(Args _args)
{
    
Query   query = new Query();
    
QueryBuildDataSource qbds query.addDataSource(tableNum(smmQuotationTable));
    
QueryBuildRange qbr;
    ;
    
qbr qbds.addRange(fieldId2ext(fieldNum(smmQuotationTableDimension),1));
    
qbr.value("sfdlkfs");

    
box::info(query.dataSourceNo(1).toString());

А вот как вам получить значения с формы - немного сложно ответить, если ны не написали ни названия формы, ни какие базовые классы вы смотрели.
Попробуйте может свойство autoDeclaration для этих трех полей поставить yes
и обращаться к ним по имени?
Старый 14.07.2005, 16:03   #7  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Изначально опубликовано kashperuk
Не знаю, как у вас, но у меня вот этот код накладывает фильтр только на первую аналитику:
qbr = qbds.addRange(fieldId2ext(fieldNum(smmQuotationTable, Dimension),1));
Ну, понятно, почему только на 1ю?

С Уважением,
Георгий
Старый 14.07.2005, 16:07   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Talking

Не, понятно, что на первую. Просто насколько я понял, у автора при выполнении наложения фильтра на одну из аналитик фильтр накладывался на все три сразу.
Старый 14.07.2005, 16:14   #9  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
!
Спасибо, но до этого я уже сам дошёл, т.е. у меня ПОЛУЧИЛОСЬ наложить фильтр по любой аналитике с помощью...

Some_qr.query().dataSourceNo(1).addRange(fieldId2ext(fieldnum(smmQuotationTable, Dimension), i)).value("?????");

...как я уже писал ранее.

Но вопрос теперь немножко в другом (о чём я тоже уже написал) - а именно:

ЧТО писать вместо "?????", чтобы туда попало значение, введенное пользователем на форме, а не то, что мы пропишем в коде. На форме имеются стандартные поля для добавления фильтра по аналитикам - как оттуда значения вытащить? (примечание: как эти поля попали в форму - я не знаю, т.к. исходная форма не моя. И ни в одном из родительских классов я не нашёл упоминания Dimension)
Старый 14.07.2005, 16:25   #10  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А что говорит smmQuotationTable.Dimension[1] ?



С Уважением,
Георгий
Старый 14.07.2005, 16:35   #11  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
Говорит ровно то, что находится в поле Dimension[1] текущей записи таблицы smmQuotationTable. Да, по этому полю накладывается фильтр (весьма успешно), но мне-то надо значение для фильтра взять из поля ввода на форме, а не из таблицы какой-нибудь. Если бы то, что пользователь вводит в поле, сохранялось в таблицу, не было бы и проблемы.
Старый 14.07.2005, 16:48   #12  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
у меня такая ситуация была...
но у моем случае...Как и вызывающий объект, так и диалог был на RanBase.
значение аналитики записывала в контейнер и передавала в вызывающий объект.
Старый 14.07.2005, 16:58   #13  
online
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Остался непонятным вопрос:
Контрольки на форме не привязаны к соотв полям таблицы ? (
Цитата:
Если бы то, что пользователь вводит в поле, сохранялось в таблицу, не было бы и проблемы.
)
Вариант 1. Контрольки генерятся динамически (класс-наследник RunBase). Тогда данные лежат в соотв переменной класса (как и пишет Tays)
Вариант 2. Контрольки не привязаны вообще к датасорсу, но это полноценная форма.
Тогда добраться к значениям возможно лишь - через контрольки. Т.е. объявляете контролькам autodeclaration=yes или через control:: достукиваетесь до них. А далее - в зависимости от типа (скорее всего String) - получаете значение контрольки
Или что-то не так?
Старый 14.07.2005, 17:21   #14  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
К чему привязаны эти контрольки я не знаю, чем создаются тоже... нигде в родительских классах я не нашёл упоминания аналитик. Прикреплю пару иллюстраций - может понятнее станет, как до данных "достучаться"...

Вложения
Тип файла: img73425-1 (34.3 Кб, 811 просмотров)
Тип файла: img73425-2 (17.5 Кб, 857 просмотров)
Старый 14.07.2005, 17:22   #15  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
попытка №2...
Изображения
 
Старый 14.07.2005, 17:23   #16  
Roman812 is offline
Roman812
Участник
 
21 / 10 (1) +
Регистрация: 29.06.2005
и ещё одна...
Изображения
 
Старый 14.07.2005, 17:29   #17  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Хм. Ну, поствьте autodeclaration в Yes и в modified накладывайте фильтр.
Внешний вид, без свойств - он как-то не очень информативен для разработчика.
Старый 14.07.2005, 17:36   #18  
Andrew AG is offline
Andrew AG
Участник
 
24 / 14 (1) ++
Регистрация: 11.09.2003
Адрес: München
согласоно картинке №2 мне думается, что искать нужно по ключевому слову Dialog в вызывающем этот диалог классе. Группа полей "Интервал" скорее всего создается в классе, а "Таблица предложений" - это из query. Соответственно в классе нужно добавить свой филд для диалога и далее использовать значение из него в вашем запросе
Старый 14.07.2005, 18:02   #19  
Tays is offline
Tays
Участник
 
165 / 17 (1) ++
Регистрация: 18.07.2003
по картинкам видно, что родитель должен быть ранбайз...

согласно моим наблюдениям.. данные из контралов должны записываться в контейнер..

2 George Nordic
Согласна, кратинки мало информативны.
Свойства... бы то ж не плохо, а лучше покопаться в коде...)))
Старый 15.07.2005, 00:51   #20  
online
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Картинки достаточно информативны чтобы с уверенностью заявить что:
1) это не обычная форма, а класс-наследник RunBaseBatch (или просто RunBase)
2) аналитика добавлена через query и кнопочку выбор (на картинке она заметна)
а как передать значения с query... завтра посмотрю
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фильтр по пустому Dimension[x] в select Yprit DAX: Программирование 3 05.03.2008 15:11
фильтр в query kitty DAX: Программирование 4 25.05.2005 09:44
Как в таблице rassetDeprAccount.Dimension[8] добавить значение аналитики velk DAX: Программирование 2 25.08.2004 16:37
Фильтр в Query по двум полям ArturK DAX: Программирование 1 15.03.2004 13:17
Как в AddRange() добавить поле Dimension[2] Владимир Максимов DAX: Программирование 13 27.02.2004 11:27

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

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

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