Главная страница
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.032 c
1-1110882991
ksu
2005-03-15 13:36
2005.03.27
Мигающий текст в StringGrid


3-1109546867
Fedia
2005-02-28 02:27
2005.03.27
Объединение данных из двух таблиц одним запросом


14-1109492893
Alexis
2005-02-27 11:28
2005.03.27
Воскресная задачка :D


1-1110363090
Poha
2005-03-09 13:11
2005.03.27
QReport


1-1110633189
просто кодер
2005-03-12 16:13
2005.03.27
TChart