|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
Уважаемый коллективный разум, Я понимаю, что боян, но вдруг... Аксес 2016 и на нем база с фронтэндом. Задача тривиальна: необходимо отслеживать изменение значения полей пользователем во всех формах. Для этого предполагается заносить изменения в таблицу лога в виде: - имя_таблицы - имя_поля - идент_записи - старое значение - новое значение - пользователь - дата и время изменения Понимаю, что самое простое решение - повесить вызов функции на Dirty каждого поля в формах и оттуда писать в таблицу логов, но хотелось бы чего-то более универсального, ибо таблиц и полей дофигища и вешать на каждое поле вызов функции - это просто аццкое занятие, да и не особо эффективное в плане будущих изменений. Посему вопрос: какие еще могут быть решения/идеи? Спасибо всем огромное заранее! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 13:38 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
IFK, Перебрать циклом поля если форма изменилась А вообще изменять сохраненные записи считаю не допустимым (часто гораздо правильнее добавить новую запись которая изменит данные как надо,сохранив всю информацию-кто, когда, на каком основании создал эту запись ) т.к. при этом история становится не достоверной и вычисления,если они основаны на предыдущих значениях-короче БД "ломается" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 14:11 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
sdku, создавать новые записи при изменении одного поля каждый раз???? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 14:53 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
sdkuIFK, Перебрать циклом поля если форма изменилась А вообще изменять сохраненные записи считаю не допустимым (часто гораздо правильнее добавить новую запись которая изменит данные как надо,сохранив всю информацию-кто, когда, на каком основании создал эту запись ) т.к. при этом история становится не достоверной и вычисления,если они основаны на предыдущих значениях-короче БД "ломается" перебрать циклом поля? их дофига и боюсь, это сильно замедлит систему, если после каждого изменения одной записи перебирать ВСЕ поля на предмет их изменения. Да и как проверить какие поля изменились, а какие нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 14:55 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
IFKДа и как проверить какие поля изменились, а какие нет? Для этого сравнивается Value и OldValue контрола. На событии Form_BeforeUpdate выполняете цикл по контролам и формируете лог, а на Form_AfterUpdate сохраняете лог в таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 16:13 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 16:49 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, хм, попробую, хотя не уверен, что это будет работать быстро - на некоторых формах полторы сотни полей :( ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 17:11 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
IFKперебрать циклом поля? их дофига и боюсь, это сильно замедлит систему, если после каждого изменения одной записи перебирать ВСЕ поля на предмет их изменения.Если что и замедлит систему так это неправильно спроектированная БД,а перебор сотни полей навряд-ли будет хоть как-то заметен(при быстродействии современных,даже самых бюджетных, компьютеров) А об изменении сохраненных записей-я свое мнение высказывал(понял что речь идет именно об этом) IFK.... - старое значение - новое значение ..... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 17:12 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
sdku, Поэтому и попробую сделать с перебором. Посмотрим. Насчет изменения сохраненных записей - нет, неправильно поняли. Я имел в виду обычную работу пользователя, который изменяет данные, и, соответственно, записи. Мне кажется странным дизайн, при котором изменение одного поля ведет к дублированию всей записи. В таком случае, обычная работа пользователей провоцирует неконтролируемое, и главное, абсолютно бессмысленное разрастание БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 17:29 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
IFK, так покажите БД и поясните чего хотите ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2019, 18:16 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
IFK...Насчет изменения сохраненных записей - нет, неправильно поняли. Я имел в виду обычную работу пользователя, который изменяет данные, и, соответственно, записи.... Вы уж определитесь:или изменяет данные или создает новую запись-это, таки, не одно и то же ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2019, 13:52 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
sdku, пардон, а где я писал про создание новых записей? Это была Ваша идея. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2019, 17:38 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
Кривцов АнатолийIFKДа и как проверить какие поля изменились, а какие нет? Для этого сравнивается Value и OldValue контрола. На событии Form_BeforeUpdate выполняете цикл по контролам и формируете лог, а на Form_AfterUpdate сохраняете лог в таблице Сделал Ваш вариант - вроде-де бы все работает. Иногда, правда, выскакивает странное сообщение, что свойство OldValue для каких-то полей не определено или недоступно, когда перебором прохожу по всем контролам в форме. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2019, 17:41 |
|
Логи изменений разнотипных таблиц
|
|||
---|---|---|---|
#18+
IFKИногда, правда, выскакивает странное сообщение, что свойство OldValue для каких-то полей не определено или недоступно, когда перебором прохожу по всем контролам в форме. Ну, правильно. Например, у надписи или линии нет ни Value, ни OldValue. А у набора вкладок Value есть, а OldValue (вроде бы) нет. Надо проверять тип контрола. К тому же за редким исключением все интересующие вас поля находятся в разделе формы "Данные", поэтому перебор лучше выполнять по контролам этого раздела(секции). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2019, 13:20 |
|
|
start [/forum/topic.php?desktop=1&fid=45&tid=1610637]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 315ms |
total: | 448ms |
0 / 0 |