VB机房收费系统09——日结账单和周结账单
发布时间
阅读量:
阅读量
前言
在整个机房项目的过程中,这是一项具有挑战性的核心任务。在过去的连续三天里,在处理这两份关键账单时遇到了诸多技术难题,并最终得以圆满解决。敲定之后,在这里将我的心得与经验与大家分享出来,并期待得到大家的支持与反馈。
正文
这窗体不是敲出来,是调用和显示出来的!

在本处我们主要应用了报表系统,在此过程中我们可以采用以下几种方法:首先是在报表下开发一个设备生成器的同时还可以自行设计;另外一种方式则是直接选用提供的机房素材进行配置
基于我的实践经验而言,在制作报表方面比调试代码流程更为简单,在处理代码逻辑时也比寻找特定的控件更为顺利。
画报表
画报表参考博客:
调试报表代码
报表代码有点类似机房中用到的“导出EXECEL”代码,是万能的。
日结账单全代码:
Option Explicit
'定义报表对象
Dim Report As grproLibCtl.GridppReport
Private Sub Form_Load()
Dim StrSQL As String
Dim strMsg As String
'创建报表对象
StrSQL = "select * from CheckDay_Info where date= '" & Date & "' "
'实例化报表
Set Report = New grproLibCtl.GridppReport
'载入报表模板文件
Report.LoadFromFile (App.Path & "\daycheck.grf")
'数据源连接
Report.DetailGrid.Recordset.ConnectionString = connectstring
'通过SELECT查询创建记录集
Report.DetailGrid.Recordset.QuerySQL = StrSQL
'显示报表中的内容
GRDisplayViewer1.Report = Report
GRDisplayViewer1.Start
End Sub
Private Sub cmddaylist_Click()
'日结账单刷新
Dim txtsql As String
Dim msgtext As String
Dim mrc As ADODB.Recordset
txtsql = "select * from checkday_Info "
Set mrc = ExecuteSQL(txtsql, msgtext)
'刷新
Report.DetailGrid.Recordset.QuerySQL = "select * from CheckDay_Info where date= '" & Date & "' "
GRDisplayViewer1.Refresh
End Sub
Private Sub cmdprintpreview_Click()
'打印预览
Report.PrintPreview (True)
End Sub
Private Sub cmdprint_Click()
'打印,因为报表对象的print方法名与vb的内部定义方法有冲突所以要用中括号
Report.[Print] (True)
End Sub
周结账单全部代码
Dim WithEvents Report As grproLibCtl.GridppReport
Private Sub cmdweeklist_Click()
'账单刷新
Dim txtsql As String
Dim msgtext As String
Dim mrc As ADODB.Recordset
Dim mrc1 As ADODB.Recordset
Dim mrc2 As ADODB.Recordset
Dim mrc3 As ADODB.Recordset
Dim mrc4 As ADODB.Recordset
Dim mrc5 As ADODB.Recordset
Dim RemainCash As Integer
Dim RechargeCash As Integer
Dim ConsumeCash As Integer
Dim CancelCash As Integer
Dim AllCash As Integer
If DTPicker1.Value > DTPicker2.Value Then
MsgBox "终止日期不能小于起始日期", 48, "提示"
Exit Sub
Else
If DTPicker1.Value And DTPicker2.Value > Date Then
MsgBox "小主,日子还没到呢", 48, "提示"
DTPicker1.Value = Date
DTPicker2.Value = Date
Exit Sub
Else
txtsql = "select * from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker2.Value & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF Then
MsgBox "该时间段没有数据!", 48, "提示"
Exit Sub
Else
'删除check week表中的记
txtsql = "delete from checkweek_Info"
Set mrc1 = ExecuteSQL(txtsql, msgtext)
'计算上次充值卡金额
mrc.MoveLast
RemainCash = mrc.Fields(0)
'计算总充值金额mrc2
txtsql = "select sum(rechargecash) from checkday_info where date between '" & DTPicker1.Value & " ' and '" & DTPicker2.Value & "'"
Set mrc2 = ExecuteSQL(txtsql, msgtext)
If IsNull(mrc2.Fields(0)) = True Then
RechargeCash = 0
Else
RechargeCash = Trim(mrc2.Fields(0))
End If
'计算总消费金额
txtsql = "select sum(consumecash) from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker2.Value & "'"
Set mrc3 = ExecuteSQL(txtsql, msgtext)
If IsNull(mrc3.Fields(0)) = True Then
ConsumeCash = 0
Else
ConsumeCash = Trim(mrc3.Fields(0))
End If
'计算总退卡金额
txtsql = "select sum(cancelcash) from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker1.Value & "'"
Set mrc4 = ExecuteSQL(txtsql, msgtext)
If IsNull(mrc4.Fields(0)) = True Then
CancelCash = 0
Else
CancelCash = Trim(mrc4.Fields(0))
End If
'计算本期充值卡金额
mrc.MoveLast
AllCash = mrc.Fields(4)
'添加到check week表中
txtsql = "select * from checkweek_info"
Set mrc1 = ExecuteSQL(txtsql, msgtext)
mrc1.AddNew
mrc1.Fields(0) = RemainCash
mrc1.Fields(1) = RechargeCash
mrc1.Fields(2) = ConsumeCash
mrc1.Fields(3) = CancelCash
mrc1.Fields(4) = AllCash
mrc1.Fields(5) = Date
mrc1.Update
'显示报表中的内容
Report.DetailGrid.Recordset.QuerySQL = txtsql
GRDisplayViewer1.Refresh
'给报表的日期赋值
Report.ParameterByName("BeginDate").Value = Format$(DTPicker1.Value, "yyyy-mm-dd")
Report.ParameterByName("EndDate").Value = Format$(DTPicker2.Value, "yyyy-mm-dd")
Report.ParameterByName("XX").Value = UserName
End If
End If
End If
End Sub
Private Sub cmdprint_Click()
Report.[Print] (True)
End Sub
Private Sub cmdprintpreview_Click()
Report.PrintPreview (True)
End Sub
Private Sub Form_Load()
txtsql = "select * from checkweek_info"
'创建报表对象
Set Report = New grproLibCtl.GridppReport
'放入做好的报表文件
Report.LoadFromFile (App.Path & "\weekcheck.grf")
'连接数据源
Report.DetailGrid.Recordset.ConnectionString = "FileDSN=charge.dsn;UID=sa;PWD=123456"
Report.DetailGrid.Recordset.QuerySQL = txtsql
'显示报表的内容
GRDisplayViewer1.Report = Report
GRDisplayViewer1.Start
'给报表的日期赋值
Report.ParameterByName("BeginDate").Value = Format$(DTPicker1.Value, "yyyy-mm-dd")
Report.ParameterByName("EndDate").Value = Format$(DTPicker2.Value, "yyyy-mm-dd")
Report.ParameterByName("XX").Value = UserName
End Sub
VB报表控件
和数据库原理一样,我们需要把报表程序与VB程序连接在一起。
这就是Displayviewer控件

我们参考了较多的博客内容了解到,在下载报表软件之后会被引用,并且在勾选了两个红色方块之后会显示出来

但这两个红框在我这里根本就不显示。
因为这个原因,我花费了不少时间浏览了多篇相关博客,并向多位同事请教后仍未解决此问题,整整花费了三天时间才得以解决
在晓鸿大神的帮助之下弄清了原因。大家还记得配置机房时需要注册的3个控件吗?

主要是这三个伙伴!我的电脑为什么会出问题?这三个注册的控件不再正常工作。重新注册后发现报表控件显示出了账单。
主要是这三个伙伴!我的电脑为什么会出问题?这三个注册的控件不再正常工作。重新注册后发现报表控件显示出了账单。
报表dll,不会忘了......
全部评论 (0)
还没有任何评论哟~
