сохранить запись на форме кодом. как лучше

Victosha
Дата: 05.09.2005 12:37:31
сохранить текущую редактируемую запись на форме кодом.

1) Me.Dirty = False
2) DoCmd.RunCommand acCmdSaveRecord
3) DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
4) VBA.SendKeys "+{ENTER}"

Как "лучше"?
если все плохо - как надо?

точнее пока не знаю как сформулировать вопрос.
есть ли предпочтения и соображения.
Victosha
Дата: 05.09.2005 12:40:34
забыл.
mdb+DAO + AccessXP
вадя
Дата: 05.09.2005 13:07:00
1)

всё остальное через команды (типа макросов)
N_A
Дата: 05.09.2005 13:15:24
в mdb
me.Refresh
и плявать на то, что там кто скажет - меня ни разу не подводило. :)
Victosha
Дата: 05.09.2005 13:27:44
всем - очень желательно видеть указание причин предпочтений.

почему любимый способ "лучше" всех прочих.

me.Refresh - я и не вспомнил про такое
:)
Victosha
Дата: 05.09.2005 13:37:11
может ли и чем, для данного случая ,
Me.refresh отличаться от Me.Dirty=False ?
вадя
Дата: 05.09.2005 13:47:06
Me.refresh отличаться от Me.Dirty=False ?


первое вызывает обновление всех данных со всеми вытекающими...
а второе только сохраняет измененную запись

если не важно поведение формы то они равносильны.
но во многих случаях второй вариант предпочтительней.(меньше мельканий формы)
N_A
Дата: 05.09.2005 13:49:25
1) Me.Dirty = False
- свойство, а не метод, как-то не привычно производить действия через присвоение
2) DoCmd.RunCommand acCmdSaveRecord
- нет уверенности что сохранит запись в нужной форме (вроде, работает с активным объектом)
3) DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
- считаю данную команду устаревшей и не надежной т.к. зависит от какких-то меню где юзеры лазят
4) VBA.SendKeys "+{ENTER}"
- ну это вообще несерьезно, т.к. точно "в никуда" посылается

me.Refresh не подводил ни разу.
как, впрочем, врать не буду,и вышеперечисленное, но написал, как думаю. ;)
АлексейК
Дата: 05.09.2005 13:54:48
мое мнение
Хорошие:
1) Me.Dirty = False
2) DoCmd.RunCommand acCmdSaveRecord

Плохие способы
3) DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
4) VBA.SendKeys "+{ENTER}"
5 рефреш, реквери

почему
3 плох:меню могут отсутствовать быть скрыты или недоступны
4: посылка клавиатурных комбинаций считается способом "накрайняк" когда все возможности исчерпаны ибо не всегда гарантия что комбинацию получит именно тот элемент управления для которого он предназначен
5 рефреш и реквери обновляют набор данных (как побочный эффект сохраняя) т.е. если задача не обновлять набор а именно сохранять то это не решение

второй способ юзает DOCMD использование которого (вроде) вызывает соответствующий макрос. макросы выполняются медленнее кода VBA.

как работает дирти = фалсе никто не знает, возможно без макросов, но вполне надежно.
Victosha
Дата: 05.09.2005 14:20:19
автор
т.е. если задача не обновлять набор а именно сохранять то это не решение


почему, как раз очень меня пока refresh заинтриговал.
щаз смотрением займусь.
если не понравится - буду грустить, наверно.
а потом за адо - рекордсеты на формах в mdb, видимо, придется засесть...

ЗЫ
что-то мне каждая лишняя строчка в последнее время в большой лом...