Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отследить изменения в БД, Access ODBC 
:(
    Опции темы
neosapient
Дата 6.9.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: нет
Всего: 4



К БД подключены источник данных и приемник.
Мне надо как можно быстрее получить информацию о том, где и какая ячейка изменена.
Идея проверять БД каждую милисекунду и сравнивать с прошлым состоянием хранящимся в памяти мне не подходит.
Как решить проблему?
PM MAIL   Вверх
Anark1
Дата 6.9.2007, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: 3
Всего: 11



Триггер.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
neosapient
Дата 6.9.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: нет
Всего: 4



по подробнее как использовать триггер + в данной ситуации
PM MAIL   Вверх
Anark1
Дата 6.9.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: 3
Всего: 11



Я не работал с MS ACCESS. Поэтому приведу пример для InterBase SQL Server (надеюсь в ACCESS реализована поддержка триггеров).
Триггер - это ХП, выполняемая сервером автоматически, как реакция на событие.

Код

CREATE TRIGGER Examp_Trg FOR Examp_Table
ACTIVE AFTER UPDATE POSITION 0
AS BEGIN
     IF (NEW.MY_FIELD1 = OLD.MY_FIELD1) THEN ... 
     IF (NEW.MY_FIELD2 = OLD.MY_FIELD2) THEN ...
     IF (NEW.MY_FIELD3 = OLD.MY_FIELD3) THEN ...
     ...
END


мы создаем триггер Examp_Trg для таблицы Examp_Table, который имеет нулевую приоритетность (порядок выполнения, если существует несколько триггеров) и активируется после модификации записей. Чтобы проверить какое поле было отредактировано используются контекстные переменные OLD и NEW.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
neosapient
Дата 6.9.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: нет
Всего: 4



Увы, как показал поиск Access не поддерживает триггеры
PM MAIL   Вверх
Anark1
Дата 6.9.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: 3
Всего: 11



neosapient,
забей на это убожество (MS ACCESS) ! Ставь что нибудь посерьезнее ... 
Или скажи что поддерживает ACCESS. Потому что я так сразу даже и не знаю как еще можно реализовать поставленную задачу.
Как вариант - написать сервер, который бы обрабатывал все транзакции к БД.


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
SenkraD
Дата 7.9.2007, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 3
Всего: 23



neosapient, ты через какие компоненты работаеш? Через ADO? А события из серии OnPost, OnEdit не подходят?
ТЕм более, у класса TFiled есть похожие события, кажись.  Плюс, шлянь о свойствах OldValue и NewValue или как-то так (давно не работал с БД)

Цитата(Anark1 @  6.9.2007,  21:24 Найти цитируемый пост)
забей на это убожество (MS ACCESS) ! Ставь что нибудь посерьезнее ... 

Согласен, если это только не причуда заказчика

P.S. Или я не правильно понял вопрос



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.1065 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.