各位前辈高人:
   我有4个表,table1,table2,table3,table4
table1的字段:职工身份证,职工姓名,职工性别,职工单位
table2的字段:职工同户姓名,职工同户性别,职工身份证
table3的字段:房籍号,房屋坐落,职工身份证
table4的字段:建筑面积,房屋性质,变更时间,职工身份证我的意识是:4个表同时显示在一个QuickRep中,而且是有对应关系的,不是报完了第一个表,然后在报第二个表,然后在报第三个如下:(在一个QuickRep中同时显示4个table)字段:     职工身份证   职工姓名    职工性别    职工单位 
记录:     职工1身份证  职工1姓名   职工1性别   职工1单位
   
字段:     职工同户姓名          职工同户性别      职工身份证
记录:     职工1同户姓名(父)   职工1同户性别     职工1身份证
          职工1同户姓名 (母)   职工1同户性别     职工1身份证字段:     房籍号      房屋坐落      职工身份证
记录:     房籍号1     房屋坐落1     职工身份证1
           房籍号2    房屋坐落2      职工身份证1字段:    建筑面积    房屋性质      变更时间      职工身份证
记录:    建筑面积1   房屋性质1     变更时间1     职工身份证1
          建筑面积2   房屋性质2     变更时间2     职工身份证1                                       谢谢了!

解决方案 »

  1.   

    是不以“职工身份证”为主关键字,将四个表的内容进行联系呢?
    如果是显示在同一行上那么你可以
      Select * From 
      table1 inner join table2 
      on table1.职工身份证 = table2.职工身份证 ....以此类推相表联结
    再在报表中设置相应的显示字段就行了如果是以主从关系分栏显示的话,那么你可以
      使用4个TQuery , 4个TDataSource,每个DataSource设置成相应的Query,如DataSource1.DataSet := Query1 ......
      
      Query1中这样写
      sql.add(' Select * from table1 ');
      open;  Query2这样写
      sql.add(' Select * from table2 ');
      sql.add(' Where 职工身份证 = :d1 ');
      DataSource := DataSource1;
      open;
      
      Query3这样写
      sql.add(' Select * from table3 ');
      sql.add(' Where 职工身份证 = :d1 ');
      DataSource := DataSource2;
      open;
      .........
      在报表中的设置如下:
      在Detail栏中显示第一个表的内容,名为DetailBand,
      使用SubDetail栏,名为Sub1,设置Master:=DetailBand ,显示第二个表的内容;
      使用SubDetail栏,名为Sub2,设置Master:=Sub1 ,显示第三个表的内容;
      ..............
    如果还有其它要求请与我联系,Msn:[email protected]
       
      

  2.   

    to:huyalin(飞梦)
       首先,谢谢你的回答,sql.add(' Where 职工身份证 = :d1 ');中的d1
    我知道是动态变量,不过,它有什么意义啊
    我照您的做法做了一下,出错,提示信息是:
    Query2:Field 'd1' is of an unknown type