AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 11.10.2005, 23:47   #1  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: 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?

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

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

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

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

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

Может чего и не так делаю.
Поправьте
Old 12.10.2005, 18:14   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2499 (89) +++++++++
Join Date: 20.08.2005
По-моему я совсем потерялся. На всякий случай приведу код, может поможет
PHP Code:
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
Old 12.10.2005, 18:28   #13  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Нет. Все правильно понимаете. Я же написал выше, что подходит мне такой вариант решения проблемы
Спасибо еще раз.
Просто еще не пробовал на своей задаче, а только на тестовом примере с Form6 - там вроде все красиво
Old 13.10.2005, 11:23   #14  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
В продолжение рассмотренного примера.

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

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

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

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

Similar Threads
Thread Thread Starter Forum Replies Last Post
Обновление таблицы в 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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 22:38.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.