![]() |
#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 |
Участник
|
Цитата:
![]() ![]() Я имею ещё один вопрос - как сделать , чтобы отображение информации в столбе было бы по какому то методу , а редактирование - через лукап ? Или такое в гриде невиозможно ? С уважением , Римантас |
|
![]() |
#12 |
Moderator
|
Это делается с помощью edit-метода.
__________________
Андрей. |
|
![]() |
#13 |
Участник
|
|
|
![]() |
#14 |
Moderator
|
Дык, в мануале-то почитай про edit и display методы...
Вот еще ссылка из форума: edit и display методы
__________________
Андрей. |
|
![]() |
#15 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
![]() Дык, в мануале-то почитай про edit и display методы...
Вот еще ссылка из форума: edit и display методы ![]() ![]() Буду очень благодарен за советы ! С уважением , Римантас |
|
![]() |
#16 |
Moderator
|
Т.е. хочешь выбирать в лукапе одно (SalesLineRecId), а выводить другое (напр. SalesId)? Тогда есть пример (непростой), как это сделать: форма Клиенты, закладка Контакты, поле Контактное лицо.
__________________
Андрей. |
|
![]() |
#17 |
Участник
|
Цитата:
![]() С уважением , Римантас |
|
Теги |
lookup, systablelookup |
|
![]() |
||||
Тема | Ответов | |||
отчёт из двух таблиц на двух листах с группировкой | 4 | |||
Можно вывести в lookup пересечение двух query? | 14 | |||
Невидимая связь двух таблиц в формах | 11 |
|