adoquery7.First;
while (not adoquery7.eof) do
begin //0
try
adoquery6.Append;
adoquery6.edit;
cwhcode:=adoquery7.fieldbyname('cwhcode').value; //仓库编码
//cwhname:=F_function.get_value_string('Warehouse','cWhCode',cWhCode,'cWhName');//仓库名称
cInvCode:=adoquery7.fieldbyname('cInvCode').value; //存货编码
//cBatch:=adoquery7.fieldbyname('cBatch').value; //批号
adoquery6.FieldByName('autoid').value:=adoquery7.fieldbyname('autoid').value;
adoquery6.FieldByName('仓库').value:=cwhname;
adoquery6.FieldByName('日期').value:=adoquery7.fieldbyname('ddate').value;
adoquery6.FieldByName('单据类型').value:=adoquery7.fieldbyname('type').value;
adoquery6.FieldByName('是否为入库').value:=adoquery7.fieldbyname('is_rk').value;
adoquery6.FieldByName('存货编码').value:=adoquery7.fieldbyname('cInvCode').value;
{adoquery6.FieldByName('存货名称').value:=F_function.get_value_string('inventory','cInvCode',cInvCode,'cInvName');
adoquery6.FieldByName('客户').value:=F_function.get_value_string('customer','cCusCode',trim(adoquery7.fieldbyname('cCusCode').value),'cCusAbbName');
adoquery6.FieldByName('供应商').value:=F_function.get_value_string('Vendor','cvenCode',trim(adoquery7.fieldbyname('cVenCode').value),'cvenAbbName');
adoquery6.FieldByName('批号').value:=adoquery7.fieldbyname('cBatch').value;
adoquery6.FieldByName('入库数量').value:=adoquery7.fieldbyname('iQuantity').value;
k:=1;
if (adoquery7.fieldbyname('iUnitCost').value=null) and (adoquery7.fieldbyname('is_rk').value=1) then //如果入库单价数量没填
adoquery6.FieldByName('入库单价').value:=0
else
adoquery6.FieldByName('入库单价').value:=adoquery7.fieldbyname('iUnitCost').value;
k:=2;
adoquery6.FieldByName('发出数量').value:=adoquery7.fieldbyname('iquantity_out').value;
adoquery6.FieldByName('发出单价').value:=adoquery7.fieldbyname('iUnitCost_out').value; if adoquery7.fieldbyname('is_rk').value=1 then //入库
begin
k:=3;
adoquery6.FieldByName('结余数量').value:=F_function.get_qc(cwhname,cInvCode)+F_function.get_rk(cwhname,cInvCode)+adoquery7.fieldbyname('iQuantity').value-F_function.get_ck(cwhname,cInvCode);
IF (F_function.get_price_prior(cwhname,cInvCode,'quantity')+adoquery7.fieldbyname('iQuantity').value)=0 THEN
price:=0
else
price:=(F_function.get_price_prior(cwhname,cInvCode,'money')+adoquery7.fieldbyname('iQuantity').value*adoquery7.fieldbyname('iUnitCost').value)/(F_function.get_price_prior(cwhname,cInvCode,'quantity')+adoquery7.fieldbyname('iQuantity').value);
//(上一次结余金额+入库金额)/(上一次结余+入库数量)
end
else
if adoquery7.fieldbyname('is_rk').value=0 then //出库
begin
k:=4;
adoquery6.FieldByName('结余数量').value:=F_function.get_qc(cwhname,cInvCode)+F_function.get_rk(cwhname,cInvCode)-F_function.get_ck(cwhname,cInvCode)-adoquery7.fieldbyname('iquantity_out').value; price:=F_function.get_price_prior(cwhname,cInvCode,'price');//取上一次的成本单价
//如果以前没入库,只有退货的话单价就变0了?
end
else
if adoquery7.fieldbyname('is_rk').value=2 then //期初
begin
k:=5;
adoquery6.FieldByName('结余数量').value:=F_function.get_qc(cwhname,cInvCode)+adoquery7.fieldbyname('iQuantity').value;
IF (F_function.get_price_prior(cwhname,cInvCode,'quantity')+adoquery7.fieldbyname('iQuantity').value)=0 THEN
price:=0
else
price:=(F_function.get_price_prior(cwhname,cInvCode,'money')+adoquery7.fieldbyname('iQuantity').value*adoquery7.fieldbyname('iUnitCost').value)/(F_function.get_price_prior(cwhname,cInvCode,'quantity')+adoquery7.fieldbyname('iQuantity').value); end;
}
adoquery6.FieldByName('结余价格').value:=price;
adoquery6.FieldByName('单据号').value:=adoquery7.fieldbyname('cCode').value;
adoquery6.FieldByName('失效日期').value:=adoquery7.fieldbyname('dVDate').value;
adoquery6.FieldByName('备注').value:=adoquery7.fieldbyname('cMemo').value;
k:=6;
adoquery6.UpdateBatch(); //adoquery6.edit;
//price:=F_function.My_get_price_current(cwhname,cInvCode);//移动平均法算成本单价
//adoquery6.FieldByName('结余价格').value:=price; //
//adoquery6.UpdateBatch();
{ if e=1 then
begin
if adoquery7.fieldbyname('is_rk').value=0 then //更新发货单成本单价
begin with ADOQuery_function2 do //u8
begin
Close;
SQL.Text:='update dispatchlists set cdefine26=:price from dispatchlist a ,dispatchlists b where a.dlid=b.dlid '+
'and cdlcode=:cdlcode and cinvcode=:cinvcode and cwhcode=:cwhcode';
Parameters.ParamByName('price').value :=price; //
Parameters.ParamByName('cdlcode').value :=adoquery7.fieldbyname('cCode').value; //单据号
Parameters.ParamByName('cWhCode').value :=cWhCode; //仓库
Parameters.ParamByName('cInvCode').value :=cInvCode; //存货编码
prepared;
ExecSQL;
end;
end;
end;
k:=7;
if cwhcode='08' then //存货档案只更新08仓库
begin//1.0 with ADOQuery_function2 do //u8
begin
Close;
SQL.Text:='update inventory set iInvLSCost=:iInvLSCost where cinvcode=:cinvcode';
Parameters.ParamByName('iInvLSCost').value :=price; // Parameters.ParamByName('cInvCode').value :=cInvCode; //存货编码
prepared;
ExecSQL;
end; end;//1.0
}
k:=8;
except
showmessage(inttostr(k)+',仓库:'+cwhname+'单据类型:'+adoquery7.fieldbyname('type').value+'单据号:'+adoquery7.fieldbyname('cCode').value+'单价:'+floattostr(price));
end; adoquery7.next;
end; //0
while (not adoquery7.eof) do
begin //0
try
adoquery6.Append;
adoquery6.edit;
cwhcode:=adoquery7.fieldbyname('cwhcode').value; //仓库编码
//cwhname:=F_function.get_value_string('Warehouse','cWhCode',cWhCode,'cWhName');//仓库名称
cInvCode:=adoquery7.fieldbyname('cInvCode').value; //存货编码
//cBatch:=adoquery7.fieldbyname('cBatch').value; //批号
adoquery6.FieldByName('autoid').value:=adoquery7.fieldbyname('autoid').value;
adoquery6.FieldByName('仓库').value:=cwhname;
adoquery6.FieldByName('日期').value:=adoquery7.fieldbyname('ddate').value;
adoquery6.FieldByName('单据类型').value:=adoquery7.fieldbyname('type').value;
adoquery6.FieldByName('是否为入库').value:=adoquery7.fieldbyname('is_rk').value;
adoquery6.FieldByName('存货编码').value:=adoquery7.fieldbyname('cInvCode').value;
{adoquery6.FieldByName('存货名称').value:=F_function.get_value_string('inventory','cInvCode',cInvCode,'cInvName');
adoquery6.FieldByName('客户').value:=F_function.get_value_string('customer','cCusCode',trim(adoquery7.fieldbyname('cCusCode').value),'cCusAbbName');
adoquery6.FieldByName('供应商').value:=F_function.get_value_string('Vendor','cvenCode',trim(adoquery7.fieldbyname('cVenCode').value),'cvenAbbName');
adoquery6.FieldByName('批号').value:=adoquery7.fieldbyname('cBatch').value;
adoquery6.FieldByName('入库数量').value:=adoquery7.fieldbyname('iQuantity').value;
k:=1;
if (adoquery7.fieldbyname('iUnitCost').value=null) and (adoquery7.fieldbyname('is_rk').value=1) then //如果入库单价数量没填
adoquery6.FieldByName('入库单价').value:=0
else
adoquery6.FieldByName('入库单价').value:=adoquery7.fieldbyname('iUnitCost').value;
k:=2;
adoquery6.FieldByName('发出数量').value:=adoquery7.fieldbyname('iquantity_out').value;
adoquery6.FieldByName('发出单价').value:=adoquery7.fieldbyname('iUnitCost_out').value; if adoquery7.fieldbyname('is_rk').value=1 then //入库
begin
k:=3;
adoquery6.FieldByName('结余数量').value:=F_function.get_qc(cwhname,cInvCode)+F_function.get_rk(cwhname,cInvCode)+adoquery7.fieldbyname('iQuantity').value-F_function.get_ck(cwhname,cInvCode);
IF (F_function.get_price_prior(cwhname,cInvCode,'quantity')+adoquery7.fieldbyname('iQuantity').value)=0 THEN
price:=0
else
price:=(F_function.get_price_prior(cwhname,cInvCode,'money')+adoquery7.fieldbyname('iQuantity').value*adoquery7.fieldbyname('iUnitCost').value)/(F_function.get_price_prior(cwhname,cInvCode,'quantity')+adoquery7.fieldbyname('iQuantity').value);
//(上一次结余金额+入库金额)/(上一次结余+入库数量)
end
else
if adoquery7.fieldbyname('is_rk').value=0 then //出库
begin
k:=4;
adoquery6.FieldByName('结余数量').value:=F_function.get_qc(cwhname,cInvCode)+F_function.get_rk(cwhname,cInvCode)-F_function.get_ck(cwhname,cInvCode)-adoquery7.fieldbyname('iquantity_out').value; price:=F_function.get_price_prior(cwhname,cInvCode,'price');//取上一次的成本单价
//如果以前没入库,只有退货的话单价就变0了?
end
else
if adoquery7.fieldbyname('is_rk').value=2 then //期初
begin
k:=5;
adoquery6.FieldByName('结余数量').value:=F_function.get_qc(cwhname,cInvCode)+adoquery7.fieldbyname('iQuantity').value;
IF (F_function.get_price_prior(cwhname,cInvCode,'quantity')+adoquery7.fieldbyname('iQuantity').value)=0 THEN
price:=0
else
price:=(F_function.get_price_prior(cwhname,cInvCode,'money')+adoquery7.fieldbyname('iQuantity').value*adoquery7.fieldbyname('iUnitCost').value)/(F_function.get_price_prior(cwhname,cInvCode,'quantity')+adoquery7.fieldbyname('iQuantity').value); end;
}
adoquery6.FieldByName('结余价格').value:=price;
adoquery6.FieldByName('单据号').value:=adoquery7.fieldbyname('cCode').value;
adoquery6.FieldByName('失效日期').value:=adoquery7.fieldbyname('dVDate').value;
adoquery6.FieldByName('备注').value:=adoquery7.fieldbyname('cMemo').value;
k:=6;
adoquery6.UpdateBatch(); //adoquery6.edit;
//price:=F_function.My_get_price_current(cwhname,cInvCode);//移动平均法算成本单价
//adoquery6.FieldByName('结余价格').value:=price; //
//adoquery6.UpdateBatch();
{ if e=1 then
begin
if adoquery7.fieldbyname('is_rk').value=0 then //更新发货单成本单价
begin with ADOQuery_function2 do //u8
begin
Close;
SQL.Text:='update dispatchlists set cdefine26=:price from dispatchlist a ,dispatchlists b where a.dlid=b.dlid '+
'and cdlcode=:cdlcode and cinvcode=:cinvcode and cwhcode=:cwhcode';
Parameters.ParamByName('price').value :=price; //
Parameters.ParamByName('cdlcode').value :=adoquery7.fieldbyname('cCode').value; //单据号
Parameters.ParamByName('cWhCode').value :=cWhCode; //仓库
Parameters.ParamByName('cInvCode').value :=cInvCode; //存货编码
prepared;
ExecSQL;
end;
end;
end;
k:=7;
if cwhcode='08' then //存货档案只更新08仓库
begin//1.0 with ADOQuery_function2 do //u8
begin
Close;
SQL.Text:='update inventory set iInvLSCost=:iInvLSCost where cinvcode=:cinvcode';
Parameters.ParamByName('iInvLSCost').value :=price; // Parameters.ParamByName('cInvCode').value :=cInvCode; //存货编码
prepared;
ExecSQL;
end; end;//1.0
}
k:=8;
except
showmessage(inttostr(k)+',仓库:'+cwhname+'单据类型:'+adoquery7.fieldbyname('type').value+'单据号:'+adoquery7.fieldbyname('cCode').value+'单价:'+floattostr(price));
end; adoquery7.next;
end; //0
解决方案 »
- Application.Restore不起作用了
- 求助确认按钮的代码怎么写
- 哪里有CSDN论坛浏览器下载,http://CoolSlob.ys168.com不能下了
- Rave报表问题!
- 庆祝毕业一年才找到的软件工作,工资才800不到,但是我很开心。希望大家来支持我,愿我越来越强
- 再次请教高手!!100分关于网络数据传输
- 工资统计的问题??急用,分不够可以再加
- 做的发邮件程序发送的邮件是乱码,怎么办
- delphi
- 如何用"动态数组"的方式建立和管理线程?! 固定数组管理线程我解决了!
- 关于Undeclared identifier: 'ConnectTimeout'问题
- ADOTable 条件过滤
感觉应该是几个SQL语句就能完成的事,不知道你写那么长的代码干啥。
后改用先将数据写入到TXT文档中,然后用异构数据库的处理方法一次性导入,包括生成TXT全部共用时6秒到8秒
-----------------------
adoquery7.DisableControls;
adoquery7.First;
while (not adoquery7.eof) do
begin //0
try
adoquery6.Append;
adoquery6.edit; --这一句多余
...............
................
end;
adoquery7.EnableControls;