13.11.2006, 09:36 | #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(); } С уважением , Римантас |
|
13.11.2006, 09:40 | #2 |
NavAx
|
Во-первых такой тип лукапа (основаный на SysTableLookup) не может работать с несколькими таблицами.
Во-вторых Exists Join не должен возвращать значения присоединенной таблицы а вот еще ссылка: Lookup и Query Последний раз редактировалось Roman777; 13.11.2006 в 09:43. |
|
13.11.2006, 09:47 | #3 |
Moderator
|
Вот это поможет.
__________________
Андрей. |
|
13.11.2006, 09:48 | #4 |
Участник
|
Цитата:
Сообщение от Roman777
Во-первых такой тип лукапа (основаный на SysTableLookup) не может работать с несколькими таблицами.
Во-вторых Exists Join не должен возвращать значения присоединенной таблицы а вот еще ссылка: Lookup и Query Римантас |
|
13.11.2006, 09:55 | #5 |
Участник
|
|
|
13.11.2006, 11:40 | #6 |
Участник
|
|
|
13.11.2006, 12:43 | #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(); } Спасибо за помочь ! Римантас |
|
13.11.2006, 12:56 | #8 |
Moderator
|
Вообще-то лукап отрабатывает на вполне конкретном контроле и по умолчанию изменяет значение только в одной записи. Чтобы менялись значения во всех строках - это надо дополнительно постараться...
Мне кажется, что-то вы не договариваете... А не edit ли method привязан к контролу, на котором лукап вызывается?
__________________
Андрей. |
|
13.11.2006, 13:19 | #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'ом ... С уважением , Римантас |
|
13.11.2006, 13:32 | #10 |
Moderator
|
Для простого выбора значения поля через лукап перекрывать метод modified() не нужно (только lookup, что вы и сделали), и с Grid`ом экспериментировать не стоит - дело не в нем.
__________________
Андрей. |
|
14.11.2006, 09:22 | #11 |
Участник
|
Цитата:
Я имею ещё один вопрос - как сделать , чтобы отображение информации в столбе было бы по какому то методу , а редактирование - через лукап ? Или такое в гриде невиозможно ? С уважением , Римантас |
|
14.11.2006, 09:43 | #12 |
Moderator
|
Это делается с помощью edit-метода.
__________________
Андрей. |
|
14.11.2006, 10:03 | #13 |
Участник
|
|
|
14.11.2006, 10:30 | #14 |
Moderator
|
Дык, в мануале-то почитай про edit и display методы...
Вот еще ссылка из форума: edit и display методы
__________________
Андрей. |
|
14.11.2006, 13:20 | #15 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
Дык, в мануале-то почитай про edit и display методы...
Вот еще ссылка из форума: edit и display методы Буду очень благодарен за советы ! С уважением , Римантас |
|
14.11.2006, 15:35 | #16 |
Moderator
|
Т.е. хочешь выбирать в лукапе одно (SalesLineRecId), а выводить другое (напр. SalesId)? Тогда есть пример (непростой), как это сделать: форма Клиенты, закладка Контакты, поле Контактное лицо.
__________________
Андрей. |
|
14.11.2006, 17:27 | #17 |
Участник
|
Цитата:
С уважением , Римантас |
|
Теги |
lookup, systablelookup |
|
Похожие темы | ||||
Тема | Ответов | |||
отчёт из двух таблиц на двух листах с группировкой | 4 | |||
Можно вывести в lookup пересечение двух query? | 14 | |||
Невидимая связь двух таблиц в формах | 11 |
|