(表1):货物库存表 
货物名 类别号  货物名  数量  金额 
001     001     白菜   1000  2000
002     001     青菜   800   1500
003     002     猪肉   1300  7500 
004     003     可乐   100   250
(表2):入货信息表 
入库单号 货物号  入货数量  进货金额 入货时间    
00001    001      100        200     2004-5-5   
00002    001      150        300     2004-5-26
00003    002      200        380     2004-5-24
00004    003      130        750     2004-6-2
00005    004      10         25      2004-5-30
(表3):出货信息表
出库单号 货物号  出货数量  出货数量  出货时间
00001    001      50         100     2004-5-23
00002    003      13          75     2004-5-20
生成的报表内容为:
货物名  上月结余 本月购进 本月支出  上月支出 本月购进 本月结存 当前结存
 …….
小计
…..
总计
其中有三个时间 由用户输入 开始时间 结束时间 当前时间
本月购进和本月支出为 开始时间到结束时间段内的进出数量总和
本月到当前的购进=结束时间到当前时间段的进货总和
本月到当前的支出=结束时间到当前时间段的出货总和
当前结存=货物库存表的数量字段
那么 本月结存=当前结存 + 本月到当前的支出 — 本月到当前的购进
上月结余=本月结存 + 本月支出 — 本月购进须用VB 的ADO和DataReport工具实现,因为我的程序其他部分都这样做。数据库是Access, 
我实在做不出来,请大家一起给个方法!
如果谁能给个好的建议,女的我就以身相许,男的就结派兄弟,至于给分更不再话下
谢谢! 

解决方案 »

  1.   

    我觉得这不是报表的问题,而是你用SQL语句实现的问题,实现之后将记录集赋给报且的DATASOURCE即可!!
      

  2.   

    Option ExplicitDim adoConnectionX As New ADODB.Connection
    Dim adoRecordsetX As New ADODB.RecordsetPrivate Sub DataReport_Initialize()
      'printer.Orientation =
      '以下准备数据源(记录集)
      '要打印的数据源(记录集)必须是一个全局级别的,或者是本设计器模块级别的记录集
      
      '数据库使用的是 Northwind.mdb
      adoConnectionX.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\Northwind.mdb"
      adoRecordsetX.Open "select * from 产品", adoConnectionX
        
      Set DataReport1.DataSource = adoRecordsetX '设置 DataReport 的数据源
      
      '-------------------------------------------------------------------------
    End SubSQL语句你自己写吧~~~~~~~~~
      

  3.   

    问题是本月结余 上月结余需要计算才能算出来的,而且所用的时间段也不相同
    好象一条sql语句实现不了,我不知道怎么写。你能指点一下吗?如何把每个报表字段算出来还有我看了lndlwwh830 (笑天星) 的贴子,
    http://community.csdn.net/Expert/topic/3103/3103556.xml
    但是我用他的方法,调试不出来。
    能不能给个完整的例子呀!!!!
      

  4.   

    伙计,用多个SQL语句实现相关连的几个记录集,可以在Access上调试出来,然后把它们当作虚拟表(准确点说应该是View)结合起来,结合是通过View中的关联主键完成,就可以提取业务比较复杂的数据。SQL文可能会很长,但肯定能实现。
    例如T1,T2,T3表
    select a.field1,b.field2,c.field3
    from (select ... from t1,t2 where ...) as a,
    (select ... from t2,t3 where ...) as b,
    (select ... from t1,t3 where ...) as c
    where a.field = b.field and b.field = c.field
    以上是针对Oracle,对于Access应该是Left join,ineer join方式
      

  5.   

    大致看了看,你的数据View可以采用两个View做,即本月的统计数据和上月的统计数据,然后结合两个View,以货物代码为主要关联,完成数据的合并。详细的你自己再考虑。Access里有提取数据用的自动生成工具,图表方式的,应该可以帮助你。