|  19.08.2003, 18:24 | #1 | 
| Гость | Ка программно изменить свойство JoinSource у DataSource формы 
			
			Пишу: My_ds.JoinSource(Parent_ds); Проглатывает, но без нужного результата. Если же ручками JoinSource изменяю, то все хорошо :-( | 
|  | 
|  19.08.2003, 19:49 | #2 | 
| Moderator | 
			
			Может попробовать решить задачу с помощью методов addLink, addDynalink ?  Хотя я не знаю Вашей задачи и могу ошибаться.
		 | 
|  | 
|  19.08.2003, 20:38 | #3 | 
| ---------------- | JoinSource 
			
			Изменение joinSource и joinType из кода не дают никакого результата. Следует изменять query в самом DS | 
|  | 
|  20.08.2003, 11:25 | #4 | 
| Гость | 
			
			Задача для знающего может и простая, а для начинающего..... :-( Есть DataSource 1. К нему через JoinSource привязан DataSource 2, к которому так же через JoinSource привязан DataSource 3. Мне необходимо DataSource 4 по нажатию на чек-бокс прикручивать и откручивать к DataSource 2, у которого (вернее у таблицы) есть relation c DataSource 4 (таблицы) по двум полям. | 
|  | 
|  20.08.2003, 13:44 | #5 | 
| Гость | 
			
			Неужели никто не скажет..... Как программно к одному источнику данных прикрутить два зависимых источника данных? Пробовал даже так: QueryBuildDataSource qbds; QueryBuildDataSource qbdsIS; QueryBuildDataSource qbdsIR; qry = new Query(); qbds = qry.addDataSource(TableNum(T1),"T1"); qbdsIS = qbds.addDataSource(TableNum(T2),"T2"); qbdsIS.relations(true); T2 к Т1 благополучно цепляется :-) Но если добавить и qbdsIR = qbds.addDataSource(TableNum(T3),"T3"); qbdsIR.relations(true); То и Т3 не цепляется, и Т2 благополучно отваливается :-( И обидно, что не программно, а ручками через датасорсе на форме все проходит..... | 
|  | 
|  20.08.2003, 15:09 | #6 | 
| Участник | Просто добавь fetchMode PHP код: 
			  | 
|  | |
| За это сообщение автора поблагодарили: Oz (1). | |
|  20.08.2003, 15:24 | #7 | 
| Гость |   
			
			Большое человеческое СПАСИБО, действительно заработало.
		 | 
|  | 
|  07.03.2007, 11:11 | #8 | 
| MCTS | 
			
			Добрый время суток! Извиняюсь, но возможно не понимаю одной простой вещи. Как при программном связывании нескольких датасурсов указать, что данные датасурсы - это датасурсы из макета? Пример. На форме есть DataSource1 (родительский) и DataSource2 (подчиненный). В int-методе DataSource1 пишу: X++: public void init() { Query q = new Query(); QueryBuildDataSource qbds; ; super(); q = this.query(); qbds = q.addDataSource(tablenum(DataSource2), "DataSource2"); qbds.joinMode(JoinMode::OuterJoin); qbds.fetchMode(QueryFetchMode::One2One); qbds.relations(true); } | 
|  | 
|  07.03.2007, 11:19 | #9 | 
| Участник | 
			
			1. А зачем вы их программно связываете? все эти свойства можно задать и в дизайне. 2. может просто свойство DataSource на гридах неверно установлено? | 
|  | 
|  07.03.2007, 11:32 | #10 | 
| Участник | 
			
			Датасоурс, созданный в коде не имеет отношения к датасорсу в дизайне. Если хотите их связывать программно, то указывайте свойство joinMode для датасорса из дизайна. Т.е. DataSource2_ds.JoinMode() и т.д. 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  07.03.2007, 11:37 | #11 | 
| Участник | 
			
			Так Вы же не связываете два существующих DataSource, а добавляете новый (третий) DataSource. Естесственно, что тот DataSource который был добавлен в дизайне так и остается не связанным.
		 | 
|  | 
|  07.03.2007, 14:20 | #12 | 
| MCTS | 
			
			Спастбо за ответы. Владимир Максимов, AndyD, я, в-общем, так и предполагал, что в данном случае (при использовании addDataSource) нельзя присоединить уже существующий в макете датасурс. Теперь подтвердилось. AndyD, не совсем понятно про JoinMode. С его помощью, насколько я понимаю, возможно поменять тип связи (с OuterJoin на InnerJoin, например). Мне необходимо изменить сами связи (т.е. связать определенный DataSource с другим, отличным от изначального). kashperuk Просто на форме есть несколько повторяющихся датасурсов (несколько гридов на разных закладках), хотелось для повышения производительности убрать некоторые и динамически менять связи между ними (форма грузится очень долго). Понятно, что форму можно разбить на несколько мелких, но хотелось опробовать другие варианты и по возможности оставить все же одну. Последний раз редактировалось cherv; 07.03.2007 в 14:25. | 
|  | 
|  07.03.2007, 15:28 | #13 | 
| Участник | Цитата: 
		
			Сообщение от cherv
			   Просто на форме есть несколько повторяющихся датасурсов (несколько гридов на разных закладках), хотелось для повышения производительности убрать некоторые и динамически менять связи между ними (форма грузится очень долго). Понятно, что форму можно разбить на несколько мелких, но хотелось опробовать другие варианты и по возможности оставить все же одну. Для этого, если эти дополнительные DataSource - "цепочки" связанных таблиц в событии DataSource.init() главной таблицы цепочки напиши PHP код: 
			PHP код: 
			В результате, по тем DataSource которые не нужны в данный момент не будет выполняться никаких запросов к серверу. Как следствие - уменьшается время открытия формы | 
|  | |
| За это сообщение автора поблагодарили: kashperuk (2), cherv (1). | |
|  07.03.2007, 16:45 | #14 | 
| MCTS | 
			
			Владимир Максимов Огромнейшее спасибо! Управление свойством AutoSearch решило часть проблем, над которыми бились уже много дней! | 
|  |