我用DELPHI 7.0做3层结构的发票管理系统,现在遇到报表不知道怎么处理。
  SQLserver 2000 数据库表为:
/*表1:   产品类型表(类型号,类型名称)
/*表2:   发票信息表(发票号,发票名称)
/*表3:   产品信息表( 产品流水号,产品名称,(产品所属)类型号,(产品所属)发票号 )
  我打算在客户端用RAVE做发票报表。连接模式为:
     服务器端:ADOConnection1+ADOQuery+DataSetProvider
     客户端:DCOMConnection1+clientdataset
    用一个固定SQL语句的ADOQuery在客户端由DbGrid显示所有‘发票名称’,当点选其中一个发票时,由‘发票号’用动态SQL语句在数据库中查‘产品信息表’中相关的产品,并按‘类型名称’分组显示此发票名称’报表!
  一组:固定SQL连接:
  (   服务器端:ADOConnection1+ADOQuery1+DataSetProvider1
     客户端:DCOMConnection1+clientdataset1
   )
  二组:动态SQL连接:
  (   服务器端:ADOConnection1+ADOQuery2+DataSetProvider2
       客户端: DCOMConnection2+clientdataset2
   )问题 (1)第一组取得的发票号在哪儿且怎么赋给第二组去查找?
     (2)我的报表如下:(按类型分类)
          类型A
           产品0 
           产品2
           产品5                类型A
           产品5 
           产品2
           产品7 
  通过clientdataset2查出来的仅仅是一个产品表的数据,怎么把它关联到具有主/从表关系的报表中的
DBtext控件中??
   我看见许多书上的主/从表例子,是把所有的信息都写在报表里!(即书上是2个表,我的是3个表!)
    (3)如果大家不按我的思路做报表,说说自己的想法!
(感叹:要是ASP的话,全部都是动态SQL语句查询,用2层的循环就可以分组显示记录集了!很简单!用DELPHI时DBtext控件不能循环显示,不能灵活控制!郁闷!!!)
     
       
    

解决方案 »

  1.   

    上面的问题简单地说就是要用DELPHI 7.0做发票报表,谁说说思路,谢谢!!!!
    报表如下:
                             发票名称               发票日期         发票编号
         --------------------------------------------------
              类型A
                 产品0 
                 产品2
                 产品5      
          ----------------
              类型r
                 产品5 
                 产品2
                 产品7
          ----------------
              类型9
                  .
                  .
     
      

  2.   

    不知道我有没有理解楼主的意思,我说一下我做两张表关联查询的思路。
    比如,我要先查询出某个公司所有的部门,然后在选定部门后,再查询出这个部门对应的员工信息。
    首先,我在第一个DBGRID1里将部门查询出来,在点击了DBGRID1的某一行时,根据这一行里的信息,再动态组成一个查询员工信息的SQL语句,提交查询后在DBGRID2里显示出来。
      

  3.   

    to   "alinsoft(艾林)":
        用你的例子我的意思是先在第一个DBGRID1里将“公司”查询出来,点击了DBGRID1的某一行时,根据这一行里的信息,再动态组成一个按“部门”分组查询“员工”信息的SQL语句 。
        按“部门”分组查询“员工”信息在报表里显示出来。   另外,我查了一下好多DELPHI的书,都是用dataset与DBtext控件关联做报表,一句程序都不写!
    这样根本做不出稍微复杂的报表。
        用ASP做报表,用FOR循环控制要在那行写什么就写什么,很灵活,能写出任意复杂的报表。请问大家也是用FOR循环控制写出任意复杂的报表吗??
      

  4.   

    OH,明白楼主的意思了。
    如果光用dataset与DBtext控件,不写程序来控制的话,估计比较难实现这种效果,可能还是要用FOR循环来处理吧。
    曾经也看到有人发帖子在问和你差不多的问题,好像也没有很好的解决方法。
      

  5.   

    dataSours1连接ADOQuery1,
    DBGrid1连dataSours1,
    ADOQuery1的SQL String为:Select * from 公司dataSours2连ADOQuery2
    DBGrid2连dataSours2。
    ADOQuery2的dataSours连接dataSours1,ADOQuery2的SQL String为:Select * from 部门 where 部门ID=:部门ID显示数据前都要连到服务器的数据库,ADOQuery要Open.