在开始计划做机房收费系统的时候,就觉得报表,上下机,组合查询会放在最后完成,因为我认为这是机房收费系统的重难点,报表是因为涉及到外部插件的调用,组合查询需要严谨的逻辑思维,上下机因为涉及的表和数据很多。
意料之中我把几个都放在了最后做,暑假开学也一段时间了,而我只完成了组合查询和报表,在做报表的时候还遇到了很多问题。是整个的情绪都很低落,到现在还有一个问题没有解决,不过先和大家分享一下我的实现过程吧
首先应该先下载Grid++ Report 报表设计器,进行安装,以便于对报表的设计。
先进行报表的设计,这些应该都不陌生,因为在vb做收费系统的时候都有涉及到,不过多的介绍,需要做的就是要插入:页眉,页脚,报表头,报表尾,明细网格。在相应的位置插入静态框,综合文字框,系统变量框,参数等。
这里想详细说的是明细网格,系统变量,和参数
明细网格是用来盛放查询得到的数据信息的,分为标题行和内容行,如图所示:
标题行和内容行都是可以自动生成的,在设置完SQL数据库连接和查询语句后,通过Clm(根据字段生成列)可自动获得。获得的标题行和数据库字段一致可通过双击改成汉字。
系统变量,在系统变量中有很多系统变量:这个表格中用到的是当前日期时间变量,还有页数,页号,行号等,作用就是可以自动获得所选择的类型量,相当于一个函数,例如当前日期时间变量,就会自动生成当前日期时间,是集成了的参数的作用。
还有要说的就是参数的插入,因为很多时候是无法通过系统变量来获得值得,所以在这里需要插入参数以便于可以获得更多类型的数据;例如插入参数:
这时候就要考虑的是,该如何使参数获得值呢?!不用担心,这时候就要考虑到vb.net和Grid++Report的交互。首先在工具箱对Grid++Report添加COM引用,然后在需要使用该控件的地方,添加引用“Grid++Report Designer5.0 Type Library” 不做详细介绍,跟vb的时候差不多。
最主要的是获得参数的值,还用刚插入的参数StartDate说明;只要我们在vb.net中写上:
grReport.ParameterByName("StartDate").Value= Format(dtpStartDate.Value, "yyyy-MM-dd")
就可以将控件中的值赋给startDate参数,很简单也很方便。
再有一点儿需要提到的就是:在VB中用app.path表示同名文件夹下,但是在vb.net中却不是这样表达,而是用:
grReport.LoadFromFile(Environment.CurrentDirectory& "\GatherBill.grf")代替
但是在过程中遇到一个问题,还没有解决,贴在在这里谁有好方法可以留言。
在第二次加载Grid++Report控件的时候出现(找了一些方法,暂时还没解决)