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

Вниз

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

Наверх




Память: 0.47 MB
Время: 0.004 c
6-1218309025
Doc.X
2008-08-09 23:10
2012.01.15
Регестарция в WordPress


2-1317792498
petvv
2011-10-05 09:28
2012.01.15
Array of Char to String (ANSIString)=:


15-1317587402
Юрий
2011-10-03 00:30
2012.01.15
С днем рождения ! 3 октября 2011 понедельник


2-1317904913
Alex_C
2011-10-06 16:41
2012.01.15
Узнать, нажата ли кнопка на мыши


1-1279226968
Deltas
2010-07-16 00:49
2012.01.15
Значки кнопок стандартных диалоговых окон





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский