我在  业务发生表主表中记录每次出入库的日期、单据号、采购员、收发标志、库房等公共信息
在业务发生表子表中记录货品编号、数量、金额等信息, 这俩个表通过一个子段连接
主表 .id =子表.id
然后我又作了2个查询:入库子表、出库子表,包含 库房  货品编号  数量  金额  
在生成余额时 我 先生成2个记录集  一个出库  一个入库  (都已经用分组 ,合计 统计出了各个仓库,货品编号 的数量  金额)后又通过2个for  next 循环  从入库记录集中 减去 出库记录集中的每一项这样 入库记录集 1000项  出库记录集  2000项   最多可能会循环  1000 *2000 次 
我觉得会时间太长,在低配置的机子上还可能会死机 
如果  2000个货品  每月 入库2000笔次 出库3000笔次 那。。这还是移动平均法                   For i = 1 To mrc.RecordCount                For z = 1 To rst.RecordCount
                    If rst.Fields("货品编号") = mrc.Fields("货品编号") And rst.Fields("仓库") = mrc.Fields("仓库") Then
                        mrc.Fields("数量总计") = mrc.Fields("数量总计") - rst.Fields("数量总计")
                        Exit For
                    End If
                    rst.MoveNext
                Next                rst.MoveFirst
                mrc.MoveNext
            Next     作分页 又不知道如何作1个月的还好 ,要是12个月的那数据量就太大,查询起来费时 
不知道用友的方案是怎么样的请教教我
   如果用sql2000数据库 能由服务器动态生成这个表吗   就是所有查询都在服务器端完成
  客户端能直接得到结果集吗我的源代码 在附件这中,
我这个问题的代码在《 库存查询》窗口  中  关键代码 与其他的代码关系 不多 
主要是调用了 一个查询函数  usercx 在模块1中
记录集是从mdb查询 :出库子表、入库子表中查的我的博客上有这个代码
http://hlm.xishui.net/blog/blogview.asp?logID=3

解决方案 »

  1.   

    就是我先通过查询得到出入库2个记录集 都包括 字段 :货品编号、数量、库房
    然后用for循环来从入库的记录集中减出出库的的数量如:入库记录集mrc
    编号  数量 仓库
    001    120  03
    001    15   02
    005    150  01
    005     97  02
    004     18  04
    出库记录集rst
    编号  数量 仓库
    001    35  03
    001    8   02
    005    90  01
    004     18  04我用for循环 For i = 1 To mrc.RecordCount                For z = 1 To rst.RecordCount
                        If rst.Fields("编号") = mrc.Fields("编号") And rst.Fields("仓库") = mrc.Fields("仓库") Then
                            mrc.Fields("数量") = mrc.Fields("数量") - rst.Fields("数量")
                            Exit For
                        End If
                        rst.MoveNext
                    Next                rst.MoveFirst
                    mrc.MoveNext
                Next得到需要的余额结果集mrc
    编号  数量 仓库
    001    85  03
    001    7   02
    005    60  01
    005     97  02如果 入库的记录集 2000条记录
    出库的记录集3000条记录
    那最多可能循环2000 *3000 次
    才能得到这个余额表
    查询时间太长
    而且这还是一个月的数据量
    如果是12个月的那不查死机了不知道用友等软件是如何实现的
    用友用了分页分页肯定是要用的
    但不知道  两个记录集相减得到的需要的记录集如何分页还有能不能通过每月月结的时候生成一个静态的余额表来减少计算量
      

  2.   

    还有能不能改为 sql服务器后
    在服务器端生成这个结果集
    把查询过程 转到sql服务器来作原来 我作为vb中查询出入库数据集的源表是mdb数据库中建立的一个查询查询 我把我的数据库改为 sql服务器后 我也在sql中建立相同的视图
    但是在运行
     mrc.Fields("数量") = mrc.Fields("数量") - rst.Fields("数量")这个代码时 说 “视图不能。。”唉 真是 难呀