----笔者在前一段使用Delphi开发数据库的工作中,用户提出了这样一个需求:要根据自己的的查询结果动态生成报表然后进行打印。几经摸索,笔者使用动态生成QuickReport控件的方法满足了用户的需求。现将此方法说明如下,希望能为有类似工作要做的朋友们提供一点有益的提示。
一、基本思路
----先将查询的一些参数(如SQL命令,字段名称,字段宽度等)按照一定格式写入一个临时文件中。在生成报表时,根据临时文件中所记录的参数动态生成各种QuickReport控件即可。
二、程序实现
2.1临时文件格式
----临时文件的格式可以根据需要自定义,笔者采用了INI的文件格式。Delphi提供了一个TInifile类,使得在Delphi中操作INI格式文件,非常方便。关于INI文件的格式和具体操作相关的文章有不少,我这里不再赘述。临时文件格式如下:
Report.ini
:报表细节
[rep_detail]
Title=XXXXX表
:打印纸设置,1为A4纸,2为B5纸,3为16K
Page=1
:打印方式,1为横打,0为竖打
Orientation=1
:报表包含的字段数目
columns=8
:TQurey组件信息
[QureyData]
:QuickReport组件中Tqurey组件的SQL命令的内容
Sql_command=select V_XM,V_JGZW,V_BMMC,V_DWMC,V_DWZW,V_ZY,V_ZC,V_BGDH from Hvzzjg where V_XM LIKE '李%'
[col_0]
Caption=姓 名
DataFiled=V_XM
Width=60
……
……
2.2动态生成QuickReport报表
--- 报表的主要控件及其主要属性设置如下
控件名称 |
类名 |
属性 |
属性值 |
Form_rep |
TForm |
caption |
动态报表 |
QuickRep |
TQuickRep |
DataSet |
REP_QUERY |
DetailBand1 |
< |