20.11.2008, 13:53 | #1 |
Участник
|
Как определить факт изменения текущей строки DataSource формы
Перед выполнением некоторых операций необходимо сохранить внесенные изменения в текущей записи Grid. Но не хотелось бы сохранять то, что не изменялось. Можно ли как-то определить факт внесения изменений (не сохраненных) в текущей строке DataSource формы?
Axapta 2.5 SP3 |
|
20.11.2008, 14:07 | #2 |
Administrator
|
Ну во-первых - вызов метода update на таблице не приведет к вызову оператора UPDATE в БД, если запись не менялась.
А во-вторых - есть исходный курсор (cursor.orig()), сравнив с которым - можно понять - менялось что-то или нет. Т.о. bufcmp(cursor, cursor.orig()) вернет ложь, если хоть что-то было изменено. Проверьте, плз - есть ли метод orig() на курсоре в 2.5. В 3.0 был
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: Владимир Максимов (3). |
20.11.2008, 14:19 | #3 |
Участник
|
Хм, а разве вызов Write() на датасорсе не сохраняет только изменения?
__________________
Axapta v.3.0 sp5 kr2 |
|
20.11.2008, 14:20 | #4 |
Участник
|
Update не хотелось использовать по той причине, что он вызовет неизбежную проверку кучи Validate...(). Если запись изменялась, то все правильно. Но если запись никто не трогал, то зачем лишние действия?
Метод orig() есть. bufcmp() - не заметил. Спасибо. |
|
20.11.2008, 14:25 | #5 |
Участник
|
При безусловном использовании Cursor_ds.write() также безусловно будут выполнены многочисленные validate...(), чего хотелось бы избежать для записей, которые не изменялись.
|
|
20.11.2008, 16:18 | #6 |
Moderator
|
А bufCmp() очень скромный:
X++: static boolean bufCmp(Common b1,Common b2) { ; return b1.equal(b2); }
__________________
Андрей. |
|
20.11.2008, 16:24 | #7 |
Участник
|
В 2.5 это выглядит несколько по другому
X++: static boolean bufCmp(Common b1,Common b2) { return [b1] == [b2]; } |
|
Теги |
изменения |
|
|