AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.10.2005, 23:47   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Изменение свойств DataSource в RunTime
Привет всем.

Задача:
Есть форма. Два датасорса. Допустим, CustTable и CustTrans. У CustTrans сответственно указаны след. свойства: JoinSource - CustTable, linkType - InnerJoin
На форме кнопка. По этой кнопке хочу менять свойства - у CustTrans убирать joinSource, а у CustTable ставить его = CustTrans c linkType = OuterJoin , к примеру.

Как то это можно сделать??
Пробовал менять через Form.save() и через TreeNode (тоже - AOTSave())
Но в обоих случаях пишет, что нельзя сохранить форму, которая исполняется.

Какие-то идеи??
И еще, как BaseEnum называется для элементов linkType?

Спасибо всем заранее
Старый 12.10.2005, 01:31   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Взгляните, на всякий случай, на форму SalesLineBackOrder.
__________________
С уважением,
glibs®
Старый 12.10.2005, 08:19   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Re: Изменение свойств DataSource в RunTime
Цитата:
Изначально опубликовано kashperuk
Пробовал менять через Form.save() и через TreeNode (тоже - AOTSave())
Но в обоих случаях пишет, что нельзя сохранить форму, которая исполняется.
А вам надо менять дизайн формы или только запрос при выполнении?
Цитата:

И еще, как BaseEnum называется для элементов linkType?
Как ни странно - FormLinkType
__________________
Axapta v.3.0 sp5 kr2
Старый 12.10.2005, 11:14   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
2glibs:
Спасибо, посмотрю.
2AndyD:
Нужно менять только запрос
Цитата:
FormLinkType
Спасибо. Как же сам не догадался.
Старый 12.10.2005, 11:31   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да, прятать и показывать два таба, и дублировать датасорсы думал, просто как-то не очень это красиво. Может все таки можно изменять динамически?
Старый 12.10.2005, 12:54   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Можно попробовать так
Вложения
Тип файла: xpo form6.xpo (22.8 Кб, 719 просмотров)
__________________
Axapta v.3.0 sp5 kr2
Старый 12.10.2005, 13:10   #7  
kvan is offline
kvan
Moderator
Аватар для kvan
Дети Юза
 
775 / 49 (3) +
Регистрация: 07.08.2002
Адрес: Donetsk
а clearLinks а потом заново joinMode(...) ?
Старый 12.10.2005, 13:22   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
а clearLinks а потом заново joinMode(...) ?
Получится CustTable left outer join CustTrans on
__________________
Axapta v.3.0 sp5 kr2
Старый 12.10.2005, 16:10   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
2AndyD:
Попробую так.
Только мне нужно во втором тоже inner Join . Но вроде решается, если помимо этого указать fetchMode(QueryFetchMode::One2One);

Спасибо
Старый 12.10.2005, 16:43   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Изначально опубликовано kashperuk
Только мне нужно во втором тоже inner Join .
Совершенно запутался. Что имеется в виду?
__________________
Axapta v.3.0 sp5 kr2
Старый 12.10.2005, 16:53   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну, суть задачи с следующем. Может заодно подскажете путь решения получше.

Пытаюсь поменять порядок группировки. То есть допустим была по CustTable.CustGroup, а потом по CustTrans.TransDate
А я хочу наоборот.
сначала по TransDate, a потом по CustGroup

Группировку одну для двух таблиц нельзя написать как на SQL - но посылает он, объеденив group by уже.
А я вот пытаюсь порядок таблиц поменять, но так, чтобы запрос остался таким же. только группировка чтобы была в другом порядке.

Может чего и не так делаю.
Поправьте
Старый 12.10.2005, 18:14   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
По-моему я совсем потерялся. На всякий случай приведу код, может поможет
PHP код:
public void executeQuery()
{
    
Query                   q = new Query();
    
QueryBuildDataSource    qbCustTableqbCustTrans;

    if (
SwitchButton.selection() == 0)
    {
        
qbCustTable q.addDataSource(tablenum(CustTable));
        
qbCustTable.addSortField(fieldnum(CustTableCustGroup));
        
qbCustTable.orderMode(OrderMode::GroupBy);
        
qbCustTable.addSelectionField(fieldnum(CustTableRecId), SelectionField::Max);
        
qbCustTable.addSelectionField(fieldnum(CustTableCustGroup));

        
qbCustTrans qbCustTable.addDataSource(tablenum(CustTrans));
        
qbCustTrans.clearLinks();
        
qbCustTrans.joinMode(JoinMode::InnerJoin);
        
qbCustTrans.addLink(fieldnum(CustTableaccountNum), fieldnum(CustTransaccountNum));
        
qbCustTrans.addSortField(fieldnum(CustTransTransDate));
        
qbCustTrans.orderMode(OrderMode::GroupBy);
        
qbCustTrans.addSelectionField(fieldnum(CustTransAmountCur), SelectionField::Sum);
        
qbCustTrans.addSelectionField(fieldnum(CustTransTransDate));

    }
    else
    {                         
        
qbCustTrans q.addDataSource(tablenum(CustTrans));
        
qbCustTrans.addSortField(fieldnum(CustTransTransDate));
        
qbCustTrans.orderMode(OrderMode::GroupBy);
        
qbCustTrans.addSelectionField(fieldnum(CustTransAmountCur), SelectionField::Sum);
        
qbCustTrans.addSelectionField(fieldnum(CustTransTransDate));

        
qbCustTable qbCustTrans.addDataSource(tablenum(CustTable));
        
qbCustTable.clearLinks();
        
qbCustTable.joinMode(JoinMode::InnerJoin);
        
qbCustTable.addLink(fieldnum(CustTableaccountNum), fieldnum(CustTransaccountNum));
        
qbCustTable.addSortField(fieldnum(CustTableCustGroup));
        
qbCustTable.orderMode(OrderMode::GroupBy);
        
qbCustTable.addSelectionField(fieldnum(CustTableRecId), SelectionField::Max);
        
qbCustTable.addSelectionField(fieldnum(CustTableCustGroup));
    }
    
CustTable_ds.Query(q);
    
super();

__________________
Axapta v.3.0 sp5 kr2
Старый 12.10.2005, 18:28   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нет. Все правильно понимаете. Я же написал выше, что подходит мне такой вариант решения проблемы
Спасибо еще раз.
Просто еще не пробовал на своей задаче, а только на тестовом примере с Form6 - там вроде все красиво
Старый 13.10.2005, 11:23   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
В продолжение рассмотренного примера.

А возможно ли сделать следующий порядок группировки?

group by B.TransDate, A.CustGroup, B.Invoice
Старый 13.10.2005, 11:31   #15  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Т.е. чтобы в первом случае было группировка только по CustGroup и TransDate?
__________________
Axapta v.3.0 sp5 kr2
Старый 13.10.2005, 11:36   #16  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нет, именно, чтобы на сервер пошел такой порядок группировки.

Там же он выстраиватся в зависимости от порядка таблиц.
то есть, мы родителем поставим CustTrans, там поставим группировку по TransDate, потом заjoinим CustTable, в котором group by CustGroup. А потом получается нужно опять добавлять CustTrans с группировкой по Invoice.

Ну, я в принципе сам вот только что ответил.
Просто это нужно динамически добавлять датасорсы к последнему из добавленных. Очень криво.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление таблицы в DataSource при ее изменении Андре DAX: База знаний и проекты 7 22.04.2008 13:16
Заполнение DataSource из постоянной и временной таблиц m_ax DAX: Программирование 2 21.06.2007 13:08
Изменение значений в DataSource... raniel DAX: Программирование 5 01.02.2007 17:15
Изменение свойств ProgrammableSection Алексей Контев DAX: Программирование 2 13.05.2002 22:39
Изменение свойств Grid с помощью метода источника данных displayOption Anton Sk. DAX: База знаний и проекты 0 03.12.2001 18:08

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:19.