|  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 | 
| Участник | Цитата:  . Посмотрел я на свой grid с утра с свежими глазами - ну что я здесь сделаю - SalesLineRecId то integer тип и я стараюсь возвратит ето на контроль StringEdit ...  . Ротозейная ошибка ... Поменял на IntEdit - всё идёт как надо . Я имею ещё один вопрос - как сделать , чтобы отображение информации в столбе было бы по какому то методу , а редактирование - через лукап ? Или такое в гриде невиозможно ? С уважением , Римантас | 
|  | 
|  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 методы  . И спасибо за ссылку . Да ... как и всё понятно . Но вот одного недогадываюсь - вся нужна информация есть в SalesLine и InvDim , потому что они указывает какой продукт был в заказе . Я в InventJournalTrans добавил два поля - SalesId и SalesLineRecId . Операторщицы введёт данные для какого salesId идёт трансферы и для какого имеено продукта из SalesLine . Вот для етого сделал lookup . Но вот lookup возвращает RecId и контрол формы IntEdit . Вот здесь и остановилься - на какой тип менят контрол , чтобы вывести строковую информацию от SalesLine и как построит edit метод , чтобы лукап действовал ? Почему то мне никак неудаёться ето ...   Буду очень благодарен за советы ! С уважением , Римантас | 
|  | 
|  14.11.2006, 15:35 | #16 | 
| Moderator | 
			
			Т.е. хочешь выбирать в лукапе одно (SalesLineRecId), а выводить другое (напр. SalesId)? Тогда есть пример (непростой), как это сделать: форма Клиенты, закладка Контакты, поле Контактное лицо.
		 
				__________________ Андрей. | 
|  | 
|  14.11.2006, 17:27 | #17 | 
| Участник | Цитата:  С уважением , Римантас | 
|  | 
| Теги | 
| lookup, systablelookup | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| отчёт из двух таблиц на двух листах с группировкой | 4 | |||
| Можно вывести в lookup пересечение двух query? | 14 | |||
| Невидимая связь двух таблиц в формах | 11 | |||
| 
 |