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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.01.2008, 20:10   #1  
Blog bot is offline
Blog bot
Участник
 
25,538 / 847 (80) +++++++
Регистрация: 28.10.2006
aEremenko: DAX 2008, что нового во взаимодействии с БД?
Источник: http://blogs.msdn.com/aeremenk/archi...5/7118429.aspx
==============

Вообще-то, изменения между версиями можно характеризовать так:
  • 3.0 -> 4.0 Платформенные (технологические) изменения, развитие функциональности
  • 4.0 -> 5.0 Функциональные изменения, развитие платформенных решений
В данной статье посмотрим некоторые отличия во взаимодействии с базами данных.

Появилась поддержка сложных структур запросов, т.е. возможность создавать объединения не только типа родитель - наследник, но и более сложные, правда такие объединения можно делать только в структурах запросов.
Реализована поддержка union, правда не в коде X++, а только для структур запросов, например:
X++:
  query = new Query();
   query.queryType(QueryType::Union); // другим значением QueryType является "Join"
Появилась поддержка Inner join и outer join в UPDATE_RECORDSET, а также возможность возврата количества обработанных записей для UPDATE_RECORDSET и DELETE_FROM, например:
X++:
update_recordset batchJob setting
      Status = BatchStatus::Canceled,
      EndDateTime = thisDate,
      Finishing = 1
  where batchJob.Status == BatchStatus::Cancelling
  notexists join batch
  where (
          (batch.Status == BatchStatus::Ready
              || batch.Status == BatchStatus::Executing
              || batch.Status == BatchStatus::Hold
              || batch.Status == BatchStatus::Cancelling)
          && batch.BatchJobId == batchJob.RecId
          );  
  rowsUpdated = (batchJob.RowCount() > 0); // использование rowCount()
Реализована обработка исключений при дублировании уникального ключа, например:
X++:
   Table t;  
   try 
   {
       while select forupdate t
       {
           test.Field1 = ;
           t.update(); 
       }
   }  
   catch ( Exception::DuplicateKeyException, t ) 
   {
       infolog(   + t.Field1 );
   }
С точки зрения обмена данными между клиентом, сервером приложений и базы данных изменения коснулись также RunBase (уменьшение трафика при инициализации и упаковке), NumberSequences и дисплей-методов. Улучшение работы с дисплей-методами подразумевает их расчет в пакетном режиме на сервере и сохранении результата на клиенте, это выгодно отличается от текущей реализации с последовательным расчетом и передачей с сервера на клиента каждого метода.

Данная статья подготовлена с помощью Windows Live Writer.


Источник: http://blogs.msdn.com/aeremenk/archi...5/7118429.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 16.01.2008, 07:01   #2  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Появилась поддержка сложных структур запросов, т.е. возможность создавать объединения не только типа родитель - наследник, но и более сложные, правда такие объединения можно делать только в структурах запросов.
Т.е. на формах не получится? а если я query подпихну форме?

Цитата:
Реализована поддержка union, правда не в коде X++, а только для структур запросов
Главное А сказали, а что мешало сказать Б ..

Цитата:
Реализована обработка исключений при дублировании уникального ключа,
Еще бы стандартное сообщение сделали более информативным, глядишь не пришлось бы перехватывать..

Цитата:
Улучшение работы с дисплей-методами подразумевает их расчет в пакетном режиме на сервере
Думаю тут имелось в виду, что они расчитываются пачкой, а не то, что для расчета нужна пакетная обработка
Старый 16.01.2008, 07:15   #3  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Кстати, вот вопрос, почему бы темповые таблицы не сделать реально темповыми прямо на скуле? Шут с ним, что они не смогут храниться на клиенте, есть кэширование и вообще это не так критично.
Старый 16.01.2008, 10:21   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
>>>Т.е. на формах не получится? а если я query подпихну форме?

На формах и во вью вроде обещали сделать. Имеется ввиду, что в коде X++ нельзя
Старый 16.01.2008, 11:02   #5  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Надеюсь вьюхи хоть в виртуальных компаниях заработают, а то толку от них..
Старый 16.01.2008, 12:19   #6  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Angry Так все-таки не DAX 2008, а DAX 2009?..
такое ощущение, что выпуск RTM-версии DAX 5.0 был отложен, потому что в блоге Алексея Еременко появились интересные уточнения:
Цитата:
В наступившем году нас ждет встреча с Microsoft Dynamics 2009. Версия 5.0 будет переименована для соответствия общей политике наименования продуктов. При этом 2009 не означает перенос выпуска версии на 2009 год, просто версия системы выйдет во второй половине 2008 года.
И в остальных сообщениях было отражено это переименование - причем произошло оно, судя по тому, что blog bot его не подхватил, буквально сегодня утром:
Цитата:
DAX 2009, что нового во взаимодействии с БД?
Вообще-то, изменения между версиями можно характеризовать так:
  • 3.0 -> 4.0 Платформенные (технологические) изменения, развитие функциональности
  • 4.0 -> 5.0 (2009) Функциональные изменения, развитие платформенных решений
Старый 16.01.2008, 12:55   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Кто бы сомневался. Да, собственно говоря, не особенно-то и жалко. Если судить по проспектам и презентациям, ничего там такого выдающегося не будет, чтобы хотелось "прямо здесь и сейчас". 4.0 предоставила нам Unicode и общий код для Европы - больше ничего и не надо.

Последний раз редактировалось EVGL; 16.01.2008 в 12:58.
Старый 16.01.2008, 13:14   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нет. Сроки остались такими, как и прежде.
RTM версия выйдет по плану. Просто public release запланирован на вторую половину года, а соответственно немного по-другому называется. Маркетинг
Старый 16.01.2008, 15:00   #9  
Blog bot is offline
Blog bot
Участник
 
25,538 / 847 (80) +++++++
Регистрация: 28.10.2006
Kashperuk Ivan: Microsoft Dynamics AX 2009 - some of the new development features
Источник: http://kashperuk.blogspot.com/2008/0...me-of-new.html
==============

Alexei Eremenko from Microsoft Russia has posted a number of articles about the new features that will be available in DAX 2009.
The original link, which is in Russian (but the main thing to look at is the code, which is universal): http://blogs.msdn.com/aeremenk/archi...5/7118429.aspx

I would like to make a brief review of the features he talked about for the English-speaking population and another feature I liked that Alexei did not mention.

Let's start with the support for union in SQL statements (but only when using Query* classes).
X++:
    query = new Query();  
    query.queryType(QueryType::Union); // The other value of QueryType is "Join"

Another Exception type has been introduced, which now actually allows to catch the DuplicateKey exception:

X++:
   Table t;

    try   
   {      
        while select forupdate t
       {
            test.Field1 = ;
            t.update();
        }
   }
   catch ( Exception::DuplicateKeyException, t )
   {
       infolog(Record already exists -  + t.Field1 );  
   }

The bulk DML statements now allow using inner/outer joins, and you can access the result of the update_recordset operation to get the number of rows that were updated:

X++:
update_recordset batchJob setting
      Status = BatchStatus::Canceled,
      EndDateTime = thisDate,
      Finishing = 1
  where batchJob.Status == BatchStatus::Cancelling
  notexists join batch
  where (
          (batch.Status == BatchStatus::Ready ||
               batch.Status == BatchStatus::Executing ||
               batch.Status == BatchStatus::Hold ||
               batch.Status == BatchStatus::Cancelling)
          && batch.BatchJobId == batchJob.RecId
          );

  rowsUpdated = (batchJob.RowCount() > 0); // get the number of updated rows with rowCount()
And, the feature I enjoyed, is that we now have crossCompany support in X++. Meaning you can access data from tables from a number of companies in one query.
Here are code snippets to explain what I mean:

X++:
static void DataBaseAccess_CrossCompany(Args _args)
{   
    InventTable inventTable;   
    container   companyContainer = ['IN1', 'QMS'];   
    ;   
    while select crossCompany : companyContainer inventTable       
        where inventTable.ItemId == "B-R14"   
    {       
        print inventTable.ItemId, " -- ", inventTable.dataAreaId;   
    }   
    pause;
}
This code will print ItemId from 2 companies, even though InventTable has the property SaveDataPerCompany set to Yes.

The same functionality is available with the Query classes:

X++:
static void DataBaseAccess_CrossCompany_Query(Args _args)
{   
    Query                   query = new Query();   
    QueryBuildDataSource    qbds  = query.addDataSource(tableNum(InventTable));
    QueryRun                queryRun;
    InventTable             inventTable;
    ;
    qbds.addRange(fieldNum(InventTable, ItemId)).value(queryValue("B-R14"));

    query.allowCrossCompany(true);
    query.addCompanyRange("IN1");
    query.addCompanyRange("QMS");

    queryRun = new QueryRun(query);
    while (queryRun.next())
    {
        inventTable = queryRun.get(tableNum(InventTable));
        print inventTable.ItemId, " -- ", inventTable.dataAreaId;
    }
    pause;
}

If you don't add any specific company ranges, the data will be retrieved from all companies you have access to.

Microsoft Dynamics AX 2009 has a lot more to offer, of course. But enough for today.

Источник: http://kashperuk.blogspot.com/2008/0...me-of-new.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Теги
ax2009, что нового

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: Why upgrade to SQL Server 2008 with DAX 2009? Blog bot DAX Blogs 0 16.10.2008 06:24
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
aEremenko: Тестирование производительности в DAX 4.0 Blog bot DAX Blogs 0 12.03.2008 16:05
aEremenko: Что нового в Microsoft Dynamics AX 2008? Blog bot DAX Blogs 6 15.01.2008 11:36
aEremenko: Поддержка Microsoft SQL Server 2008 Blog bot DAX Blogs 0 04.10.2007 23:21

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

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

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