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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.08.2009, 14:48   #1
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию работа с транзакциями

Привет!
Помогите разобраться с транзакциями. В БД добавляю инф-ю:
Код:
 
  q.Connection:=adoconnection1;
    q.SQL.Add('INSERT "MYTABLE);
    q.SQL.Add('SELECT ' +  quotedstr(12.05.2009) + ', ' + quotedstr(Объект1)+ ',hour,val');
    q.SQL.Add('FROM TEST');
    q.SQL.Add('WHERE Year ='+ FormatDateTime( 'yyyy',caldatepicker.date) + ' AND Month ='+FormatDateTime( 'mm',caldatepicker.date));
    q.SQL.Add('AND day ='+ FormatDateTime( 'dd', caldatepicker.date));
    q.ExecSQL;
в БД, в той таблице, в которую идет добавление, хранятся первичные ключи.Поэтому при повторном нажатии кнопки на добавление, будет появлятся сообщение об ошибке что нельзя добавить данные, т.к. нарушеие целостности и пр.
Знаю что можно использовать транзакцию, удалить старые данные и записать новые. Как это можно сделать?
kate158 вне форума
Старый 26.08.2009, 15:49   #2
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

сама спросила,сама отвечу
вот код.может.кому понадобится
Код:
  q:= TADOQuery.Create(nil);
   TRY
    if not (adoconnection1.InTransaction) then adoconnection1.BeginTrans;
     //сначала все удаляем
    q.Connection:=adoconnection1;
    q.SQL.Add('DELETE MYTABLE);
    q.SQL.Add('WHERE dateDST ='+ quotedstr(FormatDateTime( 'yyyymmdd',caldatepicker.date)));
    q.ExecSQL;
     //пишем новые данные
    q.SQL.Add('INSERT MYTABLE');
    q.SQL.Add('SELECT ' +  quotedstr(FormatDateTime( 'yyyymmdd',caldatepicker.date)) + ,hour,val');
    q.SQL.Add('FROM TEST');
    q.SQL.Add('WHERE Year ='+ FormatDateTime( 'yyyy',caldatepicker.date) + ' AND Month ='+FormatDateTime( 'mm',caldatepicker.date));
    q.SQL.Add('AND day ='+ FormatDateTime( 'dd', caldatepicker.date);
    q.ExecSQL;
    adoconnection1.CommitTrans;
 except
    adoconnection1.RollbackTrans;
    ShowMessage('Скопировать не удалось!');
  end;
kate158 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. 0101 Помощь студентам 3 17.12.2009 23:57
управление транзакциями Ary БД в Delphi 11 30.03.2008 17:33