机房收费-----Grid++Report报表

机房收费系统账单那里会遇到报表。经过查询得知了这个控件的存在。

一.安装

1.官网上下载安装包

http://www.rubylong.cn/gridreport/download.htm

自己选择一个版本进行安装,我选的是最新版,进入网址直接点击软件下载就可以了。

2.下载完成后点击exe文件进行运行,自己选择安装位置。

 二.配置

1.打开文件

2.插入明细表格 

3.点击明细表格中的SQL图标

4.连接数据库:点击创建数据源连接串。选择ole DB数据源

 3.因为机房使用的是SQL server 所以这里选择SQL server

 4.填写连接:1.选择自己服务器的名称,2.输入用户名和密码(这里的用户名和密码应该与自己数据库的登录名称和密码一样)3.要点击允许保存密码  4.选择报表应该从那个数据库中拉取数据 5.测试连接 成功后点击确定。   

5.输入 查询语句:注意这里的数据库查询sql语句应该输入查询你要生成报表的表格的语句

 

 

三.使用

1. 插入报表头后插入静态框,双击静态框可以进行更改文字

 

2.生成表格中的字段

          在编辑中选择按明细数据源生成字段,在按明细字段生成表格列。双击标题行中的表格,可以进行更改标题内容

3.若是想在报表中添加生成报表的时间就需要添加参数,在对综合文本框进行更改

   工具栏中选择插入--参数--对参数名称进行更改,更改成自己想要应用的。

绘制综合文本框用来存放参数。双击综合文本框对在右边的属性中进行修改。注意:一定要先添加参数然后对综合文本框进行参数的添加。

若是想要存放系统变量的话,可以双击综合文本框 --插入域--系统变量--想要的函数

 最终成品:

两者区别

静态框的作用:存放内容为一般在程序运行阶段,不发生位置和内容的改变的文本。

综合文本框可以显示如标题之类的不改变的内容(静态文本),也可以显示如时间等流水性的内容,

四.代码连接

首先在vb部件中添加控件。

1.这个是想系统在出现账单这个窗体时报表显示时,传递参数到报表中。

Private Sub report_initialize() '初始化数据

    report.ParameterByName("username").AsString = UserName
    report.ParameterByName("begindate").AsString = Format(Begindate.Value, "yyyy-mm-dd")
    report.ParameterByName("enddate").AsString = Format(enddate.Value, "yyyy-mm-dd")
 
End Sub

2.系统加载时,将数据显示出来

Dim report As GridppReport '实例化报表



Private Sub Form_Load()


    Me.Height = 10440
    Me.Width = 13000

   Dim z As Date
    
    '窗体加载显示当前日期

    enddate.Value = Now()
    
    '开始日期的最大值为截止日期
    
    z = enddate.Value
    Begindate.MaxDate = z

    Set report = New GridppReport                      '实例化模版
 
    report.LoadFromFile (App.Path & "\机房收费系统报表.grf")               '加载模版
     report.DetailGrid.Recordset.ConnectionString = ConnectString() '连接数据源

    report.DetailGrid.Recordset.QuerySQL = "select  * from checkWeek_Info "    '通过SELECT查询创建记录集
    report.ParameterByName("username").Value = UserName  '向gridreport内传参数
    report.ParameterByName("begindate").Value = Begindate.Value
    report.ParameterByName("enddate").Value = enddate.Value
    GRDisplayViewer1.report = report
    GRDisplayViewer1.Start

    Dim MsgText As String
    Dim TxtSQL As String
    Dim mrcLine As ADODB.Recordset      '连接在线记录表
    Dim mrcCancel As ADODB.Recordset    '连接退卡表
    Dim mrcRe As ADODB.Recordset        '连接充值表
    Dim mrcWeek As ADODB.Recordset      '连接周账单表
    Dim mrcCh As ADODB.Recordset
    Dim mrcCh5 As ADODB.Recordset       '
    
    Rem:Currency为货币型
    Dim Cancelcash As Currency          '本期退卡金额
    Dim Rechargecash As Currency        '本期充值金额
    Dim Consumecash As Currency         '本期消费金额
    Dim RemainCash As Currency
    Dim allcash As Currency             '本期充值卡余额
    Dim Rechargecard As Currency        '上期充值卡余额
    
    Rem:判断时间
    If Begindate.Value > enddate.Value Then
        MsgBox "终止时间不能小于开始时间", vbOKOnly + vbExclamation, "提示"
        Exit Sub
    End If
    
    
     '查询时间的消费金额
        TxtSQL = "select sum(consume) from line_info where ondate between'" & Format(Begindate.Value, "yyyy-mm-dd") & "'" & "and'" & Format(enddate.Value, "yyyy-mm-dd") & "'"
        Set mrcLine = ExecuteSQL(TxtSQL, MsgText)
            If IsNull(mrcLine.Fields(0)) = True Then
                Consumecash = 0
            Else
                Consumecash = Trim(mrcLine.Fields(0))
            End If
        '查询时间的退卡金额
 
        TxtSQL = "select sum(CancelCash) from CancelCard_info where date between'" & Format(Begindate.Value, "yyyy-mm-dd") & "'" & "and'" & Format(enddate.Value, "yyyy-mm-dd") & "'"
        Set mrcCancel = ExecuteSQL(TxtSQL, MsgText)
            If IsNull(mrcCancel.Fields(0)) = True Then
                Cancelcash = 0
            Else
                Cancelcash = Trim(mrcCancel.Fields(0))
            End If
 
        '查询时间充值金额
        TxtSQL = "select sum(addmoney) from ReCharge_info where date between'" & Format(Begindate.Value, "yyyy-mm-dd") & "'" & "and'" & Format(enddate.Value, "yyyy-mm-dd") & "'"
        Set mrcRe = ExecuteSQL(TxtSQL, MsgText)
            If IsNull(mrcRe.Fields(0)) = True Then
                Rechargecash = 0
            Else
                Rechargecash = Trim(mrcRe.Fields(0))
            End If


    


    '周账单更新
    TxtSQL = "select * from checkweek_info  "
    Set mrcWeek = ExecuteSQL(TxtSQL, MsgText)
    
        mrcWeek.AddNew
        mrcWeek.Fields(0) = 0            '本期充值金额
        mrcWeek.Fields(1) = Trim(Rechargecash)
        mrcWeek.Fields(2) = Trim(Consumecash)
        mrcWeek.Fields(3) = Trim(Cancelcash)
        mrcWeek.Fields(4) = 0
        mrcWeek.Fields(5) = Trim(Date)
        mrcWeek.Update
        mrcWeek.Close

    report.DetailGrid.Recordset.QuerySQL = "select * from checkweek_info where date between'" & Format$(Begindate.Value, "yyyy-mm-dd") & "'" & "and'" & Format$(enddate.Value, "yyyy-mm-dd") & "'"
    report.ParameterByName("begindate").Value = Format$(Begindate.Value, "yyyy-mm-dd")
    report.ParameterByName("enddate").Value = Format$(enddate.Value, "yyyy-mm-dd")
    GRDisplayViewer1.Refresh


End Sub

3.账单,打印,刷新

Private Sub cmdPreview_Click()
   
    report.PrintPreview (True)           '打印预览

End Sub

Private Sub cmdPrint_Click() 
  
    report.[Print] True                 '打印

End Sub

Private Sub cmdRefresh_Click()
    report.ParameterByName("begindate").AsString = Format(Begindate.Value, "yyyy-mm-dd")
    report.ParameterByName("enddate").AsString = Format(enddate.Value, "yyyy-mm-dd")
    report.DetailGrid.Recordset.QuerySQL = "select  * from checkWeek_Info where date between '" & Begindate.Value & "' and '" & enddate.Value & "' "   '通过SELECT查询创建记录集
    
    If Begindate.Value > enddate.Value Then
        MsgBox "终止时间不能小于开始时间", vbOKOnly + vbExclamation, "提示"
        enddate.Value = Now()
        Begindate.Value = Now()
        Exit Sub
    End If
    
    
    GRDisplayViewer1.Refresh '刷新

End Sub

五。出现的问题

运行时系统出现,没有分配到需要的内存,任务已经中止

原因大多数因为版本不匹配或是版本过低

由四中第一张图可知,部件中有5.0和6.0两个版本,版本不同,所占内存也就不同,我们用报表设计器设计出的报表属于最新版,占用内存较大, 我们这里引用的是5.0版本,所以出现内存不匹配的情况。

解决方法:添加6.0的控件。

猜你喜欢

转载自blog.csdn.net/weixin_44663188/article/details/108070030