Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > InterBase запросы


Автор: IvanTG 16.5.2004, 16:38
Пишу программу в Delphi с использованием сервера InterBase. Столкнулся с проблемой: запросы, изменяющие таблицу (Update) не всегда выполняются. Транзакция завершается нормально, а изменения на сервере не произходят.

Еще при внесении изменений не все клиенты сразу их видят. На сервере таблица уже изменилась, а на клиентских машинах запрос Slect выдает старые данные.

Как мне от этого избавится???

Автор: gray_k 17.5.2004, 08:25
Цитата
Пишу программу в Delphi с использованием сервера InterBase. Столкнулся с проблемой: запросы, изменяющие таблицу (Update) не всегда выполняются. Транзакция завершается нормально, а изменения на сервере не произходят.

Значит запросы ничего не меняют
Цитата
Еще при внесении изменений не все клиенты сразу их видят. На сервере таблица уже изменилась, а на клиентских машинах запрос Slect выдает старые данные.
В параметрах транзакции напиши:
Код

isc_tpb_read_committed
isc_tpb_rec_version
isc_tpb_no_wait

После этого вызываешь метод Refresh() у набора данных и всё ОК. Кстати, если используешь TIBQuery, то не забудь прописать параметры обновления у компонента TIBUpdateSQL/
Да, вот ещё. ДЛя того, чтобы увидеть новые записи, набор данных необходимо переоткрыть заново и ничего ты тут не сделаешь.

Автор: x77 22.5.2004, 00:07
gray_k, переоткрывать необязательно, если делается CommitRetaining. но это джопустимо, только если все поля формируются на стороне клиента. если что-то (дефолтовые значения, доп. обработка в триггерах) формирует сервак, то это действительно невозможно увидеть без переоткрытия.

Автор: pernatij 28.5.2004, 00:43
Люди, помогите!!!
При создании внешнего ключа в базе данных Interbase V5.6. Вызывается ошибка - сервер говорит, что таблица, в которой этот ключ является первичным, занята другим процессом.

unsuccessful metadata update
-object ROOMTYPE is in use

Автор: gray_k 28.5.2004, 13:03
Надо сделать shitdown, а потом online. Это только при отключенных юзерах и одним коннектом SYSDBA. А если на сервере больше баз нет, то проще всего просто перезапустить службу сервера.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)