华山论剑:有一个打印问题-高手极人物请进 -奖金 300大元(300分)

  • 主题发起人 主题发起人 墨剑
  • 开始时间 开始时间

墨剑

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个不长见的打印问题
从Tquery中检索出数据,在一个Dbgrid中显示出来,并且需要打印。
dbgrid中数据如下(第一季度数据):
标题:商品编号 月份 销售量
0001 1 521
0001 2 600
0001 3 650
0002 1 250
0002 2 300
0003 1 120
0003 2 89
0003 3 150
。。。。。
现在需要打印成以下格式
商品编号 1月份 2月份 3月份
0001 521 600 650
0002 1 300 0
0003 120 89 150

要求:dbgrid中数据显示格式不能更改的条件下,把其数据按以上所说的打印格式打印出来
(可以用打印把表,也可不用)
 
这是一个典型的交叉表,用FastReport做出来。
 
用另一Query,用Group By语句可以得到要打印的内容,再用一隐藏的DBGrid
显示要打印的内容(反正用户看不见你怎么做都行,只要能达到目的)
 
行列倒置,用存取过程从临时表取数据,如采用,我可以做下
 
老大,这个在FASTREPORT里有例子的。而且,大富翁5月份,这个问题已经被讨论多次了。去查查看。
 
用另一个query或query.disablecontrol
select 商品编号,
sum(case 月份 when 1 then
销售量 else
0 end) as '一月',
sum(case 月份 when 2 then
销售量 else
0 end) as '二月',
...
sum(case 月份 when 12 then
销售量 else
0 end) as '十二月'
from 表
group by 商品编号
order by 商品编号
 
你们会错我的意思了。
我并不是不能从数据库中得到需要打印的那种格式,
而是希望重现已经打开的tquery或dbgrid中的数据得到打印需要的那种格式
 
那就用qrexpr做,if 函数,嵌套sum函数,只是很麻烦。
 
多次使用过滤来实现。没问题的。
 
我就有了以下的疑问:
1:有fastreport24的中文版吗?
2.可不可以把fastreport单元引入delphi中使用
 
我的控件很灵活的! 如何变化都能实现.你可以到 http://zhangxzh.diy.163.com
下载我的demo 演示程序.
 
你用的是什么数据库?如果是oracle的话,你用三层decode函数就行了,试试吧
 
我这儿有fastreport的原码,给你吧
 
谢谢我来插一脚
 
后退
顶部