Главная страница
    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
15-1316494673
xayam
2011-09-20 08:57
2012.01.15
АНТИВИРУСЫ НА ВОЙНЕ


1-1279271153
gosha52
2010-07-16 13:05
2012.01.15
TButton, Windows Vista/7, интересное поведение


15-1316837540
SQLEX
2011-09-24 08:12
2012.01.15
идиотека..


15-1317153552
xayam
2011-09-27 23:59
2012.01.15
ExeClient = WebKit + HTML + CSS + JavaScript


2-1318188503
Евгений07
2011-10-09 23:28
2012.01.15
В GraphicEx: нет LoadFromStream для Image





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