Topic: SOS!!! 3-й день топчусь на месте
Добрый день.
3-й день не могу сдвинуться с места. Пожалуйста посмотрите процедуру.
Вариант рабочий.
procedure frmAddSch1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
if frmAddSch1.dbAction = 'NewRecord' then frmAddSch1.Tag := 1 else frmAddSch1.Tag := 0;
end;
procedure frmAddSch1_Button1_OnAfterClick (Sender: TObject);
var
vyrab_otp: string;
begin
if frmAddSch1.Tag = 1 then
begin
vyrab_otp := SQLExecute('SELECT IFNULL(vyrab_otp, 0) FROM sch LEFT OUTER JOIN print ON print.id=sch.id_print WHERE sch.id = ' + IntToStr(frmAddSch1.Button1.dbGeneralTableId));
if ValidInt(vyrab_otp) then SQLExecute ('INSERT INTO res (res, date,id_print, id_sch) VALUES('+IntToStr(Trunc(frmAddSch1.Edit1.Value) - StrToInt(vyrab_otp))+', now(), ' + IntToStr(idprint)+', '+ IntToStr(frmAddSch1.Button1.dbGeneralTableId)+')');
end;
end;
Теперь нужно еще в одну колонку res1 добавить запись. В данную колонку должен записываться расчет (Trunc) 1-е значение frmAddSch1.Edit1.Value, 2-е значение - Max значение счетчика (sch) при замене картриджа id_priznzam=2
Пробую ввести переменную pok_k
pok_k := SQLExecute('SELECT (Max(sch)) FROM sch WHERE id_priznzam = (2) AND id_print = ' + IntToStr(idprint));
B итоге получилось. Можно так делать или нет?
procedure frmAddSch1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
if frmAddSch1.dbAction = 'NewRecord' then frmAddSch1.Tag := 1 else frmAddSch1.Tag := 0;
end;
procedure frmAddSch1_Button1_OnAfterClick (Sender: TObject);
var
vyrab_otp: string;
pok_k: string;
begin
if frmAddSch1.Tag = 1 then
begin
vyrab_otp := SQLExecute('SELECT IFNULL(vyrab_otp, 0) FROM sch LEFT OUTER JOIN print ON print.id=sch.id_print WHERE sch.id = ' + IntToStr(frmAddSch1.Button1.dbGeneralTableId));
pok_k := SQLExecute('SELECT (Max(sch)) FROM sch WHERE id_priznzam = (2) AND id_print = ' + IntToStr(idprint));
if ValidInt(vyrab_otp) and ValidInt(pok_k) then SQLExecute ('INSERT INTO res (res, date,id_print, id_sch, res1) VALUES('+IntToStr(Trunc(frmAddSch1.Edit1.Value) - StrToInt(vyrab_otp))+', now(), ' + IntToStr(idprint)+', '+ IntToStr(frmAddSch1.Button1.dbGeneralTableId)+', '+IntToStr(Trunc(frmAddSch1.Edit1.Value) - StrToInt(pok_k))+')');
end;
end;
Ошибок нет, но в поле res1 проставляется нулевое значение 0/
Если ошибка в написании и так делать можно, то хотелось бы еще добавить условие в последний расчет если '+IntToStr(Trunc(frmAddSch1.Edit1.Value) - StrToInt(pok_k))+'. Что если id_priznzam <> (2), то записываем в res1 ноль (res1=0).