Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

Обновление БД   Найти похожие ветки 

 
Belkova ©   (2005-03-02 17:44) [0]

Мастера Delphi! Подскажите, пожалуйста. Есть БД, с которой одновременно работают несколько пользователей. При внесении изменений одним из них, естественно хотелось бы чтобы это видели все оставшиеся. Выполняю следующим образом, все изменения происходят в рамках транзакции.
IBtransaction.starttransaction;
try
{вызовы ХП}
IBtransaction.commit;
except
IBtransaction.rollback;
end;
Для редактируемых таблиц написаны триггеры,( After Insert,AfterUpdate, AfterDelete)
post_event "CHANGE_TABLE"
В приложении используется компонент IbEvents.  событие OnEventAlert обрабатывается
if EventName="CHANGE_TABLE" then
begin
 IBQuery.close;
 IBQuery.Open;
end;
В результате данные у других пользователей иногда обновляются, иногда нет. Что можно сделать.


 
Desdechado ©   (2005-03-02 17:48) [1]

а не вызывается ли обработка event в момент транзакции записи?


 
Belkova ©   (2005-03-02 17:52) [2]

А как это узнать? Изменение записей происходит  до commit, после чего набор данных не переоткрывается.


 
Desdechado ©   (2005-03-02 17:55) [3]

например, в обработчике event"а проверить database.InTransaction


 
AndriyKo   (2005-03-02 18:03) [4]

/if EventName="CHANGE_TABLE" then
begin
IBQuery.close;
IBQuery.Open;
end;/

Интересно, а если юзер в этот момент редактирует запись или просматривает данные ? Вдруг, ни с того ни с сего - опен-клозе. Эта ситуация предусмотрена ? Лучше при получении эвента взвести какой-нить флаг или кнопочку типа "Обновить" подсветить - пользователь нажмёт, когда захочет.


 
Belkova ©   (2005-03-02 18:07) [5]

Да эта ситуация предусмотрена, а чтобы автоматечески все обновлялось без кнопочек, так это желание заказчика.


 
Belkova ©   (2005-03-02 18:14) [6]

Поставила в обработчике проверку на database.InTransaction
Говорит, что нет.


 
Desdechado ©   (2005-03-02 18:18) [7]

говорит и все равно не обновляет?


 
Belkova ©   (2005-03-02 18:27) [8]

В том-то и дело что иногда не обновляет. В данный момент обновил.
Почему иногда работает, а иногда нет.


 
Desdechado ©   (2005-03-02 19:39) [9]

1. event не поймался/не дошел
2. если активна транзакция, то какой может быть Open? Там другие запросы сыплются на сервер, а IB в одной сессии не умеет параллельно запросы выполнять.



Страницы: 1 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
3-1109360803
Коля
2005-02-25 22:46
2005.03.27
Статьи о сетевых базах


14-1109957542
G100M
2005-03-04 20:32
2005.03.27
Pantech g500 IMEI


14-1110383090
Piter
2005-03-09 18:44
2005.03.27
Outpost блокирует транзитные пакеты


14-1109916856
ex080D:07BBh
2005-03-04 09:14
2005.03.27
Юмор


14-1108997302
Delirium
2005-02-21 17:48
2005.03.27
"Вышел в свет" или балуемся с web-камерй