写在前面
最开始到了要用报表的时候,自己是没有新头绪的,于是查了很多资料,也从师哥师姐那里取了很多经。我的经验就是,什么东西都没有现成的,即使是要用别人的东西,自己也要先认识,同时再加上自己的想法,才可以达到你想要的效果。
修改已有的报表
完成机房的任务,我使用的报表是用的现成的报表,自己没有去做一个新的,但是现成的报表也有一些不合适的地方,我们可以通过vb将报表修改一下。
添加控件
我们在引用中添加关于制作报表控件:
然后会出现这两个控件:
s
上面的报表查询显示器,下边的是报表设计器,根据名字我们就知道他们是干什么的了。
设计报表
我们先加载报表设计器,打开之前已有的报表,修改其中的内容:
其中红色部分的内容在右侧的设计中都可以修改成自己想要的内容。不过这里我们要注意的几个问题就是下面这张图中圈起的内容:
这些内容都在右侧的参数集合中,当然我们可以根据自己的需要,再次添加有关的需要的参数,现在你就要问了,这些参数有什么用呢,他们都是具有特定格式的[# #],而这些参数我们可以在vb中进行设计,我们继续探索。
vb让报表有生命
现在我们有了报表,那么如何将数据库中的内容,放到报表上呢,同时当我们选择时间的时候,如何将时间跟着跑到报表上呢(就像下图的时间)?不要着急,问题总会解决的:
Private WithEvents Report As grproLibCtl.GridppReport '定义事件接口 (这里withEvents 声明一个可以引发事件的类)
Dim txtSQL As String
'实例化报表
Set Report = New grproLibCtl.GridppReport
'建立报表的位置,将报表拿出来用
Report.LoadFromFile App.Path & "\weekcheck.grf"
'建立表与数据库的联系,connectstring在模块中声明
Report.DetailGrid.Recordset.ConnectionString = ConnectString
'建立查询语句
txtSQL = "select * from checkday_info where date > = '" & DTP1.Value & "' and date < = '" & DTP2.Value & "'"
Report.DetailGrid.Recordset.QuerySQL = txtSQL
'查看报表,就是把表放在查看的容器里
GRDisplayViewer1.Report = Report
'将其显示
GRDisplayViewer1.Start
现在报表就和数据库联系起来了,还记得,上面的那个时间更改么?这里我们写在了,将他写在初始化的事件里面,今天老师还问到Initialize 和load的区别,Initialize比load触动的更早一点,没有太大的区别。下面看看时间怎么改的吧:
Private Sub Report_Initialize()
Report.ParameterByName("begindate").AsString = Format(DTP1.Value, "yyyy-mm-dd")
Report.ParameterByName("enddate").AsString = Format(DTP2.Value, "yyyy-mm-dd")
Report.ParameterByName("XX").AsString = userID
End Sub
这样就完成了时间的设置,这里要说的就是Parameter是参数的意思,就是我们添加的那些参数,现在用到了。
其他功能
Report.[Print] (True) '实现打印,(true)区别vb中的print
Report.PrintPreview (True) '打印预览
GRDisplayViewer1.Refresh '刷新
结束语
使用已有报表的内容介绍到这里了,我相信,如果你想要知道,很多事情就都会知道的,有的时候只是自己不想变得优秀罢了。很多新鲜的领域,等着我们去开辟。