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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.04.2011, 22:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,644 / 848 (80) +++++++
Регистрация: 28.10.2006
Dynamics AXBR: O propósito do campo RecVersion
Источник: http://feedproxy.google.com/~r/daxbr/~3/us87MXZfY78/
==============

Greetings,
Gostaria de discutir um pouco aqui a funcionalidade do campo RecVersion. Desde que comecei no mundo AX vejo este campo em todas as tabelas, mas nunca me dei conta do seu proposito.

O conceito é um tanto simples:
Como é de conhecimento de todos, toda tabela criada no AX “ganha” automaticamente o campo “RecVersion”. Este campo é preenchido com o valor “1″ no novo registro criado, e é atualizado para um número aleatório toda vez que fazemos uma seleção do registro para atualização usando a palavra-chave “forUpdate”. Quando o registro é atualizado(usando os métodos update() ou doUpdate()), o kernel irá verificar se o recVersion original daquele registro é o mesmo que consta no banco de dados. Caso seja, significa que o registro não foi modificado por outro processo, e a atualização pode prosseguir. Caso contrário, será lançada uma exception do tipo “UpdateConflict”.

Veja o código abaixo:

static void Teste_RecVersion(Args _args){ CustTable custTable; ; ttsbegin; select forUpdate custTable where custTable.AccountNum == "00001"; print custTable.orig().recVersion; custTable.CreditMax = 1000; custTable.update(); ttscommit; print custTable.recVersion; pause;}

Ao executa-lo, o código irá imprimir o recVersion do registro original (recuperado pelo método orig()) e o novo recVersion criado apos a chamada da instrução “forUpdate”.

Usando um exemplo mais claro, vamos imaginar que um processo “A” esteja em execução e seleciona um registro da “CustTable” para atualizar o limite de credito de um cliente:

Registro original:

AccountNumNameCreditMaxrecVersion00001Cliente para teste5005622.

. (processo de calculo do novo limite de crédito)

.

Após update:

AccountNumNameCreditMaxrecVersion00001Cliente para teste100068413

No momento que é feito o “select forUpdate” o Ax criou um novo número de versão do registro, neste caso o número 68413. Ao chamarmos o método de atualização, será verificado se a versão original do registro continua com o número 5622. Caso não esteja, significa que o registro foi selecionado por um processo “B” enquanto o processo “A” estava ainda calculando o novo limite de crédito. Caso isso acontença, será lançado uma exceção do tipo “UpdateConflict”. Caso contrário, a atualização segue normalmente.

Espero que tenham gostado.

Abs,
Anderson Joyle






Источник: http://feedproxy.google.com/~r/daxbr/~3/us87MXZfY78/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
Developer for Microsoft Dynamics AX Certification Roadmap Blog bot DAX Blogs 1 13.05.2009 16:17
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05

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

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

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