Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Запись в LOG-таблицу идентификаторов удаленных записей  [new]
AVKr
Member

Откуда: Москва
Сообщений: 115
Сижу чешу репу и что-то ничего не вычесыывается...

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

Событие "Удаление" срабатывает нужное кол-во раз (по одному на каждую удаляемую запись). Но срабатывает оно до того как пользователь подтвердил или отказался от удаления, а Акцесс успел проверить ссылочную целостность. Стало быть, записывать рано.

А события "До подтверждения удаления" и "После подтверждения удаления" срабатывают один раз на весь набор удаляемых записей. Стало быть, уже поздно ловить отдельные идентификаторы.

Попробовал записывать в массив все идентификаторы на стадии "Удаление", чтобы потом залить их в LOG после подтверждения. Но в массив попадают и те записи, которые потом не могут быть удалены по условиям целостности.

Что-то я торможу... Может у кого какие мысли есть?
19 мар 04, 18:52    [588394]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Вот обсуждение похожей проблемы:
https://www.sql.ru/forum/actualthread.aspx?bid=4&tid=62795&pg=-1

Задачка не из легких. Окончательного ответа там нет.
19 мар 04, 19:14    [588418]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
AVKr
Member

Откуда: Москва
Сообщений: 115
Спасибо, Владимир Саныч!... Не то утешил, не то огорчил:) Думал, что проблема левой пяткой решается, просто у меня пятки неправильные. А оказалось, все не так жизнерадостно.

Пошел изучать обсуждение...
19 мар 04, 19:22    [588426]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Может и решается как-то...
19 мар 04, 19:32    [588433]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
Odess
Member

Откуда: Одесса, Украина
Сообщений: 6065
Саныч
Может и решается как-то...


Конечно решается. Тригерами ;-)
Я вот последний месяц все думаю - чего я дурачок на SQL раньше не перешел ;-))
20 мар 04, 00:02    [588592]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
alexeyK-home
Guest
в аксессе я переделывал следующим образом базу
переименовывал таблицу под другим именем, добавлял битовое поле удалено и делал сохраненный запрос которому давал имя бывшей таблицы и условие удалено = 0

вместо удаления использовал установку значения этого поля.
20 мар 04, 14:41    [588758]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
Темный
Member

Откуда:
Сообщений: 11941
2 Odess:
А нафиг в этом случает тригеры? Transaction log тебе в руки и вперед
20 мар 04, 14:42    [588759]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
2 alexeyK-home:
И как при этом решается задача, описанная автором вопроса, что некоторые записи "не могут быть удалены по условиям целостности"? Как это учитывается при заполнении поля "Удалено"?
20 мар 04, 15:16    [588769]     Ответить | Цитировать Сообщить модератору
 Тригеры-то тригерами...  [new]
AVKr
Member

Откуда: Москва
Сообщений: 115
Понимаю, что все такие вещи надо на сервер переводить. Но, как где-то раньше писал, какой будет сервер пока неизвестно, поэтому приходится нагружать клиента.

Пришла в голову такая дурацкая мысль. Может на событие "Удаление" помещать все намеченные к удалению записи в LOG, а на событие "После подтверждения" проверять какие записи не удалились (по любой причине - отказ пользователя, условия целостности и т.п.) и выкидывать их из лога. Если получится, то в очередной раз правое ухо будет почесано левой пяткой.

Но кикие-то здесь должны быть подводные камни... Где бы соломки подстелить...
22 мар 04, 12:31    [589934]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
Geo
Member

Откуда:
Сообщений: 6883
Где-то были обсуждения про работу акцесса после обработки события OnDelete. Нуф-Нуф, кажется, говорил, что если в этом обработчике открыть форму, то запись не удалится. У меня какие-то проблемы были с "триггерами для бедных" (с) - не помню уже, какие. Поищи по форуму.
22 мар 04, 12:35    [589947]     Ответить | Цитировать Сообщить модератору
 Re: Запись в LOG-таблицу идентификаторов удаленных записей  [new]
фыыф
Guest
автор
Попробовал записывать в массив все идентификаторы на стадии "Удаление", чтобы потом залить их в LOG после подтверждения. Но в массив попадают и те записи, которые потом не могут быть удалены по условиям целостности.


Дополни алгоритм проверкой успешности удаления. [После удаления]. (Например из массива сшей строку In(x;x;x...) и сделай запрос, или, открыв рекордсет (напр. клон формы), ищи неудалившиеся записи в цикле). Вот и все.
22 мар 04, 12:49    [589981]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить