AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 19.08.2003, 18:24   #1  
Anders
Гость
 
n/a
Ка программно изменить свойство JoinSource у DataSource формы
Пишу:
My_ds.JoinSource(Parent_ds);

Проглатывает, но без нужного результата.
Если же ручками JoinSource изменяю, то все хорошо :-(
Alt 19.08.2003, 19:49   #2  
Андре ist offline
Андре
Moderator
Сотрудники компании GMCS
 
2.375 / 464 (20) +++++++
Registriert seit: 03.12.2001
Может попробовать решить задачу с помощью методов addLink, addDynalink ? Хотя я не знаю Вашей задачи и могу ошибаться.
Alt 19.08.2003, 20:38   #3  
Wamr ist offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1.737 / 868 (32) +++++++
Registriert seit: 15.01.2002
Ort: Москва
Blog-Einträge: 7
JoinSource
Изменение joinSource и joinType из кода не дают никакого результата.
Следует изменять query в самом DS
Alt 20.08.2003, 11:25   #4  
Anders
Гость
 
n/a
Задача для знающего может и простая, а для начинающего..... :-(

Есть DataSource 1. К нему через JoinSource привязан DataSource 2, к которому так же
через JoinSource привязан DataSource 3.

Мне необходимо DataSource 4 по нажатию на чек-бокс прикручивать и откручивать
к DataSource 2, у которого (вернее у таблицы) есть relation c DataSource 4 (таблицы)
по двум полям.
Alt 20.08.2003, 13:44   #5  
Anders
Гость
 
n/a
Неужели никто не скажет.....

Как программно к одному источнику данных прикрутить два зависимых источника
данных?

Пробовал даже так:

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 благополучно отваливается :-(

И обидно, что не программно, а ручками через датасорсе на форме все проходит.....
Alt 20.08.2003, 15:09   #6  
Berty Wooster ist offline
Berty Wooster
Участник
Benutzerbild von Berty Wooster
 
82 / 16 (1) ++
Registriert seit: 15.12.2002
Просто добавь fetchMode
PHP-Code:
QueryBuildDataSource qbds
QueryBuildDataSource qbdsIS;
QueryBuildDataSource qbdsIR;

qry = new Query();
qbds qry.addDataSource(TableNum(T1),"T1");
qbdsIS qbds.addDataSource(TableNum(T2),"T2");
qbdsIS.relations(true);
qbdsIS.fetchMode(0); 

qbdsIR qbds.addDataSource(TableNum(T3),"T3");
qbdsIR.relations(true);
qbdsIR.fetchMode(0); 
Все должно заработать
This post has been rated by: Oz (1).
Alt 20.08.2003, 15:24   #7  
Anders
Гость
 
n/a
:)
Большое человеческое СПАСИБО, действительно заработало.
Alt 07.03.2007, 11:11   #8  
cherv ist offline
cherv
MCTS
MCBMSS
1C
 
88 / 25 (1) +++
Registriert seit: 24.05.2006
Добрый время суток!
Извиняюсь, но возможно не понимаю одной простой вещи. Как при программном связывании нескольких датасурсов указать, что данные датасурсы - это датасурсы из макета?
Пример. На форме есть 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);
}
На форме есть Grid, где выводятся поля из обоих датасурсов, но данные в них выводятся без связывания (параллельно). Подскажите, пожалуйста, что не так делаю. Спасибо заранее!
Alt 07.03.2007, 11:19   #9  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
1. А зачем вы их программно связываете? все эти свойства можно задать и в дизайне.
2. может просто свойство DataSource на гридах неверно установлено?
Alt 07.03.2007, 11:32   #10  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Датасоурс, созданный в коде не имеет отношения к датасорсу в дизайне.
Если хотите их связывать программно, то указывайте свойство joinMode для датасорса из дизайна. Т.е. DataSource2_ds.JoinMode() и т.д.
__________________
Axapta v.3.0 sp5 kr2
Alt 07.03.2007, 11:37   #11  
Владимир Максимов ist offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1.720 / 1207 (44) ++++++++
Registriert seit: 13.01.2004
Blog-Einträge: 3
Так Вы же не связываете два существующих DataSource, а добавляете новый (третий) DataSource. Естесственно, что тот DataSource который был добавлен в дизайне так и остается не связанным.
Alt 07.03.2007, 14:20   #12  
cherv ist offline
cherv
MCTS
MCBMSS
1C
 
88 / 25 (1) +++
Registriert seit: 24.05.2006
Спастбо за ответы.

Владимир Максимов, AndyD, я, в-общем, так и предполагал, что в данном случае (при использовании addDataSource) нельзя присоединить уже существующий в макете датасурс. Теперь подтвердилось.

AndyD, не совсем понятно про JoinMode. С его помощью, насколько я понимаю, возможно поменять тип связи (с OuterJoin на InnerJoin, например). Мне необходимо изменить сами связи (т.е. связать определенный DataSource с другим, отличным от изначального).

kashperuk
Просто на форме есть несколько повторяющихся датасурсов (несколько гридов на разных закладках), хотелось для повышения производительности убрать некоторые и динамически менять связи между ними (форма грузится очень долго). Понятно, что форму можно разбить на несколько мелких, но хотелось опробовать другие варианты и по возможности оставить все же одну.

Geändert von cherv (07.03.2007 um 14:25 Uhr)
Alt 07.03.2007, 15:28   #13  
Владимир Максимов ist offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1.720 / 1207 (44) ++++++++
Registriert seit: 13.01.2004
Blog-Einträge: 3
Zitat:
Zitat von cherv Beitrag anzeigen
Просто на форме есть несколько повторяющихся датасурсов (несколько гридов на разных закладках), хотелось для повышения производительности убрать некоторые и динамически менять связи между ними (форма грузится очень долго). Понятно, что форму можно разбить на несколько мелких, но хотелось опробовать другие варианты и по возможности оставить все же одну.
Блокируй заполнение тех DataSource которые не используются при загрузке формы.

Для этого, если эти дополнительные DataSource - "цепочки" связанных таблиц в событии DataSource.init() главной таблицы цепочки напиши

PHP-Code:
// DataSource.init() главной таблицы

if (данный DataSource НЕ используется)
 
this.autoSearch(false);

super() 
Кроме того, заблокируй выполнение событий ExecuteQuery() для не используемых DataSource

PHP-Code:
// DataSource.executeQuery()

if (данный DataSource используется)
 
super() 
Т.е. super() выполняется только если данный DataSource нужен для работы

В результате, по тем DataSource которые не нужны в данный момент не будет выполняться никаких запросов к серверу. Как следствие - уменьшается время открытия формы
This post has been rated by: kashperuk (2), cherv (1).
Alt 07.03.2007, 16:45   #14  
cherv ist offline
cherv
MCTS
MCBMSS
1C
 
88 / 25 (1) +++
Registriert seit: 24.05.2006
Владимир Максимов
Огромнейшее спасибо! Управление свойством AutoSearch решило часть проблем, над которыми бились уже много дней!
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Программное добавление range в DataSource формы Lucky13 DAX: Программирование 2 09.02.2007 12:01
Как программно добавить DataSource в процессе работы формы Владимир Максимов DAX: Программирование 1 29.11.2006 18:28
Как программно изменить к-во в строке заказа в форме SalesTable BorDark DAX: Программирование 2 13.01.2005 17:02
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Как получить доступ к текущей строке в DataSource формы Maxim Gorbunov DAX: База знаний и проекты 0 28.11.2001 13:46

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 04:10 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.