⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmoneycard.frm

📁 本系统可用于医院和专业体检中心的健康体检管理
💻 FRM
📖 第 1 页 / 共 2 页
字号:
RollBack:
    GCon.RollbackTrans
ErrMsg:
    Status = SetError(Err.Number, Err.Description, Err.Source)
    ErrMsg Status
ExitLab:
    Me.MousePointer = vbDefault
End Sub

Private Sub cmdCancelCard_Click()
On Error GoTo ErrMsg
    Dim Status
    Dim strSQL As String
    Dim rstemp As ADODB.Recordset
    Dim itmCard As ListItem
    Dim strCardID As String
    Dim curMoney As Currency
    
    Me.MousePointer = vbHourglass
    
    '是否有输入
    strCardID = Trim(txtCardID.Text)
    '卡号是否为空
    If strCardID = "" Then
        MsgBox "请输入要注销的卡号!", vbInformation, "提示"
        txtCardID.SetFocus
        GoTo ExitLab
    End If
    
    '卡号是否存在
    strSQL = "select CardID,CardBalance from SET_MONEYCARD" _
            & " where CardID='" & strCardID & "'"
    Set rstemp = New ADODB.Recordset
    rstemp.Open strSQL, GCon, adOpenForwardOnly, adLockReadOnly
    If Not rstemp.EOF Then
        '余额是否为零
        If rstemp("CardBalance") > 0 Then
            If MsgBox("卡号 “" & strCardID & "” 尚存余额 " & rstemp("CardBalance") & " 元。" _
                    & vbCrLf & "确实要注销改卡吗?" _
                    , vbExclamation + vbYesNo + vbDefaultButton2, "警告") = vbNo Then
                txtCardID.SetFocus
                GoTo ExitLab
            End If
        End If
        
        rstemp.Close
    Else
        MsgBox "您输入的卡号不存在。请核对后重新输入!", _
                vbInformation, "提示"
        txtCardID.SetFocus
        GoTo ExitLab
    End If
    
    '提示
    If MsgBox("该操作不可恢复,将同时删除该卡号的所有消费记录!" _
            & vbCrLf & "您确实要注销卡号 “" & strCardID & "” 吗?", _
            vbExclamation + vbYesNo + vbDefaultButton2, "警告") = vbNo Then
        txtCardID.SetFocus
        GoTo ExitLab
    End If
    
    '权限验证
    If gstrClassifyID <> GManager.SystemXTGL Then
        MsgBox "请用管理员帐户登录!", vbExclamation, "警告"
        txtCardID.SetFocus
        GoTo ExitLab
    End If
    
    '在事务中进行注销
    GCon.BeginTrans
    On Error GoTo RollBack
    '删除消费信息表
    strSQL = "delete from SET_MONEYCARD_CONSUME" _
            & " where CardID='" & strCardID & "'"
    GCon.Execute strSQL
    
    '删除代金卡主表
    strSQL = "delete from SET_MONEYCARD" _
            & " where CardID='" & strCardID & "'"
    GCon.Execute strSQL
    '提交事务
    GCon.CommitTrans
    
    '在列表中删除
    If Not (lvwMoneyCard.FindItem(strCardID, lvwText) Is Nothing) Then
        Call DeleteItemFromListView(lvwMoneyCard, lvwMoneyCard.SelectedItem.Index)
        lvwMoneyCard_Click
    End If
    
    '提示
    MsgBox "注销成功!", vbInformation, "提示"
    txtCardID.Text = ""
    txtMoney.Text = ""
    
    '跳转焦点
    txtCardID.SetFocus
    
    GoTo ExitLab
RollBack:
    GCon.RollbackTrans
ErrMsg:
    Status = SetError(Err.Number, Err.Description, Err.Source)
    ErrMsg Status
ExitLab:
    Me.MousePointer = vbDefault
End Sub

Private Sub cmdQuery_Click()
On Error GoTo ErrMsg
    Dim Status
    Dim strSQL As String
    Dim rstemp As ADODB.Recordset
    Dim itmCard As ListItem
    
    Me.MousePointer = vbHourglass
    
    '清除上次可能存在的查询结果
    lvwMoneyCard.ListItems.Clear
    
    '清除空格
    txtMoneyCard.Text = Trim(txtMoneyCard.Text)
    '是否为空
    If txtMoneyCard.Text = "" Then
        If MsgBox("您没有输入任何查询条件,这将显示所有存在的记录,并花费较多时间," _
                & "具体时间视数据多少而定。" & vbCrLf & "确实要继续吗?", _
                vbQuestion + vbYesNo + vbDefaultButton2, "提示") = vbNo Then
            txtMoneyCard.SetFocus
            GoTo ExitLab
        End If
    End If
    
    '查找满足条件的所有记录
    strSQL = "select CardID,CardBalance,SendTime,StopTime" _
            & " from SET_MONEYCARD" _
            & " where CardID like '%" & txtMoneyCard.Text & "%'" _
            & " order by SendTime desc"
    Set rstemp = New ADODB.Recordset
    rstemp.Open strSQL, GCon, adOpenForwardOnly, adLockReadOnly
    If rstemp.EOF Then
        MsgBox "没有找到匹配记录,请重新输入查询条件!", vbInformation, "提示"
        txtMoneyCard.SetFocus
        GoTo ExitLab
    Else
        '显示查询结果
        Do
            Set itmCard = lvwMoneyCard.ListItems.Add(, HEADER & rstemp("CardID"), rstemp("CardID"))
            itmCard.SubItems(1) = rstemp("CardBalance")
            itmCard.SubItems(2) = rstemp("SendTime")
            itmCard.SubItems(3) = rstemp("StopTime") & ""
            
            rstemp.MoveNext
        Loop While Not rstemp.EOF
        
        Set lvwMoneyCard.SelectedItem = lvwMoneyCard.ListItems(1)
        lvwMoneyCard_Click
        
        rstemp.Close
    End If
    
    GoTo ExitLab
ErrMsg:
    Status = SetError(Err.Number, Err.Description, Err.Source)
    ErrMsg Status
ExitLab:
    Me.MousePointer = vbDefault
End Sub

Private Sub cmdSendCard_Click()
On Error GoTo ErrMsg
    Dim Status
    Dim strSQL As String
    Dim rsCard As ADODB.Recordset
    Dim strCardID As String
    Dim curCardMoney As Currency
    Dim dtmNow As Date
    Dim dtmStopTime As Date
    
    Me.MousePointer = vbHourglass
    
    '清除空格
    txtCardID.Text = Trim(txtCardID.Text)
    strCardID = txtCardID.Text
    '是否为空
    If strCardID = "" Then
        MsgBox "请输入要发放的卡号!", vbInformation, "提示"
        txtCardID.SetFocus
        GoTo ExitLab
    End If
    
    '检查该卡号是否已经存在
    strSQL = "select Count(*) from SET_MONEYCARD" _
            & " where CardID='" & strCardID & "'"
    Set rsCard = New ADODB.Recordset
    rsCard.Open strSQL, GCon, adOpenForwardOnly, adLockReadOnly
    If rsCard(0) >= 1 Then
        MsgBox "您输入的卡号已经存在,请核对后重新输入!", vbExclamation, "提示"
        txtCardID.SetFocus
        GoTo ExitLab
    End If
    
    '金额
    curCardMoney = CCur(Val(txtMoney.Text))
    '有效期
    dtmStopTime = dtpStopTime.Value
    '是否有效
    If dtmStopTime <= Date Then
        MsgBox "您输入的有效期不合理,请核对后重新输入!", vbExclamation, "警告"
        dtpStopTime.SetFocus
        GoTo ExitLab
    End If
    
    '确认
    If MsgBox("已经准备就绪,新发放卡的信息如下:" _
            & vbCrLf & "卡号:" & strCardID _
            & vbCrLf & "金额:" & CStr(curCardMoney) _
            & vbCrLf & "有效期至:" & CStr(dtmStopTime) _
            & vbCrLf & vbCrLf & "确实要发放该卡吗?", vbQuestion + vbYesNo + vbDefaultButton1 _
            , "小心") = vbNo Then GoTo ExitLab
            
    '在事务中发放新卡
    GCon.BeginTrans
    On Error GoTo RollBack
    '首先插入一条空记录
    strSQL = "insert into SET_MONEYCARD(CardID)" _
            & " values('" & strCardID & "')"
    GCon.Execute strSQL
    
    dtmNow = Now
    '更新其余字段
    strSQL = "update SET_MONEYCARD set" _
            & " CardBalance=" & curCardMoney _
            & ",SendTime='" & dtmNow & "'" _
            & ",StopTime='" & dtmStopTime & "'" _
            & ",EmployeeID=" & gintManagerID _
            & " where CardID='" & strCardID & "'"
    GCon.Execute strSQL
    
    If CardConsume(strCardID, True, curCardMoney, dtmNow, "发卡") = False Then GoTo RollBack
    '提交事务
    GCon.CommitTrans
    
    '提示
    MsgBox "发卡成功!", vbInformation, "提示"
    txtCardID.Text = ""
    txtMoney.Text = ""
    
    '跳转焦点
    txtCardID.SetFocus
    
'    CmdQuery_Click
'    '定位到当前添加的卡号
'    Call lvwMoneyCard.FindItem(strCardID)
'    lvwMoneyCard_Click
    
    GoTo ExitLab
RollBack:
    GCon.RollbackTrans
ErrMsg:
    Status = SetError(Err.Number, Err.Description, Err.Source)
    ErrMsg Status
ExitLab:
    Me.MousePointer = vbDefault
End Sub

Private Sub Form_Load()
    Me.Left = 20
    Me.Top = 30
    Me.Width = 12540
    Me.Height = 9405
    
    '有效期默认为一年
    dtpStopTime.Value = DateAdd("yyyy", 1, Date)
End Sub

Private Sub lvwMoneyCard_Click()
On Error GoTo ErrMsg
    Dim itmCard As ListItem
    Dim strCardID As String
    Dim Status
    Dim strSQL As String
    Dim rsInfo As ADODB.Recordset
    Dim itmInfo As ListItem
    
    Me.MousePointer = vbHourglass
    
    '清除消费记录
    lvwConsumeInfo.ListItems.Clear
    
    '是否有选择
    Set itmCard = lvwMoneyCard.SelectedItem
    If itmCard Is Nothing Then
        GoTo ExitLab
    End If
    
    '记录ID
    strCardID = Mid(itmCard.Key, 2)
    '在录入框里面显示卡号
'    txtMoneyCard.Text = strCardID
'    txtMoneyCard_LostFocus
    
    '显示消费记录
    strSQL = "select ConsumeMoney,ConsumeTime,IsAppend,Memo,RY_Employee.Name" _
            & " from SET_MONEYCARD_CONSUME,RY_Employee" _
            & " where CardID='" & strCardID & "'" _
            & " and SET_MONEYCARD_CONSUME.EmployeeID=RY_Employee.EmployeeID" _
            & " order by ConsumeTime"
    Set rsInfo = New ADODB.Recordset
    rsInfo.Open strSQL, GCon, adOpenForwardOnly, adLockReadOnly
    If Not rsInfo.EOF Then
        Do
            Set itmInfo = lvwConsumeInfo.ListItems.Add(, , rsInfo("ConsumeTime"))
            If rsInfo("IsAppend") Then
                itmInfo.SubItems(1) = rsInfo("ConsumeMoney")
            Else
                itmInfo.SubItems(2) = rsInfo("ConsumeMoney")
            End If
            itmInfo.SubItems(3) = rsInfo("Memo") & ""
            itmInfo.SubItems(4) = rsInfo("Name") & ""
            
            rsInfo.MoveNext
        Loop While Not rsInfo.EOF
        
        rsInfo.Close
    End If
    
    GoTo ExitLab
ErrMsg:
    Status = SetError(Err.Number, Err.Description, Err.Source)
    ErrMsg Status
ExitLab:
    Me.MousePointer = vbDefault
End Sub

Private Sub lvwMoneyCard_KeyUp(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
        lvwMoneyCard_Click
    End If
End Sub

Private Sub txtCardID_GotFocus()
    txtCardID.SelStart = 0
    txtCardID.SelLength = Len(txtCardID.Text)
End Sub

Private Sub txtCardID_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        txtMoney.SetFocus
    End If
End Sub

Private Sub txtCardID_LostFocus()
On Error Resume Next
    Dim strSQL As String
    Dim rstemp As ADODB.Recordset
    Dim strCardID As String
    
    Me.MousePointer = vbArrowHourglass
    
    '是否输入了卡号
    strCardID = Trim(txtCardID.Text)
    txtCardID.Text = strCardID
    If strCardID = "" Then GoTo ExitLab
    
    '检查卡号是否已经存在
    strSQL = "select StopTime from SET_MONEYCARD" _
            & " where CardID='" & strCardID & "'"
    Set rstemp = New ADODB.Recordset
    rstemp.Open strSQL, GCon, adOpenForwardOnly, adLockReadOnly
    If Not rstemp.EOF Then
        If Not IsNull(rstemp("StopTime")) Then
            dtpStopTime.Value = rstemp("StopTime")
        End If
        rstemp.Close
    End If
            
    
    GoTo ExitLab
ExitLab:
    Me.MousePointer = vbDefault
End Sub

Private Sub txtMoneyCard_GotFocus()
    txtMoneyCard.SelStart = 0
    txtMoneyCard.SelLength = Len(txtMoneyCard.Text)
End Sub

Private Sub txtMoneyCard_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        cmdQuery_Click
        txtMoneyCard.SetFocus
    End If
End Sub

Private Sub txtMoneyCard_LostFocus()
    txtMoneyCard_GotFocus
End Sub

Private Sub XPCommandButton3_Click()
    Unload Me
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -