|  26.05.2008, 14:47 | #1 | 
| Участник | Связь таблиц 
			
			Здравствуйте!  у меня не большой вопрос: мне надо получить записи из InventTable связанного с VendContractItem и вывести в грид. Перекрыв метод executeQuery - он ни в какую не хочешь проводить выборку  вот текст запроса: X++: public void executeQuery() { Query q_Items; ; q_Items = this.query(); q_Items.dataSourceTable(TableNum(InventTable)); q_Items.dataSourceTable(TableNum(InventTable)).addDataSource(TableNum(VendContractItem)); q_Items.dataSourceTable(TableNum(VendContractItem)).addLink(FieldNum(InventTable,ItemId),FieldNum(VendContractItem,ItemId)); q_Items.dataSourceTable(TableNum(VendContractItem)).joinMode(JoinMode::InnerJoin); q_Items.dataSourceTable(TableNum(VendContractItem)).addRange(FieldNum(VendContractItem,RContractAccount)).value(sysQuery::value(RContractTable_RContractAccount.valueStr())); super(); } спасибо за ранее | 
|  | 
|  26.05.2008, 15:29 | #2 | 
| Участник | 
			
			Попробуйте что-то вроде этого: X++:     QueryBuildDataSource    qbds;
;
    qbds = this.query().dataSourceTable(TableNum(InventTable));
    qbds = qbds.addDataSource(TableNum(VendContractItem));
    qbds.addLink(FieldNum(InventTable,ItemId),FieldNum(VendContractItem,ItemId));
    qbds.joinMode(JoinMode::InnerJoin);
    qbds.addRange(FieldNum(VendContractItem,RContractAccount)).value(sysQuery::value(RContractTable_RContractAccount.valueStr()));
    super(); | 
|  | 
|  26.05.2008, 15:34 | #3 | 
| Участник | 
			
			Это одно и то же. Учтите, что этот код будет вызываться каждый раз при выполнении считывания данных (executeQuery), а значит будет добавляться все больше и больше источников. А почему вы не хотите добавить источник еще один на форму? Если таки хотите это сделать из кода, может перенесите весь этот код (за исключением фильтрации) в метод init источника InventTable. И перед фильтрацией ищите сперва существующий фильтра, а только если не найден создавайте новый. | 
|  | |
| За это сообщение автора поблагодарили: Proid (1). | |
|  26.05.2008, 15:45 | #4 | 
| Участник | 
			
			в init() нет необходимости добавлять, так же как и добавление dataSource на форму - там возникают не понятные "глючи". На форме связано и так много dataSource'ов, и все привязаны к InventTable. пробовал не в executeQuery создавать - результата ноль. Если явно задать для примера номенклатуру - отрабатывает нормально, но вот джойнить VendContractItem ни в какую не хочет
		 | 
|  | 
|  27.05.2008, 07:38 | #5 | 
| MCITP |   
			
			Не понятно.... Т.е. прописываешь на форме датасорс, джойнишь, а он всё равно не привязывается? Смотрел, что получается в запросе к БД? Хоть что-то же там должно появится... Приведи сюда, какой SQL получается. ЗЫ имхо,слишком мало информации, чтоб понять в чём дело... 
				__________________ Zhirenkov Vitaly | 
|  | |
| За это сообщение автора поблагодарили: Proid (1). | |
|  27.05.2008, 07:48 | #6 | 
| Axapta Retail User | 
			
			У меня ваш код чудесно работает. (Хотя конечно в идеале его нужно в init() или все-таки на форму - что у вас там за глюки?).  Возможно у вас значение RContractTable_RContractAccount.valueStr() не корректно - поэтому вы записи не видите? Ну и советую войти в группу пользователей Axapta Retail   | 
|  | |
| За это сообщение автора поблагодарили: Proid (1). | |
|  27.05.2008, 09:20 | #7 | 
| Участник | 
			
			SELECT FIRSTFAST * FROM InventTable WHERE VendContractItem.ItemId=InventTable.ItemId EXISTS JOIN FIRSTFAST * FROM InventItemRangeRef WHERE InventTable.ItemRangeIdRef = InventItemRangeRef.RangeIdRef Странно, но почему этот запрос формируется Аксаптой ... Связь InventTable с InventItemRangeRef и то через другую таблицу только на датасорсах. Вообще задача такая - переделать добавление из классификатора с фильтрацие по договорам. Если делать через добавления датасорса и установкой связи inner join - отрабатывает нормально, но уже существующий функциал дает сбой с первой записью. Ковыряться довольно муторно, вот и решил может программно выбирать записи в inventTable. Но чувствую, придется ковыряться именно в работе фунционала классификатора. | 
|  |