Есть 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: Пользуемся тегами!