我给公司用VB+SQL 开发一个类似于用友财务软件的管理系统,其中里面有个功能需要用到存储过程,求余款,例如:
  日期        客户名称          应收货款         实收货款        余款
2005-05-10     A                10000            9000           -1000
2005-05-10     B                5000             3200           -1800
2005-05-11     A                8000             7500           -1500
2005-05-11     B                7000             6000           -2500
2005-05-12     A                9000             10000          -500
2005-02-12     B                5600             6000           -2100
2005-05-13     A                5000             3000           -2500
2005-05-13     C                8000             7000           -1000
2005-05-14     B                5000             6000           -1100
2005-05-14     C                6000             3000           -4000
要求按客户名称进行筛选,
第一条记录的(A):余款 =(A) 应收货款 - (A) 实收货款
第二条记录的(A):余款 = (A第一条记录的)余款 + (A第二条记录的)应收货款 - (A第二条记录的)实收货款
第三条记录的(A):余款 = (A第二条记录的)余款 + (A第三条记录的)应收货款 - (A第三条记录的)实收货款第一条记录的(B):余款 =(B) 应收货款 - (B) 实收货款
第二条记录的(B):余款 = (B第一条记录的)余款 + (B第二条记录的)应收货款 - (B第二条记录的)实收货款
第三条记录的(B):余款 = (B第二条记录的)余款 + (B第三条记录的)应收货款 - (B第三条记录的)实收货款第一条记录的(C):余款 =(C) 应收货款 - (C) 实收货款
第二条记录的(C):余款 = (第一条记录的)余款 + (C第二条记录的)应收货款 - (C第二条记录的)实收货款
第三条记录的():余款 = (第二条记录的)余款 + (C第三条记录的)应收货款 - (C第三条记录的)实收货款如果新增一条记录,客户名称为(A),保存的时候,系统就会先查询(A客户)上次的余款+本次的(应收货款)-本次的(实收货款)=本次的(余款)   进行保存,如此类推客户(B,C,D ......)都可以

解决方案 »

  1.   

    这个操作好像用不上存储过程吧!
    你给这个表设置一个id,然后你要做这个操作的时候,首先找到id最大的a客户,然后做一个运算后插入就好了啊!
    id最大的问题可以使用 order by id desc 来实现了!
      

  2.   

    加了id的表如下:日期        客户名称          应收货款         实收货款        余款    ID2005-05-10  A          10000.00 9000.00 -1000.00 1
    2005-05-10  B          5000.00 3200.00 -1800.00 2
    2005-05-11  A          8000.00 7500.00 -1500.00 3
    2005-05-11  B          7000.00 6000.00 -2500.00 4
    2005-05-12  A          9000.00 10000.00 -500.00 5
    2005-02-12  B          5600.00 6000.00 -2100.00 6
    2005-05-13  A          5000.00 3000.00 -2500.00 7
    2005-05-13  C          8000.00 7000.00 -1000.00 8
    2005-05-14  B          5000.00 6000.00 -1100.00 9
    2005-05-14  C          6000.00 3000.00 -4000.00 10比如现在要加A客户,我们可以使用这个语句:
    select top 1 * from yk where 客户名称='a' order by id desc
    得到这个查询结果:日期        客户名称          应收货款         实收货款        余款    ID2005-05-13     A          5000.00 3000.00 -2500.00 7从查询结果里面我们可以得到余款为 -2500.00,记录到变量 YK 里面(如果a客户在数据库中不存在,也就是说查询结果为空的话,那么得到的YK 就为0!)
    假设A客户现在又增加 应收货款 4000.00 ,其中实收为 3600.00 ,而这两个数值是我们知道的,那么我们就可以写如下语句往数据库里面添加一条记录:
    insert into yk values('2005-05-19','A',4000,3600,-2500+4000-3600)
    其中 '2005-05-19' 是我们知道的时间,客户名称是我们知道的,4000和3600都是我们知道的,最后一个 -2500+4000-3600 在程序中就可以这样写:
    yk+4000-3600