Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для edsjeka
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386

Разобраться с транзакциями MySQL+dbExpress

04.05.2016, 18:01. Показов 2263. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно разобраться как использовать транзакции, теорию почитал, теперь хотелось бы на практике научится.
Есть такой код, ввод в БД через форму. Подскажите куда вставлять и что, чтобы работали транзакции.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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;
end;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.05.2016, 18:01
Ответы с готовыми решениями:

Проблема с транзакцией MySql + dbExpress
Доброго времени суток! В процессе разработки появилась потребность в использовании транзакции, выбрал явный метод. И все бы хорошо но...

С++ Builder (dbExpress) + MySQL
Приветствую всех. Нуждаюсь в помощи. Нужна информация\гайды\книги\etc по компонентам класса dbExpress. (интересует, работа с...

Помогите с dbexpress и mysql
Я всё настроил и когда хочу поставить SqlConnection.Connected := true(в коде, в настройках - без разницы) вылетает ошибка: Рядом с...

20
 Аватар для edsjeka
8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
08.05.2016, 21:07  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от harrybook Посмотреть сообщение
Вы ленитесь работать с документацией.
Я не ленюсь работать с документацией. Найдите мне пожалуйста документацию как работать с транзакциями в dbExpress+MySQL или хоть один наглядный код и я заберу свои слова обратно. Только не надо давать ссылки на транзакции в ADO.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.05.2016, 21:07

DBExpress+DDL MySQL
Пытаюсь выполнить DDL скрипт создания БД в MySQL через dxExpress, используя метод TSQLConnection ExecuteDirect. Если в скрипте...

Соединить приложение с СУБД MySQL через компоненту dbExpress
Хочу соединить некое приложение с СУБД MySQL через компоненту dbExpress. MySQL версии 5.1.73-community. С++Builder Enterprise Suite Version...

Бубны Borland C++ XE в составе RADStudio + dbExpress + Mysql сервер версии 5 и выше!
Собственно вопрос в теме, как реализовать коннект в RADStudio-ском Borland C++ через dbExpress к MySQL серверу версии 5 и выше? Все...

Пожалуйста нужно разобраться с запросом Mysql! Одним запросом из двух таблиц / MySQL
У меня на главной странице существует вот такой запрос (он ниже), который вытаскивает из таблицы "glavnaya" нужные строки. ...

Управление транзакциями в С++
Нужно реализовать управление транзакциями в с++. А именно работу с 2мя структурами в файле.Вопросы возникают при поиске по файлу и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний против массовых профанаций
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru