日账单

【窗体设置】

我的日账单窗体设置是,在加载的时候插入今天的账单,在窗体中显示所有日账单表里的数据。然后点击日结账单刷新只显示今天的。

【Grid++Report报表设计器与VB的交互】

在窗体加载事件中,加载报表

    Set Report = New gregn6LibCtl.GridppReport                      '实例化模版
    Report.LoadFromFile (App.Path & "\checkday.grf")               '加载模版
    Report.DetailGrid.Recordset.ConnectionString = ConnectString() '连接数据源
    Report.DetailGrid.Recordset.QuerySQL = "select  * from checkday_Info "    '通过SELECT查询创建记录集
    Report.ParameterByName("Operator").Value = UserName '向gridreport内传参数
    Report.ParameterByName("Administrator").Value = UserName
    GRDisplayViewer1.Report = Report
    GRDisplayViewer1.Start                                         '开始打印

日账单的刷新

Private Sub cmdRefresh_Click()
    Report.DetailGrid.Recordset.QuerySQL = "select  * from checkday_Info  where date='" & Format(Now(), "yyyy-MM-dd") & "'" '通过SELECT查询创建记录集
    GRDisplayViewer1.Refresh '刷新
End Sub

打印预览

Report.PrintPreview (True)           '打印预览

打印

Report.[Print] True                 '打印

【计算今日账单】

① 计算过程

上期余额:等于前一天(如果前一天没有记录再往前查)的本期余额

当日充值余额:从recharge_info表里查出来的当前充值的总钱数

当日消费余额:从Line_info表里查的消费余额

当日退还金额:从cancelcard_info表里查出来的退卡金额

本期金额:上期余额+当日充值金额-当日消费金额-当日退还金额

② 代码

    Dim Remaincash  As Single           '定义上期余额
    Dim RechargeCash As Single          '定义充值金额
    Dim ConsumeCash As Single           '定义消费金额
    Dim CancelCash As Single            '定义退还金额
    Dim AllCash As Integer              '定义本期余额
    
    Dim TadayDate                       '定义日期
    Dim n As Integer
    
    '计算上期余额
    TadayDate = Format(Now() - 1, "yyyy-mm-dd")            '让日期等于前一天
    DtxtSQL = "select * from checkday_info where date ='" & TadayDate & "'"        '查询前一天的记录
    Set Dmrc = ExecuteSQL(DtxtSQL, Dmsgtext)
    n = 1
    Do While Dmrc.RecordCount = 0                          '当前一天没有记录的时候,利用循环语句,一直往前一天查
        n = n + 1
        TadayDate = Format(Now() - n, "yyyy-mm-dd")
        DtxtSQL = "select * from checkday_info where date ='" & TadayDate & "'"     
        Set Dmrc = ExecuteSQL(DtxtSQL, Dmsgtext)
    Loop
    If IsNull(Dmrc.Fields(4)) = True Then
        Remaincash = 0
    Else
        Remaincash = Trim(Dmrc.Fields(4)) & ""
    End If
    
    '计算当日充值金额
    RtxtSQL = "select sum(addmoney) from Recharge_info where date ='" & Format(Now(), "yyyy-mm-dd") & "'"
    Set Rmrc = ExecuteSQL(RtxtSQL, Rmsgtext)
    If IsNull(Rmrc.Fields(0)) = True Then
        RechargeCash = 0
    Else
        RechargeCash = Trim(Rmrc.Fields(0))
    End If
    Rmrc.Close
    
    '计算消费金额
    LtxtSQL = "select sum(consume) from line_info where offdate='" & Format(Now(), "yyyy-mm-dd") & "'"
    Set Lmrc = ExecuteSQL(LtxtSQL, Lmsgtext)
    If IsNull(Lmrc.Fields(0)) = True Then
        ConsumeCash = 0
    Else
        ConsumeCash = Trim(Lmrc.Fields(0))
    End If
    Lmrc.Close
    
    '计算退还金额
    CtxtSQL = "select sum(cancelcash) from cancelcard_info where date='" & Format(Now(), "yyyy-mm-dd") & "'"
    Set Cmrc = ExecuteSQL(CtxtSQL, Cmsgtext)
    If IsNull(Cmrc.Fields(0)) = True Then
        CancelCash = 0
    Else
        CancelCash = Trim(Cmrc.Fields(0))
    End If
    Cmrc.Close
    
    '计算本期金额
    AllCash = Remaincash + RechargeCash - ConsumeCash - CancelCash

【今天账单插入】

在插入今日账单之前,应该先查询是否今天已经结算,如果结算,就把之前的删除,在插入。然后在显示报表

插入数据

    '在表checkday_info表中插入数据
    DtxtSQL = "insert into checkday_info values('" & Remaincash & "','" & RechargeCash & "','" & ConsumeCash & "','" & CancelCash & "','" & AllCash & "','" & Format(Now(), "yyyy-mm-dd") & "')"
    Call ExecuteSQL(DtxtSQL, Dmsgtext)

猜你喜欢

转载自blog.csdn.net/make_1998/article/details/85053003
今日推荐