Главная страница
    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.005 c
15-1317112411
И. Павел
2011-09-27 12:33
2012.01.15
Порекомендуйте БД для JAVA


2-1317185371
vgvolk
2011-09-28 08:49
2012.01.15
Создание xml файла в делфи


2-1317643451
Очень Злой
2011-10-03 16:04
2012.01.15
TFileStream


9-1175164239
crytogen
2007-03-29 14:30
2012.01.15
нарисовать трубу в OpenGL по точкам


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