Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
9-1105036952
Micker2
2005-01-06 21:42
2005.03.27
PowerDraw. Полупрозрачность из BMP


4-1108295688
Lokly
2005-02-13 14:54
2005.03.27
Выполнение команды от имени другого пользователя


14-1109786649
_silver
2005-03-02 21:04
2005.03.27
Белгородская сходка.


3-1109408889
fess
2005-02-26 12:08
2005.03.27
Ошибка в инструкции INSERT INTO


3-1109166445
juice
2005-02-23 16:47
2005.03.27
Добавочное поле в запросе




   Наверх