VB打印报表与报表中设定显示时间

前端之家收集整理的这篇文章主要介绍了VB打印报表与报表中设定显示时间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在做机房收费系统中学习到使用报表,首先得问题是报表是什么?报表有什么作用?

报表:是企业管理的基本措施和途径,是企业的基本业务要求,报表可以帮助企业访问、格式化数据,并把数据信息以可靠和安全的方式呈现给使用者。深入洞察企业运营状况,是企业发展的强大驱动力。

报表在未来的公司中发挥着越来越重要的作用,做机房收费系统首次接触到报表的制作,里面包含了报表的基本原理与内容,自己下载下来报表生成器之后先先试一番,感觉它虽然制作简单但是功能很强大、很好玩。在vb、报表、数据库三者相连的学习中重要知识点如下:

报表在vb中的声明

在vb中需要声明(周结账单为例):

@H_404_36@Option Explicit Private WithEvents objWeekliyBill As grproLibCtl.GridppReport '声明objWeekliyBill对象

Withevents是什么意思呢?什么声明呢?

如下:Dim Withevents 对象变量 As 类名

这种用法是加载该类的事件,Withevents 之后就能在代码编辑窗看到该类的事件了(如果有的话)。
因为类不像控件,双击控件就可以进入事件编辑。

使用 WithEvents变量时,应该注意下面这些限制条件:
1.WithEvents变量不能是派生对象变量。也就是说,不能把它声明为AsObject—当声明该变量时必须指定类名。
2.不能把 WithEvents变量声明为AsNew。必须明确地创建事件源对象,并将它赋给WithEvents变量。

如:

@H_404_36@Private Sub Form_Load() dtpBeginDate.Value = Date dtpEndDate.Value = Date Set objWeekliyBill = New grproLibCtl.GridppReport '创建事件源事件



3.不能在标准模块中声明 WithEvents 变量。只能在类模块、窗体模块以及其它定义类的模块中声明。
不能创建WithEvents变量数组。

显示选定时间

在机房收费系统中有个周结账单中需要显示选定时间,如何实现的呢?

在报表主对象插入参数,右击--插入-参数,如有下方图:

在模板中插入综合文字框如图:

需要在vb中写入的程序:

@H_404_36@Private Sub Form_Load() dtpBeginDate.Value = Date dtpEndDate.Value = Date Set objWeekliyBill = New grproLibCtl.GridppReport '创建事件源事件 objWeekliyBill.LoadFromFile (App.Path & "\weekliybill.grf") objWeekliyBill.DetailGrid.Recordset.ConnectionString = "FileDSN=room_charge_new.dsn;uid=sa;pwd=123456" grdWeekliyBill.Report = objWeekliyBill grdWeekliyBill.Start objWeekliyBill.ParameterByName("BeginDate").Value = Format(dtpBeginDate.Value,"yyyy-mm-dd") '显示开始时间 objWeekliyBill.ParameterByName("EndDate").Value = Format(dtpEndDate.Value,"yyyy-mm-dd") '显示结束时间 End Sub


最终显示的结果

报表刷新

@H_404_36@'报表的刷新 Private Sub cmdRefresh_Click() Dim strsql As String Dim strMsg As String Dim objRsWeekliyBill As ADODB.Recordset Dim objRsDaliyBill As ADODB.Recordset If dtpBeginDate.Value > dtpEndDate.Value Then '条件限制 MsgBox "终止日期不能小于起始日期!",vbOKOnly + vbExclamation,"警告" Exit Sub End If '日期的选定 strsql = "select * from CheckDay_Info where checkdate>='" & dtpBeginDate.Value & "'" & " and checkdate<='" & dtpEndDate.Value & "'" Set objRsDaliyBill = Executesql(strsql,strMsg) strsql = "select * from CheckWeek_Info" Set objRsWeekliyBill = Executesql(strsql,strMsg) Do While objRsWeekliyBill.EOF = False objRsWeekliyBill.Delete objRsWeekliyBill.MoveNext Loop '更新到日结表中 Do While objRsDaliyBill.EOF = False '判断是否有数据 With objRsWeekliyBill .AddNew .Fields(0) = objRsDaliyBill.Fields(0) .Fields(1) = objRsDaliyBill.Fields(1) .Fields(2) = objRsDaliyBill.Fields(2) .Fields(3) = objRsDaliyBill.Fields(3) .Fields(4) = objRsDaliyBill.Fields(4) .Fields(5) = objRsDaliyBill.Fields(5) .Update objRsDaliyBill.MoveNext End With Loop grdWeekliyBill.Refresh '刷新 objWeekliyBill.ParameterByName("BeginDate").Value = dtpBeginDate.Value objWeekliyBill.ParameterByName("EndDate").Value = dtpEndDate.Value End Sub


打印报表

@H_404_36@Private Sub cmdPrint_Click() objWeekliyBill.[Print] (True) End Sub


打印预览

@H_404_36@Private Sub cmdPreView_Click() objWeekliyBill.PrintPreview (True) End Sub


学习是个不断重复、积累、发掘的过程,这个过程可能短时间看不到明显的效果,但当我们暮然回首时会发现自己成长很多、收获很多,加油!

猜你在找的VB相关文章