|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.05.2016, 18:50 | #1 |
Пользователь
Регистрация: 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; |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |