Форум: "Базы";
Текущий архив: 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