微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

报表在vb中的声明

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

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

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

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

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

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

如:

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



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

显示选定时间

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

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

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

需要在vb中写入的程序:

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


最终显示的结果

报表刷新

'报表的刷新
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


打印报表

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


打印预览

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


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

原文地址:https://www.jb51.cc/vb/259560.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐