LEADERSOFT.ru
Разработка на заказ программ и сайтов
Разработка
Заказ программы
Прайс-лист
Техническое задание
Проектная документация
Наши клиенты
Реклама и продвижение
Магазин
Перейти в магазин
Новинки магазина
Бизнес программы
Финансовый учет
Документооборот
Исходные коды
Интернет решения
Обучение
Перейти в раздел
Форумы по разработке
Примеры на Access
Рассылка статей
Магазин IT литературы
Блог
Все статьи
Microsoft Access (VBA)
Microsoft Access (Проекты)
Microsoft ASP.NET
Сервисы Google
Технические задания
Новости IT технологий
Сервисы
Форумы разработчика
Контакты
О компании
Регистрация на сайте
Подписка на новости по Email
Сообщество Google+
Подписка subscribe.ru
Новости в формате Атом
Загрузить
Загрузить каталог программ
Форумы по информационным технологиям
Начало
Forums
Регистрация
|
Вход
Forums
Обновлено ::
06 февраля 2005
Форумы
Поиск
Список форумов
Программирование
Microsoft Access. Файлы mdb и accdb
Тема: Отмена из...
Тема: Отмена изменений в форме
15.06.2007 21:09:41
All
4316 сообщения
Тема: Отмена изменений в форме
В Access создал документ который состоит из главной и подчиненной формы. Источником данных подчиненной формы является запрос, а главной таблица.
Задача состоит в следующем:Как корректно организовать отмену изменений в документе.
Пытался решать задачу следующим образом.
1) использовал транзакции для представления данны в подчиненной форме(процедура SubFrmData() вызывается при возникновении события Current в главной форме)
Private Sub SubFrmData()
Dim DB As DAO.Database
Dim QDF As DAO.QueryDef
Dim RSTbl As DAO.Recordset
Dim PRM As DAO.Parameter
On Error Resume Next
If TRNS Then
WKS.CommitTrans
End If
Set WKS = DBEngine.CreateWorkspace("WKS", "Admin", "")
Set DB = WKS.OpenDatabase(CurrentDb.Name)
Set QDF = DB.QueryDefs(mstrQuery)
For Each PRM In QDF.Parameters
PRM.Value = Eval(PRM.Name)
Next PRM
With SubFrm
.Painting = False
Set RSTbl = QDF.OpenRecordset
RSTbl.LockEdits = False
Set .Form.Recordset = RSTbl
.Painting = True
End With
WKS.BeginTrans
TRNS = True
End Sub
2)Отмену произведенных изменений произвожу следующим образом
Private Sub Form_Unload(Cancel As Integer)
Me.Undo
If TRNS Then
WKS.Rollback
End If
Set WKS = Nothing
End Sub
Опишу проблему с помощью примера. Пользователь вносит изменения в шапку документа, а затем приступает к редактированию табличной части. Закончив работу он не желает сохранять внесенные изменения. Закрывает документ.
В подчиненной форме откат транзакции происходит корректно, а в главной форме отмены изменений не происходит. Событие Undo не отрабатывает по причине того, что в главной форме уже произошло событие AfterUpdate (AfterUpdate происходит после перемещения фокуса в подчиненную форму). Но, если переместить фокус на главную форму и зайти в главное меню "Правка", то мы увидим активной команду "Откат записи" (сочетание клавишь CTL-Z). Команда "Откат записи" очень корректно возвращает данные в главной форме к значениям на момент её открытия.
Вопрос: Как програмно выполнить эквивалент команды главного меню "Откат записи". Если в чем-то ошибаюсь, укажите на ошибку. Зарание благодарен.
P.S.Свободных элемнтов ни в главной ни в подчиненной формах нет.
P.S. Общий раздел по формам
Автор:
Luckiy
от 0:00:00
Источник ...
15.06.2007 21:09:41
All
4316 сообщения
RE: Отмена изменений в форме
1. Вариант
Private Sub Кнопка_Click()
CommandBars("Menu Bar").FindControl(, 128, , , True).Execute
End Sub
2. Вариант.
Можно пробежаться по всем редактируемым элементам и взять предыдущее значение
Me.Поле.Value = Me.Поле1.OldValue
P.S. Общий раздел по формам
Автор:
Admin
от 0:00:00
Источник ...
15.06.2007 21:09:41
All
4316 сообщения
RE: Отмена изменений в форме
Спасибо за помощь. Но пришлось придумывать решение самому.
P.S. Общий раздел по формам
Автор:
Luckiy
от 0:00:00
Источник ...
Страница 1 из 1
Программирование
Microsoft Access. Файлы mdb и accdb
Тема: Отмена из...
Одноуровневый вид
Древовидная структура
Самый старый из новых
Новейший из старых
Поиск
Список форумов
Начало
|
Forums
Copyright 2002-2016 Leadersoft.ru
::
Leadersoft
::
Соглашение о безопасности
::
Условия использования