![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 09.08.2008
Сообщений: 4
|
![]()
Доброго всем времени суток!
Проблема следующая: использую файрбёд, работаю с базой в сетевом режиме (т.е. файл базы лежит в расшаренной папаке на компе, пользователи с ним работают). Один из пользователей добавляет запись в таблицу. У него эта запись при просмотре видна, у остальных нет. Даже select * from this_table вернет все записи без вновьвведенной. Стоит отключится от БД, затем подключится снова - и запись видна. Почему так происходит? И, соответственно, что нужно сделать, чтобы не происходило? Спасибо! |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
![]()
запись происходит в одной транцакции
соответственно чтобы запись сохранить надо подтвердить транзакцию (Commit) что ты и делаешь при отключении от базы... ![]() |
![]() |
![]() |
![]() |
#3 |
Регистрация: 09.08.2008
Сообщений: 4
|
![]()
В том то и дело, что подтверждаю. Перекрутил уже по-всякому.
Даже в пределах одного приложения: есть 2 окошка, в одном имеется возможность вносить изменения в таблицу, в другом только читать из нее. На каждой форме свой компонент TIBTransaction. В первом окне добавляю запись: TQ.SQL.Add('insert into table бла-бла-бла'); if not TQ.Transaction.InTransaction then TQ.Transaction.StartTransaction; TQ.Prepare; TQ.ExecSQL; TQ.UnPrepare; TQ.Transaction.Commit; TQ - это TIBQuery. В итоге после селекта в этой форме изменения видны. Открываю другую форму ( в этом же приложении, правда с другим компонентом TIBTransaction на форме) - не видны. В каком еще месте и какую транзакцию я должен подтвердить? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
![]()
Хм. Компоненты IB никогда не использовал, может в них косяк какой... Использую FIBPlus, никогда таких проблем не было... Может после подтверждения транзакции, в других наборах данных, на других машинах,вы либо refresh не делаете, либо он криво проходит либо уровень изоляции транзакций как-то косячит.
Я обычно использую FIBNotifyEvent, когда на сервере обновляется таблица( для этого я обычно использую хранимые процедуры), в конце процедуры делаю post_event 'Имя_события'; На стороне клиента, когда это событие перехватывается, набору записи, который тянет инфу из этой таблицы, делаю FullRefresh и всё... Вы вообще после подтверждения транзакции, в другой форме или в другом приложении пробовали IBDataset.Refresh делать? И вы не правильно работаете с базой, её не надо расшаривать.... Последний раз редактировалось Rik; 03.12.2008 в 18:34. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
одновременный доступ | ГОСЕАН | Microsoft Office Access | 2 | 08.08.2008 07:41 |
Доступ к переменным | RealSHELS | Общие вопросы Delphi | 4 | 15.06.2008 13:14 |
доступ к файлам | ryton | Общие вопросы Delphi | 13 | 23.05.2008 14:15 |
Доступ к строке | Баламут | Win Api | 10 | 21.01.2008 08:44 |
доступ в реестр | vicvtor | Win Api | 6 | 28.11.2006 20:26 |