Отслеживаем таблицу

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Отслеживаем таблицу

Сообщение ANDLL » 06.01.2005 (Чт) 14:55

Всем привет!

Используется ADO.

Есть некоторая таблица. Как сделать так, что бы моя прога следила за всеми изменениями в этой таблице, то бишь ловить все INSERT'ы, UPDATE'ы и DELETE'ы, относящиеся к этой таблице :?:

Заранее спасибо.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 06.01.2005 (Чт) 15:58

В connection и Recordset есть некоторые события
Наверное, по ним можно отлавливать, если обьявить recordset или connection с фичей WithEvents

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 06.01.2005 (Чт) 18:25

Спасибо!
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.01.2005 (Чт) 23:33

Если серверная часть знает, что такое триггеры (triggers), то просто пишешь оные для этой таблицы, и в них делаешь то, что тебе нужно - например, в триггере на удаление можно копировать все, что удаляется, в отдельную таблицу-лог, то же самое можно делать с инсертами, а с апдейтами - обычно сохраняют в лог оригинальные данные перед модификацией. Впрочем, это уже смотря какая задача...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 07.01.2005 (Пт) 8:49

Ну ка, поподробнее. Это есть в ADO, или какая-то спец. фича?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.01.2005 (Пт) 23:00

Нет, это не фича технологии доступа к данным (каковой является и ADO в том числе), это фича самой БД. Либо в ней это есть, либо нет. В Аксессе, кажется, нет (пусть меня поправят, если в последних версиях они появились), а в нормальных серверных системах есть практ. во всех. Начинать можно с мускула (MySQL), интербейза и его производных, ну, дальше уже есть везде.

Короче: поищи в справке к своей БД раздел по CREATE TRIGGER. Если найдешь, значит, у тебя есть :)

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 26.01.2005 (Ср) 15:17

timsoft писал(а):В connection и Recordset есть некоторые события
Наверное, по ним можно отлавливать, если обьявить recordset или connection с фичей WithEvents

Не ловится! Ставлю евент ExecuteComplete.
Далее открываю MDB-базу в access и правлю ее. Закрываю базу, а event так не разу и не вызывался...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.01.2005 (Ср) 15:22

С асинхронными запросами там несколько хитрее. Запросы ловятся, только этот запрос надо запускать асинхронно.
Но в любом случае, эти события тебе не помогут отлавливать модификацию таблиц, тут помогут только триггеры (на серверной части, ес-но).
Lasciate ogni speranza, voi ch'entrate.

timsoft
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 18.10.2003 (Сб) 10:50
Откуда: Odessa, Ukraine

Сообщение timsoft » 26.01.2005 (Ср) 15:23

ANDLL писал(а):Далее открываю MDB-базу в access и правлю ее.


Правишь через db.Execute или через Recordset?
tim@ Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 26.01.2005 (Ср) 15:31

По обычному. Открываю таблицу и пишу в ней.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.01.2005 (Ср) 15:46

Если ты сам проводишь эти изменения, то в чем сложность их фиксировать в каком-нибудь логе?
А чужие изменения из клиентской части ты все-равно не поймаешь.
Lasciate ogni speranza, voi ch'entrate.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 26.01.2005 (Ср) 16:02

alibek писал(а):Если ты сам проводишь эти изменения, то в чем сложность их фиксировать в каком-нибудь логе?
А чужие изменения из клиентской части ты все-равно не поймаешь.
Почему не поямаю?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.01.2005 (Ср) 16:06

Да потому, что это противоречит идее многопользовательской СУБД. Ты не только не поймаешь, ты этих изменений даже не заметишь, если только не будешь периодически загружать данные и сравнивать с предыдущими.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList