Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2014, 12:53   #1
User_IR_An
Пользователь
 
Регистрация: 08.04.2014
Сообщений: 26
По умолчанию Сохранение БД

Люди добрые, помогите. Есть форма на ней pagecontrol и не сколько вкладок с таблицами базы данных. Как организовать их сохранение. Делала транзакции, но как поняла несколько транзакции сразу не получается сделать. Вот пример кода, как сделать чтоб сохранялись Adoquery_1 и Adoquery_2
Код:
 case messageBox(Handle,'Сохранить изменения в БД перед выходом?','Выход', mb_YesNoCancel+mb_IconQuestion) of
    IDYES:
        begin
            Adoquery_1.Connection.CommitTrans;  //завершение транзакции и сохранение изменений
            Adoquery_2.Connection.CommitTrans;
               CanClose := True;    //Закрытие формы
            Menu1.Show;         //Открытие главнного меню
        end;
    IDNO:
        begin
            Adoquery_1.Connection.RollbackTrans; //завершение транзакции и НЕ сохранение изменений
            Adoquery_2.Connection.RollbackTrans;
            CanClose := True;                  //Закрытие формы
            Menu1.Show;                       //Открытие главнного меню
        end;
    IDCANCEL:
            canClose := false;        //Отмена закрытия формы
  end;
User_IR_An вне форума Ответить с цитированием
Старый 11.04.2014, 12:58   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Данные в БД сохраняются после вызова метода Post. Поэтому сохранять БД при выходе совершенно не нужно. Тем более, с помощью транзакций.
Streletz вне форума Ответить с цитированием
Старый 11.04.2014, 13:08   #3
User_IR_An
Пользователь
 
Регистрация: 08.04.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Данные в БД сохраняются после вызова метода Post. Поэтому сохранять БД при выходе совершенно не нужно. Тем более, с помощью транзакций.
Без транзакции, в данном случае я не знаю как сделать, потому что она мне нужна для того, что бы если человек что то "накосячил" и решил закрыть не сохраняя данные, а без транзакции срабатывает автосохранение при переходе на другую строчку Dbgrid, как его убрать не нашла способа
User_IR_An вне форума Ответить с цитированием
Старый 11.04.2014, 13:29   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Делала транзакции, но как поняла несколько транзакции сразу не получается сделать.
Какая СУБД?
Проверьте запросы в ADOQuery. Вполне возможно, что 2 ADOQuery берут данные частично из одних и тех же таблиц. Вследствие этого могут возникать взаимные блокировки транзакций.
Streletz вне форума Ответить с цитированием
Старый 11.04.2014, 13:39   #5
User_IR_An
Пользователь
 
Регистрация: 08.04.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Какая СУБД?
Проверьте запросы в ADOQuery. Вполне возможно, что 2 ADOQuery берут данные частично из одних и тех же таблиц. Вследствие этого могут возникать взаимные блокировки транзакций.
База Access. Нет Query берут значения из разных, причем не связных
User_IR_An вне форума Ответить с цитированием
Старый 11.04.2014, 13:41   #6
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от User_IR_An Посмотреть сообщение
База Access. Нет Query берут значения из разных, причем не связных
Как реализовано подключение к БД? У этих ADOQuery компонент ADOConnection общий?
Streletz вне форума Ответить с цитированием
Старый 11.04.2014, 13:43   #7
User_IR_An
Пользователь
 
Регистрация: 08.04.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Как реализовано подключение к БД? У этих ADOQuery компонент ADOConnection общий?
Подключение Adoconnection, datasourse, adoquery.
Adoconnection общий на все таблицы
User_IR_An вне форума Ответить с цитированием
Старый 11.04.2014, 13:52   #8
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Adoconnection общий на все таблицы
Если ADOConnection общий для всех ADOQuery, то тогда для всех них и 1 общая транзакция.
В таких случаях, ИМХО, транзакции лучше делать средствами ADOConnection.
Подробнее можно посмотреть здесь:
Соединение с помощью компонента ADOConnection. Управление транзакциями
Streletz вне форума Ответить с цитированием
Старый 11.04.2014, 14:00   #9
User_IR_An
Пользователь
 
Регистрация: 08.04.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Если ADOConnection общий для всех ADOQuery, то тогда для всех них и 1 общая транзакция.
В таких случаях, ИМХО, транзакции лучше делать средствами ADOConnection.
Подробнее можно посмотреть здесь:
Соединение с помощью компонента ADOConnection. Управление транзакциями
Большое Спасибо за помощь, сейчас попробую реализовать.
User_IR_An вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение qpuTuJlb Помощь студентам 1 22.04.2013 21:57
Сохранение в БД Волк C# (си шарп) 2 05.11.2012 00:56
Сохранение TheSun Помощь студентам 0 28.11.2011 00:29
Сохранение БД Andrey174rus Общие вопросы Delphi 12 12.10.2009 23:56
Сохранение Патрон Общие вопросы Delphi 21 14.12.2008 14:23