dbgrideh中的结构如下单据号 入库数量 出库数量 进价 售价 结余库存 售价金额
123 200 0 0.8 1 200 200.00
456 100 0 2 3 300 500.00
789 0 200 0.8 1 100 300.00这样解释:结余库存的值永远等于上一行的库存+ or -下一行的数据(如果是入库则+,如果是出库则-)
售价金额也是一样的道理 这个方法真的很奇妙 请大家指点
123 200 0 0.8 1 200 200.00
456 100 0 2 3 300 500.00
789 0 200 0.8 1 100 300.00这样解释:结余库存的值永远等于上一行的库存+ or -下一行的数据(如果是入库则+,如果是出库则-)
售价金额也是一样的道理 这个方法真的很奇妙 请大家指点
begin
qry_spmxz.Open;
qry_spmxz.First;
kcl1:=qry_spmxz.Fields[11].AsInteger;
for i:=1 to qry_spmxz.RecordCount do
begin
qry_spmxz.Edit;if qry_spmxz.FieldByName('djlx').AsString='0' then
begin
kcl2:=kcl1+qry_spmxz.Fields[9].AsInteger;
end;
if qry_spmxz.FieldByName('djlx').AsString='1' then
begin
kcl2:=kcl1-qry_spmxz.Fields[10].AsInteger;
end;
qry_spmxz.FieldByName('kcl').Value:=kcl2;
kcl1:=kcl2;
qry_spmxz.Next;
end;
不知道你的表结构如何?
//示意代码
SELECT *,
金额=(SELECT SUM(CASE WHEN djlx=0 THEN 1*结余金额 ELSE -1*结余金额 ) FROM TABLE1 WHERE ID<A.ID)
FROM TABLE1 A
insert @t select 1,100,1
union all select 2,200,0
union all select 3,300,1select *,
balance=(select sum(case when c=1 then 1*b else -1*b end) from @t where id<=A.id)from @t A