|
|
|
| Привет.
Подскажите возможно ли сделать так что б при извинении каких либо данных в ленточной форме, в одну из таблиц записывались логи, мол такой-то компьютер изменил такой-то параметр в таком-то часу.
Что б в результате можно было понять, кто и чего менял в этой ленточной форме. | |
|
| |
|
|
|
| Вы только из ленточной формы ждете подвоха?
а ежели пользователь переключит вид формы?
или прямо в таблицу залезет?
p.s. в mdb с этим лучше не заморачиваться
с сервером проще - триггеры в помощь (в меру только:) | |
|
| |
|
|
|
| Неее, в данном случае это не важно, основным пользователем буду я :), тут главное что б я потом смог найти, что я тот меня тогдато, а дальше буду в почте искать причину, вить менять я буду только по письмам, ну и другие пользователи, они не умеют ничего, такого... | |
|
| |
|
42 Кб. |
|
| В случае с mdb делал так:
изменения отслеживал в событиях: Form_AfterInsert; Form_BeforeInsert; Form_BeforeUpdate; Form_AfterUpdate
далее долго и нудно писал (до класса руки так и не дошли)
в итоге получил результат: см. аттач | |
|
| |
|
|
|
| можно када в ленточной форме мышкой щёлкнешь в этом событии и написать либо послать в функцию отсюда в ту, которая запишет всё, что там сейчас написано, но тада мышкой зря не щёлкай.
===================================================================
можно в каждом поле в событии до изменения послать в функцию логирования.....
===================================================================
можно изначально - при запуске задать форме значение только чтение - ДА
добавить на форму флажок - редактирование разрешить.
и када на флажке этом щёлкнешь форма либо переходит в режим только чтение или в режим не только чтение, в зависимости от того флажек=1 или = 0
и тада функция будет записывать данные если можно, и не будет их писать - ежели низззя. | |
|
| |
|
|
|
| На данный момент у меня в нужных мне столбцах уже вписаны такие события:
До обновления:
Private Sub GrafikCB_BeforeUpdate(Cancel As Integer)
Dim strMsg As String
strMsg = "Будем сохранять изменения?"
If MsgBox(strMsg, vbQuestion + vbYesNo) = vbNo Then 'отмена изменений
Me.Undo
End If
End Sub
|
Получается мне куда-то сюда надо дописать, собитие которое буде происходить если пользователь подтвердить изменение... | |
|
| |
|
|
|
|
тута ...... куда тута?????
АААААААААААААА 'это я так написал неправильно.
Надо на click а не на befoupdate
================================
а ваще-то мне кажется лучше конечно
можно изначально - при запуске задать форме значение только чтение - ДА
добавить на форму флажок - редактирование разрешить.
и када на флажке этом щёлкнешь форма либо переходит в режим только чтение или в режим не только чтение, в зависимости от того флажек=1 или = 0
и тада функция будет записывать данные если можно, и не будет их писать - ежели низззя]
| |
|
| |
|
|
|
|
| остался вопрос куда присобачить функцию - видимо на клик поп полю........ | |
|
| |
|
36 Кб. |
|
| Вот на сайте sql.ru есть очень интересный пример от Бенедикта, вот краткое описание:
На таблицу A(Id,fTxt,fDbl,fDat) накладывается условие проверки (CONSTRAINT CHECK), которое построено таким образом, что для каждой обрабатываемой им записи вызывается VBA-функция TriggerA(). Условие проверяется автоматически при изменении и добавлении записей в таблицу A. В функцию передаются параметрами новые (точнее, проверяемые) значения полей таблицы A. Функция открывает таблицу-журнал Audit_A и добавляет в неё запись, содержащую
# Время изменения (вызова функции Trigger_A()) в поле LogTime
# Имя компьютера в поле Audit_A.ComputerName
# Имя пользователя в поле Audit_A.UserName
# Значение ключевого поля A.Id в поле Audit_A.A_Id
# Новое значение поля A.fTxt в поле Audit_A.NewTxt
# Новое значение поля A.fDbl в поле Audit_A.NewDbl
# Новое значение поля A.fDat в поле Audit_A.NewDat
# Старое значение поля A.fTxt в поле Audit_A.OldTxt
# Старое значение поля A.fDbl в поле Audit_A.OldDbl
# Старое значение поля A.fDat в поле Audit_A.OldDat
Условие проверки накладывается запросом CreateTrigger, снимается запросом DropTrigger
Запросы Запрос1 и Запрос2 даны, чтобы показать, что условие проверки срабатывает (и, соответственно, изменения попадают в журнал) не только при ручном редактировании записей таблицы A, но и в результате выполнения запросов на обновление и добавление. Их (вместе и по отдельности) можно вызывать или не вызывать. Они имитируют запросы на обновление и добавление реальной БД.
P.S.
Таблица Audit_A скрыта Изменения фиксируются независимо где были сделаны, напрямую в таблице или через форму. | |
|
| |