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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.02.2005, 17:07   #1  
wb is offline
wb
Участник
 
86 / 16 (1) ++
Регистрация: 26.01.2004
Адрес: Краснодар
Цитата:
Изначально опубликовано George Nordic
На всякий случай напомню о функции RemanePrimaryKey.
можите сказать что имеется ввиду?

я сделал немного по другому:

на форме Dimensions метод источника Dimensions
PHP код:
public void write()
{
    
SysDim  oldValueSysDim Dimensions.orig().Num;
    ;
    
super();
    
InventUpdateDimension_ew::run(Dimensions.DimensionCodeoldValueSysDimDimensions.Num);

метод класса InventUpdateDimension_ew
PHP код:
// w 11.02.2005 Axapta 3.0 CIS SP1
public static void run(DimensionCode _dimCodeSysDim _oldSysDimSysDim _newSysDim)
{
    
Dictionary  dictionary = new Dictionary();
    
DictTable   dictTable;
    
DictField   dictField;
    
int         ij;

    
#define.FieldId_Dimension(132)

    
void update(TableId _tableIdFieldId _fieldId)
    {
        
Query                   q = new Query();
        
QueryBuildDataSource    qbds;
        
QueryRun                qr;
        
Common                  common;
        
FieldId                 fieldId_Dimension fieldId2ext(_fieldId_dimCode 1);

        ;
        
qbds q.addDataSource(_tableId);
        
qbds.update(true);
        
qbds.addRange(fieldId_Dimension).value(strfmt('\"%1\"'_oldSysDim));
        
qr = new QueryRun(q);
        while (
qr.next())
        {
            
common qr.getNo(1);
            
common.(fieldId_Dimension) = _newSysDim;
            
common.doUpdate();
        }
    }

    ;
    
ttsbegin;
    for (
1<= dictionary.tableCnt(); i++)
    {
        
dictTable = new DictTable(dictionary.tableCnt2Id(i));
        if (!
dictTable.isTmp() && !dictTable.isSystemTable() && !dictTable.isView() && !dictTable.isMap())
        {
            for (
1<= dictTable.fieldCnt(); j++)
            {
                
dictField = new DictField(dictTable.id(), dictTable.fieldCnt2Id(j));
                if (!
dictField.isSystem() && dictField.typeId() == #FieldId_Dimension)
                    
update(dictTable.id(), dictField.id());
            }
        }
    }
    
ttscommit;
    
info(strfmt('Проведена замена аналитики %1 на %2'_oldSysDim_newSysDim));

С уважением,
wb
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Label на поле типа SUM в секции FOOTER не показывается Delfins DAX: Программирование 0 22.05.2007 12:12
Ошибка: фантомное дублирующее поле типа "дата" в гриде belugin DAX: Программирование 8 14.06.2006 00:15
Ссылка на поле другого типа Gorlum DAX: Программирование 2 08.06.2005 17:27
Почему в InventJournalTrans поле linenum вещественного типа?! ATimTim DAX: Программирование 7 17.06.2004 17:35
Поле в Grid типа Window Андре DAX: Программирование 13 18.12.2003 18:22

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:00.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.