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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.02.2012, 17:11   #1  
yahenz is offline
yahenz
Участник
 
12 / 10 (1) +
Регистрация: 27.12.2011
Адрес: Челябинск
? Join временной таблицы в запросе
Всем привет!

Пересмотрел несколько похожих тем, но к сожалению, из-за нехватки опыта, понимания так и не пришло.
Задача такова: На форме (не важно какой, у формы 1 источник данных) нужно организовать фильтр по полю ItemId. Т.к. область значений может быть достаточна велика, то я решил использовать временную таблицу, заполнить ее нужными значениями (ItemId) и сдлеать join к постоянной таблице, являющейся источником данных на форме.

Я пытаюсь в executeQuery() сформировать запрос и присвоить его datasource формы.

Вот примерный код:
X++:
public void executeQuery()
{
    Query                           query;
    QueryBuildDataSource            qbdsRetailPriceBuffer, qbdsTmpTable;

    TmpTable tmpTable = TmpTable::InitOnServer();
    ;

    query = new Query();
    qbdsRetailPriceBuffer = query.addDataSource(tablenum(RetailPriceBuffer));

    if(InventLocationFilter.valueStr() && CustomSectionFilter.valueStr())
    {
        tmpTable.data(GetCustomSectionFilterResult(InventLocationFilter.valueStr(), CustomSectionFilter.valueStr()));
        qbdsTmpTable = qbdsRetailPriceBuffer.addDataSource(tablenum(TmpTable));
        qbdsTmpTable.addLink(fieldnum(RetailPriceBuffer, ItemId), fieldnum(TmpTable, ItemId));
        qbdsTmpTable.joinMode(JoinMode::ExistsJoin);
        qbdsTmpTable.fetchMode(false);
    }  

    this.query(query);
    super();
}
В методе TmpTable::InitOnServer() возвращается курсор временной таблицы созданной на сервере:
X++:
public static server TmpTable InitOnServer()
{
    TmpTable tmpTable;
    select firstonly tmpTable;
    return tmpTable;
}
В методе GetCustomSectionFilterResult(), заполняется и возвращается табл. переменная временной таблицы:
X++:
public static server TmpTable GetCustomSectionFilterResult(InventLocationId _inventLocationId, CustomSectionId _customSectionId)
{
    TmpTable    tmpTable = TmpTable::InitOnServer();
    ;

    //Заполнение tmpTable...

    return tmpTable;
}
Когда выполняется super(), выдает: "Временные таблицы должны быть вложенными (inner), когда вы объединяете их оператором join с постоянными таблицами".
Что же я делаю не так?

Помогите пожалуйста, если кто сталкивался.

С уважением, Евгений.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
JOIN подчиненной таблицы в отчете Ислан DAX: Программирование 14 24.10.2011 17:42
Display метод временной таблицы выполняется в компании DAT S.Kuskov DAX: Программирование 4 15.04.2011 20:11
Можно ли вообще сделать JOIN временной таблицы и InventDim??? Maxim Gorbunov DAX: Программирование 9 05.03.2005 10:39
SQL-запрос с участием временной таблицы Atani DAX: Программирование 1 07.10.2003 19:55
Временные таблицы в запросе Dron AKA andy DAX: Программирование 4 06.09.2002 12:14
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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