C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Обновение базы, Access+ADO+Builder
[Makc]
Отправлено: 26.06.2005, 02:31


Не зарегистрирован







Пишу интерфейс к БД Access на бидере. Проблема такая — после запроса update иедёт сразу запрос select, как правило данные оказываются ещё не изменены. Можно ли стандартными средствами проверить изменение данных, или нужно селектить, пока не изменятся?
[Makc]
Отправлено: 26.06.2005, 02:47


Не зарегистрирован







кстати, апдейты делаю след образом:
SQL
AnsiString Query = "UPDATE Контакты SET Фамилия=";
Query += ReadyForQuery(Family->Text) + ", Имя=";
Query += ReadyForQuery(Name->Text) + ", Отчество=";
Query += ReadyForQuery(FName->Text) + ", Должность=";
Query += AnsiString(Status->ItemIndex + 1) + " WHERE cid=";
Query += cid;
if(MainQuery->Active) MainQuery->Close();
MainQuery->SQL->Clear();
MainQuery->SQL->Add(Query);
MainQuery->ExecSQL();
Guest
Отправлено: 26.06.2005, 20:32


Не зарегистрирован







Самое простое — переоткрыть запрос.
Close() Open()
после чего сделать нужный Select
[Makc]
Отправлено: 02.07.2005, 18:33


Не зарегистрирован







Open() и Close() — это методы для запросов возвращающих что-то (вобще говоря возвращается рекордсет). Для выполнениев Select нужно использовать именно Execute() — читай документацию

Но я нашёл реение проблемы:

Все дело в том что данный запрос открывает не явную транзакцию.

Используя механизм явных транзакций, всегда знаешь когда изменения будут применены. BeginTrans, CommitTrans, and RollbackTrans — в помощь wink.gif

Вернуться в Работа с базами данных в C++Builder