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

Вниз

Вопрос по Firebird/ interbase Express   Найти похожие ветки 

 
Andrey2025   (2010-03-28 23:07) [0]

Уважаемые программеры! Вопрос такой.
Решил протестировать клиентское приложение на технологии
InterBase Express/  delphi 7. На компе стоит сервер firebird 2.0. Запустил параллельно два раза приложение на одном компе. В первом окне произвел транзакцию, данные обновились нормально. Но во втором окне (запущенном параллельно) обновление не идет. Как будто бы ничего и не было. Стоит еще параллельно запустить приложение - стартует с обновлениями, а уже запущенное параллельно - не хочет обновляться (Grid показывает старые данные, как до транзакции).
С уважением, Андрей.


 
Loginov Dmitry ©   (2010-03-28 23:27) [1]


> Решил протестировать клиентское приложение на технологии
> InterBase Express/  delphi 7. На компе стоит сервер firebird
> 2.0. Запустил параллельно два раза приложение на одном компе.
>  В первом окне произвел транзакцию, данные обновились нормально.
>  Но во втором окне (запущенном параллельно) обновление не
> идет. Как будто бы ничего и не было. Стоит еще параллельно
> запустить приложение - стартует с обновлениями, а уже запущенное
> параллельно - не хочет обновляться (Grid показывает старые
> данные, как до транзакции).


А с какой стати второе приложение должно обновлять грид, откуда ему знать, что кто-то другой внес изменения в базу данных? Ему этого знать не нужно. А если очень нужно, то можно добавить кнопку "Обновить", при нажатии на которую закрывать, а затем сразу открывать набор данных. А  еще можно на это дело таймер повесить.


 
Andrey2025   (2010-03-28 23:32) [2]


> А с какой стати второе приложение должно обновлять грид,
>  откуда ему знать, что кто-то другой внес изменения в базу
> данных? Ему этого знать не нужно. А если очень нужно, то
> можно добавить кнопку "Обновить", при нажатии на которую
> закрывать, а затем сразу открывать набор данных. А  еще
> можно на это дело таймер повесить.


> А с какой стати второе приложение должно обновлять грид,
>  откуда ему знать, что кто-то другой внес изменения в базу
> данных? Ему этого знать не нужно. А если очень нужно, то
> можно добавить кнопку "Обновить", при нажатии на которую
> закрывать, а затем сразу открывать набор данных. А  еще
> можно на это дело таймер повесить.

Обновлял. Компонент IBTable. но ни refresh, ни закрытие/закрытие не помогают. На SQL сервере все без проблем, а тут вот так.


 
Loginov Dmitry ©   (2010-03-28 23:37) [3]


> Компонент IBTable. но ни refresh, ни закрытие/закрытие не
> помогают.


refresh и не поможет (в IBX он не для этого сделан).
А закрытие/открытия не помогают из-за неправильной настройки компонента IBTransaction. Необходимо указать тип транзакции "Read commited"


 
Andrey2025   (2010-03-28 23:56) [4]


> refresh и не поможет (в IBX он не для этого сделан).А закрытие/открытия
> не помогают из-за неправильной настройки компонента IBTransaction.
>  Необходимо указать тип транзакции "Read commited"

Скажите пожалуйста, Дмитрий, а поподробнее можно? в инспекторе для IBRansaction подобного не нашел. Где его нужно указать?


 
dik59   (2010-03-29 00:39) [5]

>А закрытие/открытия не помогают из-за неправильной настройки компонента IBTransaction. Необходимо указать тип транзакции "Read commited"

Чуть правильнее было бы сказать, что при отсутствии  "Read commited" необходимо еще и переоткрывать саму транзакцию, возможен ведь случай, когда "Read commited" недопустим.


 
PEAKTOP ©   (2010-03-29 00:55) [6]


..........
with IBTransaction1 do
 begin
 if InTransaction then
   Commit;
 Params.Clear;
 Params.Add("isc_tpb_read_committed");
 Params.Add("isc_tpb_write"); // или   Params.Add("isc_tpb_read");
 Params.Add("isc_tpb_rec_version");
 Params.Add("isc_tpb_nowait");
 end;
...........
IBTransaction1.StartTransaction;


 
Andrey2025   (2010-03-29 00:59) [7]

Наконец - то разобрался с изолированностью транзакций. Оба метода подходят. Огромное спасибо всем (Loginov Dmitry ©, dik59), кто откликнулся и наставил на правильный путь.
Андрей.


 
Andrey2025   (2010-03-29 01:05) [8]


> with IBTransaction1 do  begin  if InTransaction then    Commit;
>   Params.Clear;  Params.Add("isc_tpb_read_committed");  Params.
> Add("isc_tpb_write"); // или   Params.Add("isc_tpb_read");
>   Params.Add("isc_tpb_rec_version");  Params.Add("isc_tpb_nowait");
>   end;...........IBTransaction1.StartTransaction;

Этот код тоже подходит, спасибо, PEAKTOP ©. Устанавливал параметры вручную. Но иногда думаю, потребуется и программно менять параметры транзакции



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

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

Наверх




Память: 0.49 MB
Время: 0.009 c
2-1317904913
Alex_C
2011-10-06 16:41
2012.01.15
Узнать, нажата ли кнопка на мыши


2-1317911115
vegarulez
2011-10-06 18:25
2012.01.15
Звук при нажатии Enter


15-1316457374
Leon-Z
2011-09-19 22:36
2012.01.15
Каким будет ПО через 10 лет ?


15-1317372179
oxffff
2011-09-30 12:42
2012.01.15
Вопрос по MDX запросам


1-1280310464
George
2010-07-28 13:47
2012.01.15
Обращение к сетевой папке из службы