![]() |
|
![]() ![]() ![]() |
|
RomaKiev |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 28.11.2010 Где: Киев Репутация: нет Всего: нет |
Доброго времени суток!
В приложении имеется таблица, созданная с помощью компонента TDBGrid В эту таблицу заносятся данные из базы данных MySQL Я написал процедуру для обновления базы данных на основании изменений, внесённых непосредственно в таблицу. Эта процедура вызывается при нажатии кнопки. Но проблема вся в том, что изменения внесённые в таблицу сразу же сохраняются в базе данных. То есть, нажимаю я кнопку или нет, база данных всё равно обновляется. Хотелось бы чтобы это происходило только при нажатии кнопки. Может кто-нибудь знает с чем это может быть связано? Может есть какие-то свойства компонента TDBGrid или TMyQuery, которые влияют на сохранения данных в БД? |
|||
|
||||
ZVano |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Вероятно, нужно использовать режим кешированых изменений.
У набора данных свойство CachedUpdates = true. Общий алгоритм работы: 1. Загружаем данные в набор данных. 2. Редактируем их ()
3. По клику "Сохранить" пробегаемся по набору данных и выполняем запросы к БД. 3.1 Провряем были или нет изменения if (!myDataSet->Modified){ //изменений не было return; } ... 3.2 Выполняем изменения
3.3 Переоткрываем набор данных myDataSet->CancelUpdates(); myDataSet->Close(); myDataSet->Open(); Должен быть более правильный способ. Но этот тоже работает. -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
||||
|
|||||
_Dimon_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: 1 Всего: 1 |
||||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Это понятно - транзакции необходимая часть для любого приложения, которое работает с БД. Но я имел ввиду способ, при котором изменения ложатся в БД при вызове метода ApplyUpdates. В таком случае не нужно никаких циклов, проверок и т.д. Компоненті сами знают что делать. Если не ошибаюсь: В ADO это автоматом работает (система ищет записи по совокупности полей); В IBX нужно сгенерировать шаблоны SQL-запросов в компоненте TIBDataset, либо TIBUpdateSql. -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |