使用过VB5的人都会发出这样的赞誉-VB5真牛!的确,Visual Basic 5.0 以其强大的功能和优异的开发环境深深吸引了众多编程迷。彻底中文化的VB5中文版更深得专业人员及编程爱好者的喜爱。笔者在为某单位设计人事履历管理系统时就选用了VB5中文版。可是在设计报表时遇到了难题, 用printer对象的enddoc方法来实现打印的话,输出数十张格式各异的报表显然是太繁琐了。可能Miscrosoft公司也意识到了这一点,最终我发现它在 VB5企业版的外接程序中为我们提供了一个外接报表设计工具。
打开VB5菜单选择"外接程序\报表设计器",报表设计界面就呈现在我们眼前。可能是外接程序的原因,这是个全英文的界面。现在程序要求你进行用户登记,登记完了才发现,这个好东东有个好听的名字-水晶报表,而且居然是希捷软件信息管理公司出品的!希捷(seagate)的硬盘大家不会陌生,没想到它还会和微软去合作。闲话少说,接着往下看。
手上正好有个履历表需要打印,就看看它如何实现access表数据的直接打印。首先创建一个新报表,在菜单中选择"new"之后立刻出现了"create report expert"(创建报表专家)窗口,接着只要根据提示step by step就行了。专家会让你选择报表的式样,然后请你添加数据库文件(如lvli.mdb)以及库文件中要打印的表数据(table)。哇!它还有超级连接实现多表打印呢。再按"next",专家这时让你自由选择表中要打印的字段名了。记录的排序是报表必不可少的功能,专家也为你想到了。它还能帮你添加列统计,定义组和组总计,自动生成页码,插入公式模板在字段间进行复杂计算,等等。好了,一切设置完成,按下"报表预览",一张如你所愿的报表就出现在眼前。什么?你不满意?没关系。按下"设计"项,就象在字处理软件中一样,所见即所得的页面出现了。每个字段名和文本就象VB中的对象一样可以任意移动和改变字体类型及大小。
爽吧!不过还没和VB程序结合呢。水晶报表已经为你准备了它的最佳拍档-crystal ActiveX 控件。在VB5菜单中选择"工程\部件\crystal report control 4.6",这时crystal ActiveX 控件就加入了VB5控件栏。把crystal ActiveX 控件放入窗体,把刚才生成的报表文件名称写入控件的reportfilename属性,就完成了和VB5程序的结合。怎样在程序中启动报表打印?很简单,在某个对象如"按钮"的鼠标点击事件过程中加入一行代码就行。即:
private sub Command1_click()
crystalreport1.action=1
End Sub
当程序运行时,鼠标点击窗体上按钮,报表立即出现在计算机屏幕上供你预览,按下报表下方的打印机图标,会出现打印对话框,可以指定打印页的范围和打印张数。点击"ok"按钮,清晰完整的履历报表就出现在眼前。
确实,水晶报表设计器以其完善的功能和良好的使用界面弥补了VB5在报表打印方面的不足。随着深入的使用,笔者更惊喜地发现使用crystal ActiveX 控件能和data数据库控件相结合动态生成报表!并且可以在动态报表生成前定义报表的格式!众所周知,data控件的数据源属性可以接受表、表查询甚至SQL语言的select查询语句。如果data控件可以和crystal控件绑定,那么在管理软件中每一次带变量的多重查询结果都可以立即打印出来。这给编程带来了极大的方便。这儿,我把自己摸索出的有格式动态报表的建立方法奉献给大家。步骤如下:
1、添加data控件,crystal ActiveX控件和command button按钮在窗体上。
2、设置data控件的数据库名属性和数据源属性。
3、对于crystal ActiveX控件:
(1)设置报表源属性为"3-crptDatacontrol"。
(2)打开控件的属性页,选择"数据绑定报表"项。
(3)选择"报表另存为",为即将生成的报表起文件名并保存。
4、在VB5菜单中选择"外接程序\报表设计器",运行水晶报表设计器,打开步骤3中保存的报表文件,按自己的要求进行格式的编辑,如字体、颜色、框线等等。完成后再次保存。
5、再进入VB5,设置crystal ActiveX控件的报表源属性(reportsource)为"0-crptReport",报表文件名属性(reportfilename)设置为步骤4中已保存的报表名。
6、在command button按钮的click事件过程中写入"crystalreport1.action=1"命令行。
现在,动态报表创建完成,试着运行一下吧,效果怎么样?