level 1
cwarr
楼主
销售软件根据销售表更新动态库存,做了个程序感觉速度很慢,哪位能给指点下呢?
代码:
procedure TFormXS_XSD.WriteKC(Sender : TObject); //写入库存
var s:string;i:Integer;
begin
ADOQuery1.DisableControls;
try
ADOQuery1.First;
for i := 0 to ADOQuery1.RecordCount - 1 do
begin
with ADOQuery2 do
begin
s:='UPDATE KC_DTB set KCSL=KCSL-:SL,KCJE=KCJE-:JE';
s:=s+','+'C'+''+ADOQuery1.FieldByName('CMXH').AsString+''+'='+ //尺码不同每条记录不一定相同
'C'+''+ADOQuery1FieldByName('CMXH').AsString+''+'-:'+'C'+
''+ADOQuery1.FieldByName('CMXH').AsString+'';
s:=s+' where CKBM=:CKBM and SPBM=:SPBM and YSBM=:YSBM ';
Close;
SQL.Clear;
SQL.Add(s);
Parameters.ParamByName('CKBM').Value:=DBLookupComboboxEh_CK.Value;
Parameters.ParamByName('SPBM').Value:=ADOQuery1.FieldByName('SPBM').AsString;
Parameters.ParamByName('YSBM').Value:=ADOQuery1.FieldByName('YSBM').AsString;
Parameters.ParamByName('SL').Value:=ADOQuery1.FieldByName('SL').AsFloat;
Parameters.ParamByName('JE').Value:=ADOQuery1.FieldByName('XSCB').AsFloat;
Parameters.ParamByName('C'+''+ADOQuery1.FieldByName('CMXH').AsString+'').Value:=
ADOQuery1.FieldByName('C'+''+ADOQuery1.FieldByName('CMXH').AsString+'').AsInteger;
ExecSQL;
end;
ADOQuery1.Next;
end;
finally
ADOQuery1.EnableControls;
end;
end;
这样循环更改是不是很笨啊,可其他方法参数怎么搞实在头疼,自学的,求大师指点。
2020年06月08日 16点06分
1
代码:
procedure TFormXS_XSD.WriteKC(Sender : TObject); //写入库存
var s:string;i:Integer;
begin
ADOQuery1.DisableControls;
try
ADOQuery1.First;
for i := 0 to ADOQuery1.RecordCount - 1 do
begin
with ADOQuery2 do
begin
s:='UPDATE KC_DTB set KCSL=KCSL-:SL,KCJE=KCJE-:JE';
s:=s+','+'C'+''+ADOQuery1.FieldByName('CMXH').AsString+''+'='+ //尺码不同每条记录不一定相同
'C'+''+ADOQuery1FieldByName('CMXH').AsString+''+'-:'+'C'+
''+ADOQuery1.FieldByName('CMXH').AsString+'';
s:=s+' where CKBM=:CKBM and SPBM=:SPBM and YSBM=:YSBM ';
Close;
SQL.Clear;
SQL.Add(s);
Parameters.ParamByName('CKBM').Value:=DBLookupComboboxEh_CK.Value;
Parameters.ParamByName('SPBM').Value:=ADOQuery1.FieldByName('SPBM').AsString;
Parameters.ParamByName('YSBM').Value:=ADOQuery1.FieldByName('YSBM').AsString;
Parameters.ParamByName('SL').Value:=ADOQuery1.FieldByName('SL').AsFloat;
Parameters.ParamByName('JE').Value:=ADOQuery1.FieldByName('XSCB').AsFloat;
Parameters.ParamByName('C'+''+ADOQuery1.FieldByName('CMXH').AsString+'').Value:=
ADOQuery1.FieldByName('C'+''+ADOQuery1.FieldByName('CMXH').AsString+'').AsInteger;
ExecSQL;
end;
ADOQuery1.Next;
end;
finally
ADOQuery1.EnableControls;
end;
end;
这样循环更改是不是很笨啊,可其他方法参数怎么搞实在头疼,自学的,求大师指点。