Показать сообщение отдельно
Старый 30.12.2010, 11:57   #10  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от AngelDominantes Посмотреть сообщение
X++:
void run()
{
MyTable myTableUpdate;
;

ttsbegin;

select forupdate myTableUpdate
where myTableUpdate.Code == myTable.Code;

myTableUpdate.Description = 'la la la';
if (myTableUpdate.validateWrite())
   myTableUpdate.Update();

ttscommit;
}
Не совсем понял смысл, то есть мы создаем 2 переменные: myTableUpdate, myTable одной и той же таблицы и приравниваем поля "Code"?
нет, первая переменная (myTable) для того что бы зафиксировать курсор, который пришел с формы. вторая переменная для апдейта. в методе run() мы выполняем ещё раз поиск нужной нам записи из БД (считаю это просто необходимым, потому как эту запись банально могли удалить. + таблица заблокируется непосредственно перед самим адейтом, не на долго )
да, нужно ещё там проверку добавить на то что запись найдена. Т.е. в итоге метод run() должен выглядеть так:
X++:
void run()
{
MyTable myTableUpdate;
;

ttsbegin;

select forupdate myTableUpdate
where myTableUpdate.Code == myTable.Code;

if (myTableUpdate.RecId != 0)
{
myTableUpdate.Description = 'la la la';
if (myTableUpdate.validateWrite())
   myTableUpdate.Update();
}
ttscommit;
}
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем

Последний раз редактировалось lev; 30.12.2010 в 12:03. Причина: исправил по замечанию wamr