以下是我的程序中,复核入库单时关于修改库存数部分的代码! 1.首先在 dw_1 中读入所有未复核的入库单 2.对本次要复核的入库单作复核标志 3.对某张要复核的入库单的明细进行处理(思路与楼主相同)long lo_hs,lo_hh, i,j,k string ls_hh,ls_kchh,ls_ckbh,ls_dw real re_sl,re_rkdj integer in_hh lo_hs=parent.dw_1.rowcount() //未复核的入库单数for i = 1 to lo_hs if parent.dw_1.getitemstring(i,'hd')='1' then //判断是否复核该入库单 ls_hh =parent.dw_1.getitemstring(i,'dh') //读第 i 张入库单单号 ls_ckbh=parent.dw_1.getitemstring(i,'jxc_ylrkh_ylkbh') //读入库的仓库编号 update jxc_ylrkh set hd='1' ,hdr=:gs_work_name where dh=:ls_hh; //置该入库单为已核并填入复核人 //select count(dh) into :lo_hh from jxc_ylrkd where dh=:ls_hh; select max(hh) into :lo_hh from jxc_ylrkd where dh=:ls_hh ; //求该入库单明细表(jxc_ylrkd)的总行数 for j = 1 to lo_hh select count(ylbh) into :in_hh from jxc_ylrkd where hh=:j and dh=:ls_hh; //判断该行是否为空行 if not in_hh=0 then select ylbh,sl into :ls_kchh,:re_sl from jxc_ylrkd where hh=:j and dh=:ls_hh; //第 j 行的入库原料编号和数量 select count(ylbh) into :k from jxc_ylkc where ylbh=:ls_kchh and ckbh=:ls_ckbh; //判断某原料在本仓库的库存表中是否有记录,如果无记录,插入该原料的基本资料 select yl_dw,yl_rkj into :ls_dw,:re_rkdj from jxc_yl where yl_id=:ls_kchh; insert into jxc_ylkc(ckbh,ylbh,dw,sl,rkdj) values (:ls_ckbh,:ls_kchh,:ls_dw,0,:re_rkdj ); end if update jxc_ylkc set jxc_ylkc.sl=jxc_ylkc.sl+:re_sl from jxc_ylkc,jxc_ylrkd & where jxc_ylkc.ylbh=:ls_kchh and jxc_ylrkd.hh=:j and ckbh=:ls_ckbh; //更新库存 end if end for end if end for commit;
1.首先在 dw_1 中读入所有未复核的入库单
2.对本次要复核的入库单作复核标志
3.对某张要复核的入库单的明细进行处理(思路与楼主相同)long lo_hs,lo_hh, i,j,k
string ls_hh,ls_kchh,ls_ckbh,ls_dw
real re_sl,re_rkdj
integer in_hh
lo_hs=parent.dw_1.rowcount() //未复核的入库单数for i = 1 to lo_hs
if parent.dw_1.getitemstring(i,'hd')='1' then //判断是否复核该入库单
ls_hh =parent.dw_1.getitemstring(i,'dh') //读第 i 张入库单单号
ls_ckbh=parent.dw_1.getitemstring(i,'jxc_ylrkh_ylkbh') //读入库的仓库编号
update jxc_ylrkh set hd='1' ,hdr=:gs_work_name where dh=:ls_hh; //置该入库单为已核并填入复核人
//select count(dh) into :lo_hh from jxc_ylrkd where dh=:ls_hh;
select max(hh) into :lo_hh from jxc_ylrkd where dh=:ls_hh ; //求该入库单明细表(jxc_ylrkd)的总行数
for j = 1 to lo_hh
select count(ylbh) into :in_hh from jxc_ylrkd where hh=:j and dh=:ls_hh; //判断该行是否为空行
if not in_hh=0 then
select ylbh,sl into :ls_kchh,:re_sl from jxc_ylrkd where hh=:j and dh=:ls_hh; //第 j 行的入库原料编号和数量
select count(ylbh) into :k from jxc_ylkc where ylbh=:ls_kchh and ckbh=:ls_ckbh; //判断某原料在本仓库的库存表中是否有记录,如果无记录,插入该原料的基本资料
select yl_dw,yl_rkj into :ls_dw,:re_rkdj from jxc_yl where yl_id=:ls_kchh;
insert into jxc_ylkc(ckbh,ylbh,dw,sl,rkdj) values (:ls_ckbh,:ls_kchh,:ls_dw,0,:re_rkdj );
end if
update jxc_ylkc set jxc_ylkc.sl=jxc_ylkc.sl+:re_sl from jxc_ylkc,jxc_ylrkd &
where jxc_ylkc.ylbh=:ls_kchh and jxc_ylrkd.hh=:j and ckbh=:ls_ckbh; //更新库存
end if
end for
end if
end for commit;