机房收费系统之日结账单表
2010-08-23 12:58
531 查看
窗体目的:该窗体是用来查看每天所有卡内的金额信息(充值,注册,消费和退卡信息)。
窗体功能:
1,只查询当天的充值卡信息。
2,查询全部的充值卡信息。
3,查询一段时间内的充值卡信息。
4,对每张表分别进行打印和预览。
思路一:
在这里我用到了三张Grid++Report报表,对于该报表,我对其认识是:
它有两种方法调用数据库中的表:通过模板和代码。
1,通过模板比较简单。你只需要在设计模板时查询条件写入相应的条件,然后在使用时直接调用该模板即可。该方法比较简单但是不能灵活使用(不能在窗体中更改查找的条件)
2,通过代码比较灵活。这种方法其实就是把模板中的查询条件转移到了我们的代码中(不过多了一个写入数据的函数),也就是说该方法是自己编写的方法将表中的数据写入到报表中的,而这里设计的模板只不过是一个背景而已,那么主要过程都是自己写的,当然就有控制权了,所以该方法可灵活变换你想要查找的表和字段。
再来就是对DTpicker的使用(这个也是第一次接触啊!),感觉这个控件挺好用的,在这里我主要用到了它的Value属性和Closeup事件。
对于查找范围内的充值卡信息就是在该过程中完成的:
'在窗体加载中
Report3.LoadFromFile ("E:/SQL/收费系统/机房收费系统/Management.grf")
GRDisplayViewer3.Report = Report3
'选择开始时间
Private Sub DTPstart_CloseUp()
If (DTPstart.Value > Date Or DTPstart.Value > DTPend.Value) Then
MsgBox "开始时间不能大于现在或结束时间!", vbExclamation + vbOKOnly, "警告"
DTPstart.Value = Date
Exit Sub
End If
GRDisplayViewer3.Visible = True
GRDisplayViewer1.Visible = False
GRDisplayViewer2.Visible = False
GRDisplayViewer3.Start
GRDisplayViewer3.Refresh
End Sub
思路二:
只用一张Grid++Rport表;然后今天和全部的信息通过对DTPicker值的更改及调用来完成:
例如:
'在窗体加载中
Report.LoadFromFile ("E:/SQL/收费系统/机房收费系统/Management.grf")
GRDisplayViewer.Report = Report
'选择开始时间
Private Sub DTPstart_CloseUp()
If (DTPstart.Value > Date Or DTPstart.Value > DTPend.Value) Then
MsgBox "开始时间不能大于现在或结束时间!", vbExclamation + vbOKOnly, "警告"
DTPstart.Value = Date
Exit Sub
End If
GRDisplayViewer.Start
GRDisplayViewer.Refresh
End Sub
'显示今天
Private Sub cmdRefreshToday_Click()
DTPend.Value = Date
DTPstart.Value = Date
Call DTPstart_CloseUp
Exit Sub
End Sub
'显示全部
Private Sub cmdRefreshAll_Click()
Dim strSQL As String
Dim MsgString As String
Dim mrs As ADODB.Recordset
strSQL = "select * from Daycheckout where Date='" & Format(Date, "yyyy/mm/dd") & "'"
Set mrs = ExecuteSQL(strSQL, MsgString)
If mrs.EOF Then
Call cmdRefreshToday_Click
Exit Sub
Else
mrs.MoveLast
DTPend.Value = mrs.Fields(5)
mrs.MoveFirst
DTPstart.Value = mrs.Fields(5)
Call DTPstart_CloseUp
Exit Sub
End If
End Sub
对于涉及到钱的部分,我调用了三张表:
1,当天充值金额:通过调用学生信息表中当天的注册金额加上充值表中当天的充值金额。
'获取充值金额
strSQL = "select * from Recharge where RechargeDate='" & Format(Date, "yyyy/mm/dd") & "'"
Set mrs(2) = ExecuteSQL(strSQL, MsgString)
If mrs(2).EOF Then
Recharge = 0
Else
Do While Not (mrs(2).EOF)
Recharge = Recharge + Val(Trim(CStr(mrs(2).Fields(1))))
mrs(2).MoveNext
Loop
’Recharge = Recharge + Register(我之前写到了这里,结果当充值表为空时,充值金额为0,即使有注册金额,Recharge也不能获得)
End If
Recharge = Recharge + Register ‘Register是通过学生信息表获得的注册金额
2,当天消费金额:通过遍历上机记录表来获得当天的消费金额。
3,当天退还余额:通过遍历退卡记录表获得当天的退还金额。
3,本期充值卡余额:通过遍历最新余额表来获得。
4,上期充值卡余额:通过前三者的关系来获得(通过本期充值卡余额+当天退还金额+当天消费金额-当天充值金额),我这是倒过来算的;当然还有其他的方法,比如先获得前一天的余额,将其赋值给今天的上期余额也可以(因为我的sql语句写的是取得今天的日结账记录,所以获得前一天的还得再写个表,觉着还是这样比较好,虽然是倒着推的)。
窗体功能:
1,只查询当天的充值卡信息。
2,查询全部的充值卡信息。
3,查询一段时间内的充值卡信息。
4,对每张表分别进行打印和预览。
思路一:
在这里我用到了三张Grid++Report报表,对于该报表,我对其认识是:
它有两种方法调用数据库中的表:通过模板和代码。
1,通过模板比较简单。你只需要在设计模板时查询条件写入相应的条件,然后在使用时直接调用该模板即可。该方法比较简单但是不能灵活使用(不能在窗体中更改查找的条件)
2,通过代码比较灵活。这种方法其实就是把模板中的查询条件转移到了我们的代码中(不过多了一个写入数据的函数),也就是说该方法是自己编写的方法将表中的数据写入到报表中的,而这里设计的模板只不过是一个背景而已,那么主要过程都是自己写的,当然就有控制权了,所以该方法可灵活变换你想要查找的表和字段。
再来就是对DTpicker的使用(这个也是第一次接触啊!),感觉这个控件挺好用的,在这里我主要用到了它的Value属性和Closeup事件。
对于查找范围内的充值卡信息就是在该过程中完成的:
'在窗体加载中
Report3.LoadFromFile ("E:/SQL/收费系统/机房收费系统/Management.grf")
GRDisplayViewer3.Report = Report3
'选择开始时间
Private Sub DTPstart_CloseUp()
If (DTPstart.Value > Date Or DTPstart.Value > DTPend.Value) Then
MsgBox "开始时间不能大于现在或结束时间!", vbExclamation + vbOKOnly, "警告"
DTPstart.Value = Date
Exit Sub
End If
GRDisplayViewer3.Visible = True
GRDisplayViewer1.Visible = False
GRDisplayViewer2.Visible = False
GRDisplayViewer3.Start
GRDisplayViewer3.Refresh
End Sub
思路二:
只用一张Grid++Rport表;然后今天和全部的信息通过对DTPicker值的更改及调用来完成:
例如:
'在窗体加载中
Report.LoadFromFile ("E:/SQL/收费系统/机房收费系统/Management.grf")
GRDisplayViewer.Report = Report
'选择开始时间
Private Sub DTPstart_CloseUp()
If (DTPstart.Value > Date Or DTPstart.Value > DTPend.Value) Then
MsgBox "开始时间不能大于现在或结束时间!", vbExclamation + vbOKOnly, "警告"
DTPstart.Value = Date
Exit Sub
End If
GRDisplayViewer.Start
GRDisplayViewer.Refresh
End Sub
'显示今天
Private Sub cmdRefreshToday_Click()
DTPend.Value = Date
DTPstart.Value = Date
Call DTPstart_CloseUp
Exit Sub
End Sub
'显示全部
Private Sub cmdRefreshAll_Click()
Dim strSQL As String
Dim MsgString As String
Dim mrs As ADODB.Recordset
strSQL = "select * from Daycheckout where Date='" & Format(Date, "yyyy/mm/dd") & "'"
Set mrs = ExecuteSQL(strSQL, MsgString)
If mrs.EOF Then
Call cmdRefreshToday_Click
Exit Sub
Else
mrs.MoveLast
DTPend.Value = mrs.Fields(5)
mrs.MoveFirst
DTPstart.Value = mrs.Fields(5)
Call DTPstart_CloseUp
Exit Sub
End If
End Sub
对于涉及到钱的部分,我调用了三张表:
1,当天充值金额:通过调用学生信息表中当天的注册金额加上充值表中当天的充值金额。
'获取充值金额
strSQL = "select * from Recharge where RechargeDate='" & Format(Date, "yyyy/mm/dd") & "'"
Set mrs(2) = ExecuteSQL(strSQL, MsgString)
If mrs(2).EOF Then
Recharge = 0
Else
Do While Not (mrs(2).EOF)
Recharge = Recharge + Val(Trim(CStr(mrs(2).Fields(1))))
mrs(2).MoveNext
Loop
’Recharge = Recharge + Register(我之前写到了这里,结果当充值表为空时,充值金额为0,即使有注册金额,Recharge也不能获得)
End If
Recharge = Recharge + Register ‘Register是通过学生信息表获得的注册金额
2,当天消费金额:通过遍历上机记录表来获得当天的消费金额。
3,当天退还余额:通过遍历退卡记录表获得当天的退还金额。
3,本期充值卡余额:通过遍历最新余额表来获得。
4,上期充值卡余额:通过前三者的关系来获得(通过本期充值卡余额+当天退还金额+当天消费金额-当天充值金额),我这是倒过来算的;当然还有其他的方法,比如先获得前一天的余额,将其赋值给今天的上期余额也可以(因为我的sql语句写的是取得今天的日结账记录,所以获得前一天的还得再写个表,觉着还是这样比较好,虽然是倒着推的)。