各位高手好,我现在正在做一个进销存软件,但做到报表时卡住了,因为我想做一些分类的主从明细报表,举个例:我有一个进货表,但我相应的分类可以有:按单据编码、按商品编号、按操作人、按供货商名称、按进货日期……等等之类。我现在就是要按到时客户点选的条件进行明细报表显示并可以进行打印,我看了很多资料了,讲到做主从明细报表时都是用Table的,但我的要求是把我指定条件的数据查询出来后进行分类,而用Query我就不知如何做那个明细报表?因为table中有mastersorce和masterField这两个来进行设置!而query没有!这个query又是如何制作主从明细报表的呢?
    但用table时我以遇到一个问题,就是我一个数据表要按那几仲指定条件来分类,我按那分类的条件建了六个索引,问题就出现了,当我进行那个masterField设置时,因为存在多个索引,它硬要求我进行匹配,但我做主表的没有这个字段,如何匹配呢?就好似,当我按供货商名称时,我选两个表的offerNo字段来进行匹配,但那个明细的数据表提示我一定要对NoteNo进行匹配,而我那个供货商表没有NoteNo这个字段?我如何处理呢?真的无办法!所以向各位大侠请教了!~希望得到帮助!

解决方案 »

  1.   

    首先你要知道你使用什么打印控件,推荐你使用RM控件。
    CRYSTAL REPORT比较适合做分组类型的报表
      

  2.   

    其实你的问题很简单。随便哪一个报表工具都可以解决。
    不要用table ,用两个query 或者adoquery,再加上datasource
    设置好两个query的关联关系。
    ---------
    也可以只用一个query来做.比如你的的主表是rcv ,从表是rcv_d
    关联关系是rcv.rcvno=rcv_d.rcvno
    则query.sql.text:=
    'select a.*,b.* from rcv a left join rcv_d b on a.rcvno=b.rcvno where 1=1'
    PS 我是用这种方法.
    --------
    至于你说的索引...我都没建索引,
    如果客户选择按日期排列,你就在程序中
    加query.sql.add('order by a.date'),其它同.
    如果客户只要单号为'X001'的进货单
    加query.sql.add('and a.rcvno=''X001''')
    -------
      

  3.   

    如果你用cxGrid控件的话,建立两个level一个是master一个是details
    每个level关联一个cxgriddbtableview,分别关联master和details数据,用到两个query,两个datasource,点击master后,details也会显示出来
      

  4.   

    http://soft.56kc.com/FileDown.aspx?FID=201
    http://soft.56kc.com/FileDown.aspx?FID=202
      

  5.   

    QUERY也可以做主从数据集
    主集有对应的TDataSource就行了
    要按字段分类也不一定要全都建索引啊
    你什么数据库?
    用数据集组件的方法也一样的
      

  6.   

    可能我的表述不清,我用的是QR控件!我本来想用Rave的,但寻个我没有怎么接触过,而我要求的是做到的报表可以按我那六个关系进行分类!那你们谁可以讲我知table中的mastersource和masterfields可以用query中的什么属性来代替?再就是你们有没有什么现成的网页或例子给我看一看?可以吗?因为我太急于用了!我自己摸索了做主表可以用Query,但做从表的我还想不到办法呢?望指教!