合同表
   合同编号          客户名称       合同金额      签定日期
   111                好好好          500         2003-12-10收款登记表
    合同编号         客户名称         收款金额      收款日期
     111             好好好           300          2003-12-11
     111             好好好           100          2003-12-12开出发票登记表
     合同编号         客户名称        开票金额      开票日期
      111             好好好           300          2003-12-11我现在通过一个DBGrid来显示报表,DBGrid里有这么多的列(Columus)
合同编号  客户名称 应收金额 已收金额  未收金额 已开发票(金额) 待开发票(金额)
请问怎么实现?最能够详细点,把代码和SQL也写一下,

解决方案 »

  1.   

    3tquery tquickrep  tqrbang  tqrtext tqrlable
     select * from 表名
      

  2.   

    select 客户名称,合同金额,已收金额,(合同金额-已收金额) as 未收金额,开票金额,(已收金额-开票金额) as 待开金额 from 合同表,收款登记表,开出发票登记表 where 合同表.合同编号=收款登记表.合同编号 and 合同表.合同编号=开出发票登记表.合同编号 and 收款登记表.合同编号 = 开出发票登记表.合同编号
      

  3.   

    写完了,试试吧!1.dbgrid与query1关连
    2.
    procedure showData;
    begin
      with query1 do
    begin
      sql.clear;
      sql.add(select 合同编号,客户名称,合同表.合同金额 as 应收金额, 收款登记表.收款金额 as 已收金额,合同表.合同金额 -收款登记表.收款金额 as 未收金额,开出发票登记表.开票金额 as 已开发票(金额),合同表.合同金额 -收款登记表.收款金额 as 待开发票(金额));
      if not active then open;
    end;
    end;
      

  4.   

    先用SQL写好后,我想用FASTREPORT做报表吧,因为你在一张纸上多表打印会比较麻烦,Fastreport就容易实现些
      

  5.   

    上面的有点问题,看下面的,写完了,试试吧!1.dbgrid与query1关连
    2.
    procedure showData;
    begin
      with query1 do
    begin
      sql.clear;
      sql.add(select 合同编号,客户名称,合同表.合同金额 as 应收金额, 收款登记表.收款金额 as 已收金额,合同表.合同金额 -收款登记表.收款金额 as 未收金额,开出发票登记表.开票金额 as 已开发票(金额),合同表.合同金额 -收款登记表.收款金额 as 待开发票(金额) from 合同表,收款登记表,开出发票登记表);
      if not active then open;
    end;
    end;
      

  6.   

    我先试一下,我对query1不熟悉(刚学习,没有用过BDE里的组件),用TADOdataset也行的吧
      

  7.   

    showData是他自己定义的一个函数;你的情况用“视图”很容易解决的,建立一个视图表,然后当一个数据表操作即可