简单的说,报表就是用表格、图表等格式来动态显示数据,详细请见这里
作者:九期 昌哥
(一)制作报表
首先打开锐浪报表设计器,界面如下
乍一看,什么都没有啊!不着急,咱们一步一步来DIY自己的报表:
定义报表头
1、插入报表头:执行菜单“插入-〉报表头”,新插入的报表头显示在报表布局窗口中。
2、插入一个静态框显示报表标题:执行菜单“插入-〉静态框”,用鼠标在报表头的显示区域拖放一个矩形区域,一个新的静态框显示在拖放的矩形区域位置。或者利用工具栏中的“静态框“部件手动画上
3、双击新插入的静态框,输入”机房收入日汇总表“作为标题,完成后按回车键,之后选中,利用工具栏上的相关按钮对字体和部件框的位置进行修改
4、调整报表头和静态框的大小。将鼠标放置部件上,对边框进行拖动,调到合适大小。
定义明细网格
1、插入明细网格:执行菜单“插入-〉明细网格”,新插入的明细网格显示在报表布局窗口中。
2、定义数据库连接串与查询SQL:在明细网格的工具栏上选择“数据库连接串与查询SQL”打开定义窗口
下面就到了重头戏上,这个关乎到数据库连接的成败
定义数据库连接串:执行窗口左下角的”创建数据库连接串......“
然后按照上图中的顺序进行下一步
上图中:①反应比较慢,需要耐心等待,然后填写sql用户名与密码,选择连接的数据库,最后点击:”测试连接“,确定即可。需要说明的是:必须选中”允许保存密码“复选框,否则在其后的连接中会出现错误。
定义查询SQL并检测正确性 :在查询SQL编辑框中录入“select * from CheckDay_Info”,点击“测试”
3、创建字段:执行菜单“编辑-〉根据查询生成字段”或者选择明细网格工具栏上的此时在右上角的对象浏览窗口的“记录集”节点下会有很多字段子节点。
4、创建列:执行菜单“编辑-〉根据字段生成列”,此时在明细网格上的“字段集合”按钮,会显示很多列
5、调整列宽:将光标移动到列的右边界位置进行拖放
6、改变表格标题的显示文字:按照上图中的提示进行即可
定义页脚显示页号
1、插入页脚:执行菜单“插入-〉页脚”,新插入的页脚会显示在报表布局窗口中。
2、插入一个综合文字框显示打印时间:
插入综合文字框:在部件框工具栏中选择“综合文字矿”,然后在页脚的左边拖放一个矩形,一个综合文字框已经插入。
设置显示内容:在右下位置的属性编辑窗口中选中“文本”行,点击“...”按钮打开文本编辑对话框。在编辑框中输入“打印时间:”。然后执行“插入域”按钮,引用类型选择“系统变量”,系统变量选择“CurrentDateTime”
当然,这个系统时间也可以放到其他具有综合文字框的位置。
然后,可以根据需要添加页眉,操作过程跟页眉相似,在此不再赘述。
查看设计结果
这个过程可以在添加任何部件的时候进行,最后对自己所DIY的报表进行美化,然后就可以大功告成了!
PS:1、该软件的“撤销”和“恢复”功能相当强悍,比VB和Word还牛。当然,最好还是养成一个随时保存的习惯,多按几次Ctrl+S即可。
2、很多操作都是在该软件的“帮助”下完成的。看来“帮助”真的是一款好软件的灵魂啊!这也给自己一个好的提示呢!
(二)vb与报表的交互
首先,安装Grid++Report 5.0报表设计器,具体过程如破解等在此不做涉及。然后打开VB程序,通过“Ctrl+T”快捷键调出“部件”窗口,勾选“Grid++Report Engine5.0 Type Library”,然后在工具箱窗口中会自动添加两个小部件,按照下图鼠标箭头提示在窗体中添加一个GRDisplayViewer1控件:
然后,再添加其他实际所需的控件。本例中实现三个功能:① 刷新 ② 打印 ③ 打印预览。
最后就是添加代码了。显示报表数据的结果如上图,其相关代码如下:
Private Sub Form_Load()
- Dim strSQL As String, strMsg As String
- strSQL = "select * from checkday_info where date='" & Format(Date, "yyyy-mm-dd") & "'"
- Set Report = New grproLibCtl.GridppReport '实例化模版
- Report.LoadFromFile (App.Path & "\checkday.grf") '加载模版
- Report.DetailGrid.Recordset.ConnectionString = ConnectString() '连接数据源
- Report.DetailGrid.Recordset.QuerySQL = strSQL '通过SELECT查询创建记录集
- GRDisplayViewer1.Report = Report
- GRDisplayViewer1.Start '开始打印
- End Sub
对于“打印”:
- Report.[Print] (True) '打印,因为报表对象的print方法名与vb的内部定义有冲突所以要用中括号
- End Sub
对于“打印预览”:
- Report.PrintPreview (True) '打印预览
End Sub
对于“刷新”:
- GRDisplayViewer1.Refresh '刷新
End Sub
效果图分别如下:
打印
打印预览
注意:1、最好把做好的报表放到VB程序目录下,方便以后打包发布,防止出现找不到路径的问题。
2、查找数据的时候代码一定要写对,否则,一个空格都有可能出现错误。
3、由于我的电脑上没有连接打印机,所以只是选择发送到Onenote中。