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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.11.2006, 09:36   #1  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
LookUp из двух таблиц ...
Здраствуйте !

Незнаю , можно ли так или нет . Нужно в lookup'е отображать данные из двух таблиц . Вот исходник того , чего я добиваюсь :

Код:
static void lookupSalesLineRecs(FormStringControl _ctrl, SalesId _salesId, ItemId _itemId)
{

    SysTableLookup          sLookup = SysTableLookup::newParameters(tableNum(SalesLine),_ctrl);
    Query                   query = new Query();
    QueryBuildDataSource    qInvD;
    QueryBuildRange         qRange1;
    QueryBuildRange         qRange2;
    QueryBuildDataSource    qb;
    ;
    qb      = query.addDataSource(tableNum(SalesLine));
    qRange1 = qb.addRange(fieldNum(SalesLine,SalesId));
    qRange2 = qb.addRange(fieldNum(SalesLine,ItemId));

    qRange1.value(queryvalue(_salesId));
    qRange2.value(queryvalue(_itemId));

    qInvD = qb.addDataSource(tablenum(InventDim));
    qInvD.joinMode(JoinMode::ExistsJoin);
    qInvD.relations(true);

    sLookup.addLookupfield(fieldNum(SalesLine,ItemId));
    sLookup.addLookupfield(fieldNum(SalesLine,QtyOrdered));
    sLookup.addLookupfield(fieldNum(InventDim,configId));
    sLookup.addLookupfield(fieldNum(SalesLine,RecId),true);

    sLookup.parmQuery(query);
    sLookup.performFormLookup();
}
Ну конечно неполучаю инфо от столбика InventDim -> ConfigId . Или я только ошибаюсь б соединении етих таблиц ?

С уважением , Римантас
Старый 13.11.2006, 09:40   #2  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Во-первых такой тип лукапа (основаный на SysTableLookup) не может работать с несколькими таблицами.
Во-вторых Exists Join не должен возвращать значения присоединенной таблицы
а вот еще ссылка:
Lookup и Query

Последний раз редактировалось Roman777; 13.11.2006 в 09:43.
Старый 13.11.2006, 09:47   #3  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Вот это поможет.
__________________
Андрей.
Старый 13.11.2006, 09:48   #4  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Roman777 Посмотреть сообщение
Во-первых такой тип лукапа (основаный на SysTableLookup) не может работать с несколькими таблицами.
Во-вторых Exists Join не должен возвращать значения присоединенной таблицы
а вот еще ссылка:
Lookup и Query
Почти так и думал , но всё таки решил проверить в форуме ... . Спасибо за ответ .

Римантас
Старый 13.11.2006, 09:55   #5  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
Вот это поможет.
Спасибо за ссылку , буду пробывать ...

Римантас
Старый 13.11.2006, 11:40   #6  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Rimantas Посмотреть сообщение
Почти так и думал , но всё таки решил проверить в форуме ... . Спасибо за ответ .

Римантас
Ещё раз хочу паблагодарить - TableLookUp_RU великолепная класса для таких дел . Сделал что хотел .

Римантас
Старый 13.11.2006, 12:43   #7  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
Вот это поможет.
Ну ещё через ранно обрадовалься ... . Вот ещё одна небольшая проблема - Сформировал лукап :
Код:
static void lookupSalesLineRecs(FormStringControl _ctrl, SalesId _salesId, ItemId _itemId)
{
    TableLookup_RU          sLookup = new TableLookup_RU();
    Query                   query = new Query();
    QueryBuildDataSource    qb = query.addDataSource(tableNum(SalesLine));
    QueryBuildRange         qRange1;
    QueryBuildRange         qRange2;
    FormRun                 lookupForm,ownerForm;
    ;

    sLookup.addLookupfield(fieldNum(SalesLine,ItemId));
    sLookup.addLookupfield(fieldNum(SalesLine,QtyOrdered));
    sLookup.addLookupfield(FormControlType::STRING,false, tableMethodStr(SalesLine,InvDimConfig));
    sLookup.addLookupfield(fieldNum(SalesLine,RecId),true);

    sLookup.parmTableId(tableNum(SalesLine));
    sLookup.parmCallingControl(_ctrl);

    qRange1 = qb.addRange(fieldNum(SalesLine,SalesId));
    qRange2 = qb.addRange(fieldNum(SalesLine,ItemId));
    qRange1.value(queryvalue(_salesId));
    qRange2.value(queryvalue(_itemId));

    sLookup.parmQuery(query);
    sLookup.performFormLookup();
}
По идеи , моё поле SalesLineRecId заполняеться значением от lookup'а fieldNum(SalesLine,RecId) . Но вот - он заполняет все строки тем же самим значением . Как отредактировать modified метод , чтобы сохранить нужное значение и только в нужном строке ? И где нужно отредактировать modified - у DataSourse'а или Grid'а ?

Спасибо за помочь ! Римантас
Старый 13.11.2006, 12:56   #8  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Вообще-то лукап отрабатывает на вполне конкретном контроле и по умолчанию изменяет значение только в одной записи. Чтобы менялись значения во всех строках - это надо дополнительно постараться...
Мне кажется, что-то вы не договариваете...
А не edit ли method привязан к контролу, на котором лукап вызывается?
__________________
Андрей.
Старый 13.11.2006, 13:19   #9  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
Вообще-то лукап отрабатывает на вполне конкретном контроле и по умолчанию изменяет значение только в одной записи. Чтобы менялись значения во всех строках - это надо дополнительно постараться...
Мне кажется, что-то вы не договариваете...
А не edit ли method привязан к контролу, на котором лукап вызывается?

Андрей , я доделаю InventJournalTransfer форму . Весь lookup метод - static void lookupSalesLineRecs(FormStringControl _ctrl, SalesId _salesId, ItemId _itemId) - создан у таблицы InventJournalTrans . Етот метод вызываю в datasource формы InventJournalTransfer , у поля SalesLineRecId . И здесь только есть метод lookup . Простите , я новичок - нечто похоже я увидел в форме InventJournalBom , там lookup создан для InventTransIdFather поля . Но там ещё есть и modified метод . Так я нечто похоже и попробывал создать . Наверное будет надо експериментировать и с Grid'ом ...

С уважением , Римантас
Старый 13.11.2006, 13:32   #10  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Для простого выбора значения поля через лукап перекрывать метод modified() не нужно (только lookup, что вы и сделали), и с Grid`ом экспериментировать не стоит - дело не в нем.
__________________
Андрей.
Старый 14.11.2006, 09:22   #11  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
Для простого выбора значения поля через лукап перекрывать метод modified() не нужно (только lookup, что вы и сделали), и с Grid`ом экспериментировать не стоит - дело не в нем.
Ну вот - утро умнее вечера ... . Посмотрел я на свой grid с утра с свежими глазами - ну что я здесь сделаю - SalesLineRecId то integer тип и я стараюсь возвратит ето на контроль StringEdit ... . Ротозейная ошибка ... Поменял на IntEdit - всё идёт как надо .

Я имею ещё один вопрос - как сделать , чтобы отображение информации в столбе было бы по какому то методу , а редактирование - через лукап ? Или такое в гриде невиозможно ?

С уважением , Римантас
Старый 14.11.2006, 09:43   #12  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Это делается с помощью edit-метода.
__________________
Андрей.
Старый 14.11.2006, 10:03   #13  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
Это делается с помощью edit-метода.
Прости Андрей , а чуть подробнее можно ? Или показать в какой то форме такой способ существует ? Искать в Ахапте приходиться долго ... Ну всё таки я новичок ...

С уважением , Римантас
Старый 14.11.2006, 10:30   #14  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Дык, в мануале-то почитай про edit и display методы...
Вот еще ссылка из форума: edit и display методы
__________________
Андрей.
Старый 14.11.2006, 13:20   #15  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
Дык, в мануале-то почитай про edit и display методы...
Вот еще ссылка из форума: edit и display методы
Андрей - про мануалс вы правы - как то забыл что они такие есть ... . И спасибо за ссылку . Да ... как и всё понятно . Но вот одного недогадываюсь - вся нужна информация есть в SalesLine и InvDim , потому что они указывает какой продукт был в заказе . Я в InventJournalTrans добавил два поля - SalesId и SalesLineRecId . Операторщицы введёт данные для какого salesId идёт трансферы и для какого имеено продукта из SalesLine . Вот для етого сделал lookup . Но вот lookup возвращает RecId и контрол формы IntEdit . Вот здесь и остановилься - на какой тип менят контрол , чтобы вывести строковую информацию от SalesLine и как построит edit метод , чтобы лукап действовал ? Почему то мне никак неудаёться ето ...

Буду очень благодарен за советы !

С уважением , Римантас
Старый 14.11.2006, 15:35   #16  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Т.е. хочешь выбирать в лукапе одно (SalesLineRecId), а выводить другое (напр. SalesId)? Тогда есть пример (непростой), как это сделать: форма Клиенты, закладка Контакты, поле Контактное лицо.
__________________
Андрей.
Старый 14.11.2006, 17:27   #17  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Dron AKA andy Посмотреть сообщение
Т.е. хочешь выбирать в лукапе одно (SalesLineRecId), а выводить другое (напр. SalesId)? Тогда есть пример (непростой), как это сделать: форма Клиенты, закладка Контакты, поле Контактное лицо.
Спасибо за подсказку , Андрей ! Буду изучать . Теперь сделал в двух столбиках - в одном лукап редактирование , в другом отображение . Но обещаю из приведенного примера выясниться как ето делаеться ...

С уважением , Римантас
Теги
lookup, systablelookup

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
отчёт из двух таблиц на двух листах с группировкой fialka DAX: Программирование 4 19.03.2007 13:49
Можно вывести в lookup пересечение двух query? Hidden DAX: Программирование 14 14.07.2006 10:02
Невидимая связь двух таблиц в формах ArturK DAX: Программирование 11 11.03.2004 18:18

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:44.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.