本人要用A4纸打印报表,但是表格的字段太多,有20多个字段,而且客户也要求这样的格式,请问有什么解决?             品名规格分类           物料1         物料2       物料3       物料4期初库存:     100             12         52          52
报关进口:     20              12          20          5




期末库存:    2000             20000       122     12   请问有什么好的控制方法,每页纸打印5条记录。

解决方案 »

  1.   

    用临时表
    select 分类, 物料1, 物料2,物料3,物料4  from 
    (select 期初库存 as 分类, 100 as 物料,12 as 物料2, 52 as 物料3,52 as 物料4
    union
    select 报关进口 as 分类,  20 as 物料,12 as 物料2, 52 as 物料3,5 as 物料4
    union
    select 期未库存 as 分类,  20 as 物料,12 as 物料2, 52 as 物料3,5 as 物料4
    ) as A打印的时候直接用临时表.
    select * from #table
      

  2.   

    select * into #table from yourtableinto #tabledrop #table.通过这些组合,就可以实现了。
      

  3.   

    谢谢MY_FIRST,但是物料数是未知的,最多可能与好几百个物料,而且打印时怎样控制换页,请帮忙考虑一下。
      

  4.   

    当然。我知道这些数是动态的,只是我上面是这样写的。你可以
    (select 期初库存 as 分类, D.wl as物料
     From (select sum(wl) as wl,sum(wl2) as wl2 from table where 条件) as D 
     union
      

  5.   

    也许你理解错了,按你这么说,一个表有几十个字段,那不是要用几十个UNION语句。另外,我要求的是几百个物料5个一页5个一页这样子打完,你这样无法控制得到。
      

  6.   

    首先你要明白QuickRep报表的打印机制,他首先打印报表开头部分,包括Title,ColumnTitle等等,然后会打印明细部分(Detail),在打印明细部分时可以指定QuickRep的Dataset属性,这样他会自己浏览该数据集,逐条打印相关的明细内容,然后再打印页脚等部分的内容,如果不指定DataSet,那么你必须在QuickRep的OnNeedData事件中自己写代码实现(给放在DetailBand上的相关QRLabel赋值,滚动数据集,控制QRLabel的位置等),通过NeedMoreData变量控制是否还有Detail行需要打印。
    而你的问题需要一页打印五个记录,那么你可以首先取出五条记录,然后在一个DetailBand上打印这五条记录的一个属性,利用DataSet.FieldCount控制是否换页。