机房收费系统中的Grid++Report报表设计器的应用

    在进行账单查询功能的时候我应用了Grid++Report报表设计器,下面我就为大家介绍一下,还望大家多多指点。

    首先,在Grid++Report报表设计器中进行报表界面的设置。在属性编辑窗口中这里对报表头、标题行、内容行进行设置,具体的操作不在赘述,我设计的报表界面如下所示。

    其次,在机房收费系统项目中的UI层中添加应用,在COM中选择Grid++Report Designer 5.6Type Library和Grid++Report Engine Plugin 5.6Type Library。

    再次,在代码编辑器中加入Grid++Report类型库名字空间引用,即为Imports grproLib。

    最后在代码编辑器中进行编辑,来应用报表设计器进行账单查询:

'加入Grid++Report类型库名字空间引用
Imports grproLib
''' <summary>
''' 查询账单
''' </summary>
''' <remarks></remarks>
Public Class frmQueryItemsBill
    '定义Grid++Report报表主对象
    Private Report As New GridppReport
    Dim NameField As grproLib.IGRField
    '上次消费余额
    Dim PriorperiodCashField As IGRField
    '本期充值金额
    Dim CurrentCreditField As IGRField
    '本期消费金额
    Dim CurrentConsumptionField As IGRField
    '本期退卡金额
    Dim CurrentAmountrefundedField As IGRField
    '本期总金额
    Dim CurrentCashField As IGRField
    '结账时间
    Dim DateField As IGRField

    ''' <summary>
    ''' 加载账单
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub frmQueryItemsBill_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '载入报表模板数据
        Report.LoadFromFile(GetReportTemplatePath() + "Bill.grf")
        '连接报表事件
        AddHandler Report.Initialize, AddressOf ReportInitialize
        AddHandler Report.FetchRecord, AddressOf ReportFetchRecord
        '设定查询显示器关联的报表
        AxGRDisplayViewer1.Report = Report

        DateTimePicker1.Value = New DateTime(Year(Now), Month(Now), 1)
        DateTimePicker2.Value = New DateTime(Year(Now), Month(Now), 1)
        PriorperiodCashField = Report.FieldByName("PriorperiodCash")
        CurrentCreditField = Report.FieldByName("CurrentCredit")
        CurrentConsumptionField = Report.FieldByName("CurrentConsumption")
        CurrentAmountrefundedField = Report.FieldByName("CurrentAmountrefunded")
        CurrentCashField = Report.FieldByName("CurrentCash")
        DateField = Report.FieldByName("Date")

        AxGRDisplayViewer1.Start()
    End Sub

    ''' <summary>
    ''' 刷新
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnFreshen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFreshen.Click
        If CStr(DateTimePicker1.Value) > CStr(DateTimePicker2.Value) Then
            MsgBox("对不起起始时间应该小于结束时间")
            Exit Sub
        End If
        AxGRDisplayViewer1.Stop()
        AxGRDisplayViewer1.Start()
    End Sub

    ''' <summary>
    ''' 打印预览
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnPreview_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPreview.Click
        Report.PrintPreview(True)
    End Sub

    ''' <summary>
    ''' 打印
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub btnPrinter_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrinter.Click
        Report.Print(True)
    End Sub

    ''' <summary>
    ''' 报表初始化
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub ReportInitialize()
        Report.ControlByName("SubTitle").AsStaticBox.Text = _
                           "从" + CStr(DateTimePicker1.Value) + "至" + CStr(DateTimePicker2.Value)
    End Sub

    Public Function GetReportTemplatePath() As String
        Dim FileName As String = Application.StartupPath.ToLower()
        Dim Index As Integer = FileName.LastIndexOf("bin")
        FileName = FileName.Substring(0, Index)
        GetReportTemplatePath = FileName

    End Function

    ''' <summary>
    ''' 添加报表记录
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub ReportFetchRecord()
        '定义开始结账实体
        Dim entityBeginAccount As New Entity.AccountInfoEntity
        '定义结束结账实体
        Dim entityEndAccount As New Entity.AccountInfoEntity
        '定义B层结账
        Dim bllAccount As New BLL.AccountBLL
        '定义数据表
        Dim dt As DataTable
        '定义返回的数据行
        Dim intRows As Integer

        entityBeginAccount.BookDate = DateTimePicker1.Value
        entityEndAccount.BookDate = DateTimePicker2.Value
        dt = bllAccount.InquiryAccount(entityBeginAccount, entityEndAccount)

        '添加账单记录
        intRows = dt.Rows.Count
        For intRows = 0 To (intRows - 1)
            Report.DetailGrid.Recordset.Append()
            PriorperiodCashField.AsInteger = dt.Rows(intRows).Item("PriorAmount")
            CurrentCreditField.AsInteger = dt.Rows(intRows).Item("RechargeAmount")
            CurrentConsumptionField.AsInteger = dt.Rows(intRows).Item("ConsumeAmount")
            CurrentAmountrefundedField.AsInteger = dt.Rows(intRows).Item("RemoveCardAmount")
            CurrentCashField.AsInteger = dt.Rows(intRows).Item("TotalAmount")
            DateField.AsString = dt.Rows(intRows).Item("BookDate")
            Report.DetailGrid.Recordset.Post()
        Next

    End Sub

因为B层和D层的代码不涉及Grid++report的应用我就不为大家展示。账单查询界面如下图所示:

    这是我用的添加查询记录的方法。开始我本来是想将DataTable中的数据以单元格的形式循环遍历到到Grid++report中,但是未能实现,望有高手多多指教。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
Grid++Report 是一款高性能的报表开发工具,特别适用于管理信息系统,如ERP、进销存、财务等软件的报表开发。针对票据套打进行了专门实现,也是实现票据打印的好工具。Grid++Report是完全可编程的报表工具,是制作动态报表的最佳选择。针对国式报表的特点进行了很多专门的设计,是为开发国式报表量身定做的一款报表工具。 Grid++Report 提供了具有超强数据展现能力的数据网格(DataGrid)部件,制作各种表格报表非常简便。运行时可通过事件响应使报表与用户交互。提供了可视化报表设计设计报表快速简单。在提供报表打印功能的同时,还提供了报表的查询显示功能,即像各种数据网格(DataGrid)控件一样显示数据,让报表的查询显示与打印一次实现,既保持了数据的一致性又提高了开发效率,这也是 Grid++Report 与其它报表构件的最大区别。 Grid++Report 适用编程平台广泛,所有支持COM的开发平台都可以使用 Grid++Report,为VB.NET、C#、VB、VC、Delphi、C++Builder、易语言编写了大量例程。采用VC+COM+ATL+WTL开发,运行性能高,重新发布简单、发布文件小,且不依赖任何运行时库。总之,选择Grid++Report 报表控件,将给大家带来轻松愉快的报表与打印开发过程,尽享其独具匠心、简单明快、功能强大的美妙,为您的设计带来美观、高质、高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值