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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.11.2008, 13:53   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Как определить факт изменения текущей строки DataSource формы
Перед выполнением некоторых операций необходимо сохранить внесенные изменения в текущей записи Grid. Но не хотелось бы сохранять то, что не изменялось. Можно ли как-то определить факт внесения изменений (не сохраненных) в текущей строке DataSource формы?

Axapta 2.5 SP3
Старый 20.11.2008, 14:07   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Ну во-первых - вызов метода update на таблице не приведет к вызову оператора UPDATE в БД, если запись не менялась.
А во-вторых - есть исходный курсор (cursor.orig()), сравнив с которым - можно понять - менялось что-то или нет. Т.о. bufcmp(cursor, cursor.orig()) вернет ложь, если хоть что-то было изменено.
Проверьте, плз - есть ли метод orig() на курсоре в 2.5. В 3.0 был
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: Владимир Максимов (3).
Старый 20.11.2008, 14:19   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Хм, а разве вызов Write() на датасорсе не сохраняет только изменения?
__________________
Axapta v.3.0 sp5 kr2
Старый 20.11.2008, 14:20   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Update не хотелось использовать по той причине, что он вызовет неизбежную проверку кучи Validate...(). Если запись изменялась, то все правильно. Но если запись никто не трогал, то зачем лишние действия?

Метод orig() есть. bufcmp() - не заметил. Спасибо.
Старый 20.11.2008, 14:25   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
При безусловном использовании Cursor_ds.write() также безусловно будут выполнены многочисленные validate...(), чего хотелось бы избежать для записей, которые не изменялись.
Старый 20.11.2008, 16:18   #6  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
А bufCmp() очень скромный:
X++:
static boolean bufCmp(Common b1,Common b2)
{
    ;
    return b1.equal(b2);
}
На 2.5 сработает?
__________________
Андрей.
Старый 20.11.2008, 16:24   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
В 2.5 это выглядит несколько по другому

X++:
static boolean bufCmp(Common b1,Common b2)
{
    return [b1] == [b2];
}
Однако работает...
Теги
изменения

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление DataSource из формы Печать\Новый отчет. Poleax DAX: Программирование 19 13.04.2011 09:28
Как определить, что метода DataSource одной формы была вызвана??? Dima_Dima DAX: Программирование 7 30.10.2008 18:17
Как программно добавить DataSource в процессе работы формы Владимир Максимов DAX: Программирование 1 29.11.2006 18:28
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Как получить доступ к текущей строке в DataSource формы Maxim Gorbunov DAX: База знаний и проекты 0 28.11.2001 13:46

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

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

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