C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Новые / измененные данные не отображаются!  (Прочитано 42447 раз)
oxotnik
Глобальный модератор
***

Сказали спасибо: +100/-15
Offline Offline

Сообщений: 2425


« : 29 мая 2008, 14:12:44 »

Выполняется запрос на редактирование/добавление данных, и сразу же за ним выполняется выборка для отображения изменений, однако показываются старые данные.
Код
ADOQuery2->SQL->Text = "UPDATE TableName SET Field1 = :Value1... ";
ADOQuery2->ExecSQL();
ADOQuery1->Active = false;
ADOQuery1->Active = true;
 

Что бы были видны изменения, необходимо "дать знать" СУБД об окончании изменений при помощи транзакции
Код
ADOConnection1->BeginTrans(); // запуск транзакции на изменение
ADOQuery2->SQL->Text = "UPDATE TableName SET Field1 = :Value1... ";
ADOQuery2->ExecSQL();
ADOConnection1->CommitTrans(); // подтверждение изменений
ADOQuery1->Active = false;
ADOQuery1->Active = true;
 
Записан
AVC
Администратор
***

Сказали спасибо: +28/-6
Offline Offline

Сообщений: 1189


« Ответ #1 : 29 мая 2008, 15:07:11 »

PS.
> Выполняется запрос на редактирование/добавление данных, и сразу же за ним выполняется выборка
> для отображения изменений, однако показываются старые данные.
> Что бы были видны изменения, необходимо "дать знать" СУБД об окончании изменений при
> помощи транзакции
Такое поведение характерно, скорее всего, для ситуации без явного использования сессии (чаще всего это ADO) и/или только для Access.
Например в оракле, внутри одной транзакции можно менять/добавлять/удалять как угодно и тутже выбирать эти новые данные. Но все изменения видны исключительно в рамках своей сессии. После подтверждения транзакции они станут доступны всем.
Записан
oxotnik
Глобальный модератор
***

Сказали спасибо: +100/-15
Offline Offline

Сообщений: 2425


« Ответ #2 : 29 мая 2008, 15:51:48 »

Такое поведение характерно, скорее всего, для ситуации без явного использования сессии (чаще всего это ADO) и/или только для Access.

В FireBird 1.5 пока не сделаешь Commit() для транзакции данные вообще не попадают в таблицы, не зависимо от времени ожидания.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: