сохранить запись на форме кодом. как лучше
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
и плявать на то, что там кто скажет - меня ни разу не подводило. :)
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, видимо, придется засесть...
ЗЫ
что-то мне каждая лишняя строчка в последнее время в большой лом...