|
|
#1 |
|
Участник
|
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();
}С уважением , Римантас |
|
|
|
|
#2 |
|
NavAx
|
Во-первых такой тип лукапа (основаный на SysTableLookup) не может работать с несколькими таблицами.
Во-вторых Exists Join не должен возвращать значения присоединенной таблицы а вот еще ссылка: Lookup и Query Последний раз редактировалось Roman777; 13.11.2006 в 09:43. |
|
|
|
|
#3 |
|
Moderator
|
Вот это поможет.
__________________
Андрей. |
|
|
|
|
#4 |
|
Участник
|
Цитата:
Сообщение от Roman777
Во-первых такой тип лукапа (основаный на SysTableLookup) не может работать с несколькими таблицами.
Во-вторых Exists Join не должен возвращать значения присоединенной таблицы а вот еще ссылка: Lookup и Query . Спасибо за ответ .Римантас |
|
|
|
|
#5 |
|
Участник
|
|
|
|
|
|
#6 |
|
Участник
|
|
|
|
|
|
#7 |
|
Участник
|
Цитата:
Сообщение от 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();
}Спасибо за помочь ! Римантас |
|
|
|
|
#8 |
|
Moderator
|
Вообще-то лукап отрабатывает на вполне конкретном контроле и по умолчанию изменяет значение только в одной записи. Чтобы менялись значения во всех строках - это надо дополнительно постараться...
Мне кажется, что-то вы не договариваете... А не edit ли method привязан к контролу, на котором лукап вызывается?
__________________
Андрей. |
|
|
|
|
#9 |
|
Участник
|
Цитата:
Сообщение от 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'ом ... С уважением , Римантас |
|
|
|
|
#10 |
|
Moderator
|
Для простого выбора значения поля через лукап перекрывать метод modified() не нужно (только lookup, что вы и сделали), и с Grid`ом экспериментировать не стоит - дело не в нем.
__________________
Андрей. |
|
|
|
|
#11 |
|
Участник
|
Цитата:
. Посмотрел я на свой grid с утра с свежими глазами - ну что я здесь сделаю - SalesLineRecId то integer тип и я стараюсь возвратит ето на контроль StringEdit ... . Ротозейная ошибка ... Поменял на IntEdit - всё идёт как надо .Я имею ещё один вопрос - как сделать , чтобы отображение информации в столбе было бы по какому то методу , а редактирование - через лукап ? Или такое в гриде невиозможно ? С уважением , Римантас |
|
|
|
|
#12 |
|
Moderator
|
Это делается с помощью edit-метода.
__________________
Андрей. |
|
|
|
|
#13 |
|
Участник
|
|
|
|
|
|
#14 |
|
Moderator
|
Дык, в мануале-то почитай про edit и display методы...
Вот еще ссылка из форума: edit и display методы
__________________
Андрей. |
|
|
|
|
#15 |
|
Участник
|
Цитата:
Сообщение от Dron AKA andy
Дык, в мануале-то почитай про edit и display методы...
Вот еще ссылка из форума: edit и display методы . И спасибо за ссылку . Да ... как и всё понятно . Но вот одного недогадываюсь - вся нужна информация есть в SalesLine и InvDim , потому что они указывает какой продукт был в заказе . Я в InventJournalTrans добавил два поля - SalesId и SalesLineRecId . Операторщицы введёт данные для какого salesId идёт трансферы и для какого имеено продукта из SalesLine . Вот для етого сделал lookup . Но вот lookup возвращает RecId и контрол формы IntEdit . Вот здесь и остановилься - на какой тип менят контрол , чтобы вывести строковую информацию от SalesLine и как построит edit метод , чтобы лукап действовал ? Почему то мне никак неудаёться ето ... Буду очень благодарен за советы ! С уважением , Римантас |
|
|
|
|
#16 |
|
Moderator
|
Т.е. хочешь выбирать в лукапе одно (SalesLineRecId), а выводить другое (напр. SalesId)? Тогда есть пример (непростой), как это сделать: форма Клиенты, закладка Контакты, поле Контактное лицо.
__________________
Андрей. |
|
|
|
|
#17 |
|
Участник
|
Цитата:
![]() С уважением , Римантас |
|
|
| Теги |
| lookup, systablelookup |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| отчёт из двух таблиц на двух листах с группировкой | 4 | |||
| Можно вывести в lookup пересечение двух query? | 14 | |||
| Невидимая связь двух таблиц в формах | 11 | |||
|