Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Логи изменений разнотипных таблиц / 14 сообщений из 14, страница 1 из 1
13.06.2019, 13:38
    #39826142
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
Уважаемый коллективный разум,

Я понимаю, что боян, но вдруг... Аксес 2016 и на нем база с фронтэндом.

Задача тривиальна: необходимо отслеживать изменение значения полей пользователем во всех формах. Для этого предполагается заносить изменения в таблицу лога в виде:
- имя_таблицы
- имя_поля
- идент_записи
- старое значение
- новое значение
- пользователь
- дата и время изменения

Понимаю, что самое простое решение - повесить вызов функции на Dirty каждого поля в формах и оттуда писать в таблицу логов, но хотелось бы чего-то более универсального, ибо таблиц и полей дофигища и вешать на каждое поле вызов функции - это просто аццкое занятие, да и не особо эффективное в плане будущих изменений. Посему вопрос: какие еще могут быть решения/идеи?

Спасибо всем огромное заранее!
...
Рейтинг: 0 / 0
13.06.2019, 14:11
    #39826155
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
IFK,
Перебрать циклом поля если форма изменилась
А вообще изменять сохраненные записи считаю не допустимым (часто гораздо правильнее добавить новую запись которая изменит данные как надо,сохранив всю информацию-кто, когда, на каком основании создал эту запись ) т.к. при этом история становится не достоверной и вычисления,если они основаны на предыдущих значениях-короче БД "ломается"
...
Рейтинг: 0 / 0
13.06.2019, 14:53
    #39826169
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
sdku,

создавать новые записи при изменении одного поля каждый раз????
...
Рейтинг: 0 / 0
13.06.2019, 14:55
    #39826171
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
sdkuIFK,
Перебрать циклом поля если форма изменилась
А вообще изменять сохраненные записи считаю не допустимым (часто гораздо правильнее добавить новую запись которая изменит данные как надо,сохранив всю информацию-кто, когда, на каком основании создал эту запись ) т.к. при этом история становится не достоверной и вычисления,если они основаны на предыдущих значениях-короче БД "ломается"

перебрать циклом поля? их дофига и боюсь, это сильно замедлит систему, если после каждого изменения одной записи перебирать ВСЕ поля на предмет их изменения. Да и как проверить какие поля изменились, а какие нет?
...
Рейтинг: 0 / 0
13.06.2019, 16:13
    #39826226
Логи изменений разнотипных таблиц
IFKДа и как проверить какие поля изменились, а какие нет? Для этого сравнивается Value и OldValue контрола. На событии Form_BeforeUpdate выполняете цикл по контролам и формируете лог, а на Form_AfterUpdate сохраняете лог в таблице
...
Рейтинг: 0 / 0
13.06.2019, 16:49
    #39826253
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
...
Рейтинг: 0 / 0
13.06.2019, 17:11
    #39826271
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
Кривцов Анатолий,

хм, попробую, хотя не уверен, что это будет работать быстро - на некоторых формах полторы сотни полей :(
...
Рейтинг: 0 / 0
13.06.2019, 17:12
    #39826272
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
IFKперебрать циклом поля? их дофига и боюсь, это сильно замедлит систему, если после каждого изменения одной записи перебирать ВСЕ поля на предмет их изменения.Если что и замедлит систему так это неправильно спроектированная БД,а перебор сотни полей навряд-ли будет хоть как-то заметен(при быстродействии современных,даже самых бюджетных, компьютеров)
А об изменении сохраненных записей-я свое мнение высказывал(понял что речь идет именно об этом)
IFK....
- старое значение
- новое значение
.....
...
Рейтинг: 0 / 0
13.06.2019, 17:29
    #39826277
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
sdku,

Поэтому и попробую сделать с перебором. Посмотрим.
Насчет изменения сохраненных записей - нет, неправильно поняли. Я имел в виду обычную работу пользователя, который изменяет данные, и, соответственно, записи. Мне кажется странным дизайн, при котором изменение одного поля ведет к дублированию всей записи. В таком случае, обычная работа пользователей провоцирует неконтролируемое, и главное, абсолютно бессмысленное разрастание БД.
...
Рейтинг: 0 / 0
13.06.2019, 18:16
    #39826303
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
IFK,
так покажите БД и поясните чего хотите
...
Рейтинг: 0 / 0
14.06.2019, 13:52
    #39826599
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
IFK...Насчет изменения сохраненных записей - нет, неправильно поняли. Я имел в виду обычную работу пользователя, который изменяет данные, и, соответственно, записи.... Вы уж определитесь:или изменяет данные или создает новую запись-это, таки, не одно и то же
...
Рейтинг: 0 / 0
14.06.2019, 17:38
    #39826716
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
sdku, пардон, а где я писал про создание новых записей? Это была Ваша идея.
...
Рейтинг: 0 / 0
14.06.2019, 17:41
    #39826718
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логи изменений разнотипных таблиц
Кривцов АнатолийIFKДа и как проверить какие поля изменились, а какие нет? Для этого сравнивается Value и OldValue контрола. На событии Form_BeforeUpdate выполняете цикл по контролам и формируете лог, а на Form_AfterUpdate сохраняете лог в таблице

Сделал Ваш вариант - вроде-де бы все работает. Иногда, правда, выскакивает странное сообщение, что свойство OldValue для каких-то полей не определено или недоступно, когда перебором прохожу по всем контролам в форме.
...
Рейтинг: 0 / 0
19.06.2019, 13:20
    #39828327
Логи изменений разнотипных таблиц
IFKИногда, правда, выскакивает странное сообщение, что свойство OldValue для каких-то полей не определено или недоступно, когда перебором прохожу по всем контролам в форме. Ну, правильно. Например, у надписи или линии нет ни Value, ни OldValue. А у набора вкладок Value есть, а OldValue (вроде бы) нет. Надо проверять тип контрола.
К тому же за редким исключением все интересующие вас поля находятся в разделе формы "Данные", поэтому перебор лучше выполнять по контролам этого раздела(секции).
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Логи изменений разнотипных таблиц / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]