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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2016, 18:50   #1
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию Разобраться с транзакциями MySQL+dbExpress - Delphi БД

Нужно разобраться как использовать транзакции, теорию почитал, теперь хотелось бы на практике научится.
Есть такой код, ввод в БД через форму. Подскажите куда вставлять и что, чтобы работали транзакции.

Код HTML:
procedure TFMSrochnKart.BitBtn1Click(Sender: TObject);
var art, kom, zayav, tech_rab, komm: string;
    maxid, md, kl, pr, mas, vid, idrab, i: integer;
    today: TDateTime;
begin
art:=Edit1.Text;
 zayav:=Edit2.Text;
 DataModule1.SQLQuery1.Active:=false;
 DataModule1.SQLQuery1.SQL.Text:='Select IDModelCartridga From SprModeleyCartridgey' +
 ' Where ModelCartridga = "'+ComboBox1.Text+'"';
 DataModule1.SQLQuery1.Active:=true;
 md:=DataModule1.SQLQuery1.FieldByName('IDModelCartridga').Value;

 DataModule1.SQLQuery1.Active:=false;
 DataModule1.SQLQuery1.SQL.Text:='Select IDKlienta From SprKlientov' +
 ' Where NameKlient = "'+ComboBox2.Text+'"';
 DataModule1.SQLQuery1.Active:=true;
 kl:=DataModule1.SQLQuery1.FieldByName('IDKlienta').Value;

  DataModule1.SQLQuery1.Active:=false;
 DataModule1.SQLQuery1.SQL.Text:='Select IDManager From SprManager' +
 ' Where Manager = "'+ComboBox4.Text+'"';
 DataModule1.SQLQuery1.Active:=true;
  pr:=DataModule1.SQLQuery1.FieldByName('IDManager').Value;

  DataModule1.SQLQuery1.Active:=false;
 DataModule1.SQLQuery1.SQL.Text:='Select IDManager From SprManager' +
 ' Where Manager = "'+ComboBox5.Text+'"';
 DataModule1.SQLQuery1.Active:=true;
  vid:=DataModule1.SQLQuery1.FieldByName('IDManager').Value;


  today:=Now;
 DataModule1.SQLQuery1.Active:=false;
 DataModule1.SQLQuery1.SQL.Text:='Insert Into Cartridgi (IDModelCartridga, IDMastera, DateRabot, Articul, Numzayavki,'+
 ' IDKlienta, IDMestaRabot, IDManagerPrin, DatePriema, DateVidachi, IDManagerVidal, IdStatusa, Komments) Values (:mymod, :mymas, :mydatr, :myart, :mynumz, '+
 ' :mykl, :mymest, :mypr, :mydatp, :mydatv, :myvid, :mystat, "'+Memo1.Lines.Text+'")';

   DataModule1.SQLQuery1.Params.ParamByName('mymod').Value:=IntToStr(md);
   DataModule1.SQLQuery1.Params.ParamByName('mymas').Value:=idus;
   DataModule1.SQLQuery1.Params.ParamByName('mydatr').Value:=today;
   DataModule1.SQLQuery1.Params.ParamByName('myart').Value:=art;
   DataModule1.SQLQuery1.Params.ParamByName('mynumz').Value:=zayav;
   DataModule1.SQLQuery1.Params.ParamByName('mykl').Value:=IntToStr(kl);
   DataModule1.SQLQuery1.Params.ParamByName('mymest').Value:='1';
   DataModule1.SQLQuery1.Params.ParamByName('mypr').Value:=IntToStr(pr);
   DataModule1.SQLQuery1.Params.ParamByName('mydatp').Value:=today;
   DataModule1.SQLQuery1.Params.ParamByName('mydatv').Value:=today;
   DataModule1.SQLQuery1.Params.ParamByName('myvid').Value:=IntToStr(vid);
   DataModule1.SQLQuery1.Params.ParamByName('mystat').Value:='4';


  DataModule1.SQLQuery1.ExecSQL;



  //заполнение работ в базу из CheckBoxa
     for I:= 0 to CheckListBox1.Items.Count - 1  do  // цикл по CheckListBox1
         begin
          if CheckListBox1.Checked[I] = true then
           begin
               DataModule1.SQLQuery3.Active:=false;
               DataModule1.SQLQuery3.SQL.Text:='SELECT *'+
               ' FROM sprrabot WHERE Rabota ="'+CheckListBox1.Items[i]+'"';
               DataModule1.SQLQuery3.Active:=true;
               idrab:=DataModule1.SQLQuery3.FieldByName('IdRabot').Value;

               DataModule1.SQLQuery2.Active:=false;
               DataModule1.SQLQuery2.SQL.Text:='SELECT * FROM cartridg_raboti'+
               ' WHERE cartridg_raboti.IDCartridga = '+ IntToStr(curID)+' AND cartridg_raboti.IDRabot = '+ IntToStr(IDrab);
               DataModule1.SQLQuery2.Active:=true;

               if DataModule1.SQLQuery2.RecordCount>0 then
                begin
                end
              else
               begin


                DataModule1.SQLQuery3.Active:=false;
                DataModule1.SQLQuery3.SQL.Text:='Insert Into Cartridg_Raboti (IDCartridga, IDRabot) Values ('+inttostr(curID)+','+IntToSTR(IDrab)+')';
                DataModule1.SQLQuery3.ExecSQL;

               end;



           end
           else
           begin
               DataModule1.SQLQuery3.Active:=false;
               DataModule1.SQLQuery3.SQL.Text:='SELECT *'+
               ' FROM sprrabot WHERE Rabota ="'+CheckListBox1.Items[i]+'"';
               DataModule1.SQLQuery3.Active:=true;
               idrab:=DataModule1.SQLQuery3.FieldByName('IdRabot').Value;

               DataModule1.SQLQuery2.Active:=false;
               DataModule1.SQLQuery2.SQL.Text:='SELECT * FROM cartridg_raboti'+
               ' WHERE cartridg_raboti.IDCartridga = '+ IntToStr(curID)+' AND cartridg_raboti.IDRabot = '+ IntToStr(IDrab);
               DataModule1.SQLQuery2.Active:=true;

               if DataModule1.SQLQuery2.RecordCount>0 then
                begin

                DataModule1.SQLQuery3.Active:=false;
                DataModule1.SQLQuery3.SQL.Text:='DELETE FROM Cartridg_Raboti WHERE IDCartridga='+IntToSTR(curID)+' AND IDRabot='+IntToStr(IDrab);
                DataModule1.SQLQuery3.ExecSQL;

                end;
           end;



         end;

MessageDlg('Картридж внесен в БД со статусом "Выдан".', mtInformation, [mbOk], 0);

  FMSrochnKart.Close;


end;
edsjeka вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL, dbExpress, auto_increment davidoff_pk БД в Delphi 5 25.01.2012 11:01
MySQL, dbExpress, Не работает Select lexastik БД в Delphi 0 02.09.2011 17:43
Не могу разобраться с соединением MySQL и Delphi 7 rockedit БД в Delphi 4 08.12.2009 17:53
BLOB+Mysql+DbExpress Квэнди БД в Delphi 3 02.03.2007 18:01