|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Не работает UPDATE
Есть 3 таблицы на форме и в базе, которые нужно обновить. После выполнения следующего кода на форме остаются 3 таблицы, которые превращаются каждая в одну единственную пустую ячейку.
Что я делаю не так? Я в первый раз работаю с базами, поэтому ищу самые простые варианты. Код:
procedure change_db(t_l:string; t_f, t_b, s_q:integer); {t_l - название материала t_f - новое значение в ячейке таблицы tank_f t_b - новое значение в ячейке таблицы tank_b s_q - номер записи, совпадает во всех 3-х таблицах} var i,j,g:string; begin {ADOQuery3 отображает на форме таблицу, которую надо обновить ADOQuery3 - select * from tank_f; } i:='UPDATE tank_f SET tank_f.free = :t_f WHERE (((tank_f.tank)=:s_q))'; form1.ADOQuery3.SQL.Text:=i; Form1.ADOQuery3.ExecSQL; {ADOQuery5 отображает на форме таблицу, которую надо обновить ADOQuery5 - select * from tank_b; } j:='UPDATE tank_b SET tank_b.busy = :t_b WHERE (((tank_b.tank)=:s_q))'; form1.ADOQuery5.SQL.Text:=j; form1.ADOQuery5.ExecSQL; {ADOQuery4 отображает на форме таблицу, которую надо обновить ADOQuery4 - select * from tank_liquid; } g:= 'UPDATE tank_liquid SET tank_liquid.liquid = :t_l WHERE (((tank_liquid.tank)=:s_q))'; form1.ADOQuery4.SQL.Text:=g; form1.ADOQuery4.ExecSQL; end; procedure add_to_H1(x:integer); var i:integer; begin for i:=low(tank_f) to high(tank_f) do begin if (x>0) and (tank_b[i]=0) and (tank_f[i]=50) then begin x:=x-tank_f[i]; tank_b[i]:=tank_f[i]; t_b:=tank_b[i]; tank_f[i]:=0; t_f:=tank_f[i]; sq:=i; change_db(material,t_f,t_b,sq); //material - глобальная переменная end; end; end; Последний раз редактировалось Admin, 17.06.2010 в 13:18. |
#2
|
||||
|
||||
ADOQuery3,4,5 - эти компоненты у вас отображают таблицы через SELECT, но когда вы заменяете SELECT на UPDATE, то естественно таблицы пропадают, обновляйте компонентом ADOCommand из вкладки ADO:
Код:
ADOCommand1.CommandText := 'UPDATE таблица1 SET поле=значение WHERE поле=значение'; ADOCommand1.Execute; ADOCommand1.CommandText := 'UPDATE таблица2 SET поле=значение WHERE поле=значение'; ADOCommand1.Execute; // и т.д. Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel Последний раз редактировалось Marvel, 18.06.2010 в 05:30. |