Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
1-1110971671
aleshap
2005-03-16 14:14
2005.03.27
Event OnEnter


1-1110801075
lehich
2005-03-14 14:51
2005.03.27
добавить небольшой exe в проект и использование его


6-1106741376
Vadim X
2005-01-26 15:09
2005.03.27
THTTP SendForm


1-1110818082
nes
2005-03-14 19:34
2005.03.27
Связь 2-х компов....


4-1108551494
DeskTop
2005-02-16 13:58
2005.03.27
Как определить путь к рабочему столу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский