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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.03.2010, 16:24   #1  
Arahnid is offline
Arahnid
Участник
 
880 / 60 (4) ++++
Регистрация: 09.08.2005
Адрес: Moscow
Акс 3.0 Запросы на источнике с или
Создан EDT FilmCode по примеру Dimension, но состоит из 25 элементов. Тип данных в нем int.

Затем сделана форма и одна из группы полей на grid FilmCode.

Задача отфильтровать те строки, где в группе FilmCode хотя бы в одном элементе указано выбранное значение. Значение указывается через специальное поле StringEdit на форме.

Пишу запрос
X++:
public void executeQuery()
{
    QueryBuildRange      qbdsrange1;
    QueryBuildDataSource qbds1;
    Integer              _idx;
    str 10000      strFilter;
    str 10 CinemaFilmCode;
    ;
    qbds1 = this.query().dataSourceTable(tableNum(CinemaSchTable));
    CinemaFilmCode = int2str(CinemaFilmTable::findName(FindFilm.valueStr()).FilmCode);
    qbds1.clearRange(fieldId2Ext(fieldNum(CinemaSchTable,FilmCode),1));

    if (FindFilm.valueStr())
    {
        qbdsrange1 =  qbds1.addRange(fieldNum(CinemaSchTable,FilmCode));
        strFilter = '((CinemaSchTable.FilmCode[1] == '+CinemaFilmCode+')';
        for (_idx=2; _idx <=25; _idx++)
        {
               strFilter +=  ' || (CinemaSchTable.FilmCode['+ int2str(_idx)+'] == '+ CinemaFilmCode+')';
        }       
        strFilter += ')';
        qbdsrange1.value(strFmt(strFilter));
    }
    super();
}
Выдает ошибку нехватает скобки правой на 28 символе. Однако, этот же запрос через обзор таблицы работает.
SELECT * FROM CinemaSchTable WHERE ((((CinemaSchTable.FilmCode[1] == 437) || (CinemaSchTable.FilmCode[2] == 437) || (CinemaSchTable.FilmCode[3] == 437) || (CinemaSchTable.FilmCode[4] == 437) || (CinemaSchTable.FilmCode[5] == 437) || (CinemaSchTable.FilmCode[6] == 437) || (CinemaSchTable.FilmCode[7] == 437) || (CinemaSchTable.FilmCode[8] == 437) || (CinemaSchTable.FilmCode[9] == 437) || (CinemaSchTable.FilmCode[10] == 437) || (CinemaSchTable.FilmCode[11] == 437) || (CinemaSchTable.FilmCode[12] == 437) || (CinemaSchTable.FilmCode[13] == 437) || (CinemaSchTable.FilmCode[14] == 437) || (CinemaSchTable.FilmCode[15] == 437) || (CinemaSchTable.FilmCode[16] == 437) || (CinemaSchTable.FilmCode[17] == 437) || (CinemaSchTable.FilmCode[18] == 437) || (CinemaSchTable.FilmCode[19] == 437) || (CinemaSchTable.FilmCode[20] == 437) || (CinemaSchTable.FilmCode[21] == 437) || (CinemaSchTable.FilmCode[22] == 437) || (CinemaSchTable.FilmCode[23] == 437))))

Если писать без указания таблицы FilmCode[24] = 541..., то тоже не работает.
Если писать = или вместо || поставить or, то тоже не работает.
Если в qbdsrange1.value(strFmt(strFilter)); записать просто 541, то по первому полю в группе работает.
Не могу понять где ошиблась.

Если
X++:
    if (FindFilm.valueStr())
    {
        qbdsrange1 =  qbds1.addRange(fieldid2ext(fieldNum(CinemaSchTable,FilmCode),1));
        strFilter = ' == 1)||(CinemaSchTable.FilmCode[1] == '+CinemaFilmCode+')';
        for (_idx=2; _idx <=2; _idx++)
        {
               strFilter +=  ' || (CinemaSchTable.FilmCode['+ int2str(_idx)+'] == '+ CinemaFilmCode+')';
        }       
        strFilter += '';
        qbdsrange1.value(strFmt(strFilter));
    }
ошибок нет, но и фильтр не работает
Такое впечатление, что он пытается зачем-то поставить FilmCode[1] =

Последний раз редактировалось Arahnid; 01.03.2010 в 17:07.
Теги
query, range, dimensions

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
оптимизируем запросы. SHiSHok DAX: Программирование 18 13.09.2009 21:26
Запросы к связанным таблицам Rect DAX: Программирование 14 05.06.2007 10:16
Производство. Запросы\Развертывание\Обработка не дает нужный результат e@gle DAX: Функционал 11 11.05.2007 18:10
Сложные запросы в RLS Ruff DAX: Администрирование 12 30.08.2005 18:02
Разные запросы в 2-х и 3-х уровневой конфигурациях. Что делать?! Anais DAX: Программирование 12 04.11.2004 12:47

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

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

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