Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кеширование изменений в базе, проблема при попытке ApplyUpdates() 
:(
    Опции темы
Рысь
  Дата 16.2.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.8.2005
Где: Москва

Репутация: нет
Всего: нет



Доброго времени суток!
У меня возникла проблема при поытке зафиксировать изменеия в базе методом ApplyUpdates().

Я использую в качестве СУБД InterBase 7.5
Мне необходимо зафиксировать все произведенные с таблицей изменеия по нажатию кнопки Сохранить.
Для отображения данных используется TDBGridEh.
Имеется компонент TIBQuery и, связанный с ним, TIBUpdateSQL. Свойство IBQuery CachedUpdates=true, при редактировании выставляю IBQuery->Edit(). Пользователь редактирует записи, после чего может подтвердить или отменить изменеия. При подтверждении я делаю:

if(DataModule1->IBQuery->CachedUpdates)
{
DataModule1->IBQuery->ApplyUpdates();
}

В случае если была отредактированна только 1 запись, все проходит успешно.

Если же изменения коснулись нескольких записей генерируется исключение EIBClientError "Update Failed". На форумах пишут о подобных проблемах, объясняется все тем, что InerBase не знает какую ему запись модифицировать, если в кеше несколько именений. Возник вопрос: так ли это? И если так, то можно как-то обойти это проблему? Или мне после каждой строки таблицы выводить запрос на сохранение? smile smile smile И зачем тогда этот кеш, если можно модифицировать одну запись за раз? smile В таком случае, я вместо CancelUpdates() могу сделать Rollback транзакции... smile

Это сообщение отредактировал(а) Рысь - 17.2.2006, 09:58
PM MAIL   Вверх
OSV
Дата 15.4.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 5.4.2006
Где: Донецк

Репутация: нет
Всего: нет



Я точно не помню, но помоему я вставлял IBQuery->Refresh() до или после строки IBQuery->ApplyUpdates();

И вродибы работало.



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0852 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.