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

📄 frmmainwatermeterinsteadinput.frm

📁 自来水公司的一个管理系统
💻 FRM
📖 第 1 页 / 共 3 页
字号:
Option Explicit

Dim adoMWmInsteadRS As ADODB.Recordset

Dim bytCommandFlag As Byte  '用于记录第一组按钮的状态,这样,在第二组的保存,放弃按钮中
                            '就可知道是原来是按的新增还是编辑,从而采取不同的处理方法
Dim strCurJFYm As String    '当前所处的计费年月(由计费记录表来判断)

'---------------------------------------------------
'按钮事件
'---------------------------------------------------
Private Sub cmdCommandArray1_Click(Index As Integer)
    Dim strFixID As String
    
    bytCommandFlag = Index
    Select Case Index
        Case 0  '输入
            strFixID = Trim(GetMaxFixID())
            If strFixID = "" Then
                Warning "得到维修单编号出错!!!"
                Exit Sub
            End If
            
            Call DisableCMD1
            Call EnableCMD2
            Call DisableCMD3
            
            Call InitInterface
            Call EnableInterface
            Me.txtFixID.Text = strFixID
            Me.dtpReportDate.SetFocus
        
        Case 1  '编辑
            If Trim(Me.txtFixID.Text) = "" Then Exit Sub
            
            Call DisableCMD1
            Call EnableCMD2
            Call DisableCMD3
            
            Call EnableInterface
            Me.txtFixID.Enabled = False '注意:编辑时只能对该编号用户的维修内容进行编辑
            Me.txtOldMWmID.Enabled = False   '注意:编辑时不允许编辑原水表编号(原因和不能删除一样)
            Me.txtNewMWmID.Enabled = False   '注意:编辑时不允许编辑新水表编号(原因和不能删除一样)
            Me.dtpReportDate.SetFocus
        
'对于更换操作由于牵扯到用户档案的修改,因此不能删除(如果删除将带来一系列的问题),如果确实要“删除”,只能再次更换
'        Case 2  '删除
'            Dim bytReturnFlag As Byte '用于接收msgbox
'
'            If Trim(Me.txtFixID.Text) = "" Then Exit Sub
'            If adoMWmInsteadRS.EOF Or adoMWmInsteadRS.BOF Then Exit Sub
'
'            bytReturnFlag = MsgBox("确定要删除该用户的水表更换记录吗?", vbYesNo + vbInformation + vbDefaultButton2, "提示信息")
'            If bytReturnFlag = vbNo Then Exit Sub
'
'            '删除该记录,清屏
'            adoMWmInsteadRS.Delete
'            On Error Resume Next
'            adoMWmInsteadRS.MoveNext
'            If adoMWmInsteadRS.EOF Then adoMWmInsteadRS.MovePrevious
'            On Error GoTo 0
'            Call DisplayCurrentData
'            Call InitCommandBox
'
        Case Else
            MsgBox "按扭功能未定义", vbOKOnly + vbExclamation, "警告"
    End Select

End Sub

Private Sub cmdCommandArray2_Click(Index As Integer)
    Dim bytReturnFlag As Byte '用于接收msgbox
    
    Select Case Index
        Case 0  '保存
            '检测关键数据是否填写
            If Trim(Me.txtOldMWmID.Text) = "" Then
                Warning "原总表编号没有输入!!!"
                Me.txtOldMWmID.SetFocus
                Exit Sub
            End If
            If Trim(Me.txtNewMWmID.Text) = "" Then
                Warning "新总表编号没有输入!!!"
                Me.txtNewMWmID.SetFocus
                Exit Sub
            End If
            
            '保存提示
            bytReturnFlag = MsgBox("请仔细核对更换前、更换后水表的读数和编号以及所属计费时段" & Chr(13) & Chr(13) & "这些数据将直接影响总用水量计算操作!!!", vbYesNoCancel + vbInformation + vbDefaultButton1, "提示信息")
            If bytReturnFlag = vbNo Then            '不保存
                Call DisplayCurrentData
            ElseIf bytReturnFlag = vbCancel Then    '从试
                Exit Sub
            ElseIf bytReturnFlag = vbYes Then       '保存数据
                Call SaveCurrenData
            End If
            Call DisableInterface
            Call InitCommandBox
                   
        Case 1  '放弃
            Call DisplayCurrentData
            Call DisableInterface
            Call InitCommandBox
    
        Case Else
            MsgBox "按扭功能未定义", vbOKOnly + vbExclamation, "警告"
    End Select

End Sub

Private Sub cmdCommandArray3_Click(Index As Integer)
    Select Case Index
        Case 0  '<<
            If adoMWmInsteadRS.BOF Then         '记录集为空的情况
                'Warning "已经处于首记录!"
                Beep
                Exit Sub
            End If
            
            adoMWmInsteadRS.MovePrevious        '如果已经是首条的情况,Beep
            If adoMWmInsteadRS.BOF Then
                adoMWmInsteadRS.MoveNext
                Beep
                Exit Sub
            End If
            
            adoMWmInsteadRS.MoveFirst           '正常情况
            Call DisplayCurrentData
        
        Case 1  '<
            If adoMWmInsteadRS.BOF Then
                'Warning "已经处于首记录!"
                Beep
                Exit Sub
            End If
            adoMWmInsteadRS.MovePrevious
            If adoMWmInsteadRS.BOF Then
                adoMWmInsteadRS.MoveNext
                Beep
            Else
                Call DisplayCurrentData
            End If
        
        Case 2  '>
            If adoMWmInsteadRS.EOF Then
                'Warning "已经处于尾记录!"
                Beep
                Exit Sub
            End If
            adoMWmInsteadRS.MoveNext
            If adoMWmInsteadRS.EOF Then
                adoMWmInsteadRS.MovePrevious
                Beep
            Else
                Call DisplayCurrentData
            End If
        
        Case 3  '>>
            If adoMWmInsteadRS.EOF Then         '记录集为空的情况
                'Warning "已经处于尾记录!"
                Beep
                Exit Sub
            End If
            
            adoMWmInsteadRS.MoveNext            '如果已经是尾条的情况,Beep
            If adoMWmInsteadRS.EOF Then
                adoMWmInsteadRS.MovePrevious
                Beep
                Exit Sub
            End If
            
            adoMWmInsteadRS.MoveLast            '正常情况
            Call DisplayCurrentData
        
        Case Else
            MsgBox "按扭功能未定义", vbOKOnly + vbExclamation, "警告"
    End Select
End Sub



'---------------------------------------------------
'窗体事件
'---------------------------------------------------
Private Sub Form_Load()
    Dim strSQL As String
    
    MoveToCenter gMainFormRefer, Me
    
    '设置关键控件的属性
    Me.txtFixID.MaxLength = gFixIDLen
    Me.txtFixID.Mask = String(gFixIDLen, "9")
    Me.txtOldMWmID.MaxLength = gMWmIDLen
    Me.txtOldMWmID.Mask = String(gMWmIDLen, "9")
    Me.txtNewMWmID.MaxLength = gMWmIDLen
    Me.txtNewMWmID.Mask = String(gMWmIDLen, "9")
    Me.txtYear.MaxLength = 4
    Me.txtYear.Mask = "9999"
    
    Me.debOldMWmRead.MaxLen = 12
    Me.debNewMWmRead.MaxLen = 12
    
    Call FillMonth
    
    '设置当前的水费计费月份
    strCurJFYm = Trim(GetCurJFYm())
    If strCurJFYm = "" Then
        Warning "得到当前计费月份出错!!!"
        Call DisableCMD1
        Call DisableCMD2
        Call DisableCMD3
        Exit Sub
    End If
    
    '初始化界面
    Call InitInterface
    Call DisableInterface
    
    '初始化记录集
    strSQL = "select * from MWaterMeterInstead order by FixID"
    On Error GoTo errHandleInit
    Set adoMWmInsteadRS = New ADODB.Recordset
    Set adoMWmInsteadRS.ActiveConnection = gConnect
    adoMWmInsteadRS.CursorLocation = adUseClient
    adoMWmInsteadRS.CursorType = adOpenKeyset
    adoMWmInsteadRS.LockType = adLockOptimistic
    adoMWmInsteadRS.Open strSQL
    On Error GoTo 0
    
    If Not (adoMWmInsteadRS.EOF And adoMWmInsteadRS.BOF) Then
        adoMWmInsteadRS.MoveLast
    End If
    
    Call DisplayCurrentData
    Call InitCommandBox
    Exit Sub
    
    '-------错误处理---------
errHandleInit:
    Warning "记录集初始化失败!" & Chr(13) & Err.Description
    On Error GoTo 0
    Call DisableCMD1
    Call DisableCMD2
    Call DisableCMD3
    
End Sub


'---------------------------------------------------
'自定义函数/过程
'---------------------------------------------------
Private Sub InitInterface()
    Me.txtFixID.Text = String(gFixIDLen, " ")
    
    Me.dtpReportDate.value = Date
    Me.txtReportMan.Text = ""
    
    Me.txtOldMWmID.Text = String(gMWmIDLen, " ")
    Me.txtNewMWmID.Text = String(gMWmIDLen, " ")
    
    Me.debOldMWmRead.Text = 0
    Me.debNewMWmRead.Text = 0
    
    Me.txtYear.Text = Mid(strCurJFYm, 1, 4)
    Me.cboMonth.ListIndex = Val(Mid(strCurJFYm, 5, 2)) - 1
    
    Me.txtOldMWmStatus.Text = ""
    Me.txtNewMWmStatus.Text = ""
    Me.txtFixMan.Text = ""
    Me.dtpFixDate.value = Date
End Sub

Private Sub InitCommandBox()
    Call EnableCMD1
    
    '根据"维修单编号"是否为空来决定是否打开"编辑"和"删除"按扭
    If Trim(Me.txtFixID.Text) = "" Then
        cmdCommandArray1(1).Enabled = False '编辑
        'cmdCommandArray1(2).Enabled = False '删除
    End If
    Call DisableCMD2
    Call EnableCMD3
End Sub

Private Sub EnableInterface()
    Me.txtFixID.Enabled = True
    
    Me.dtpReportDate.Enabled = True
    Me.txtReportMan.Enabled = True
    
    Me.txtOldMWmID.Enabled = True
    'Me.txtNewMWmID.Enabled = True
    Me.debOldMWmRead.Enabled = True
    Me.debNewMWmRead.Enabled = True
    Me.txtYear.Enabled = True
    Me.cboMonth.Enabled = True
    
    Me.txtOldMWmStatus.Enabled = True
    Me.txtNewMWmStatus.Enabled = True
    Me.txtFixMan.Enabled = True
    Me.dtpFixDate.Enabled = True
End Sub

Private Sub DisableInterface()
    Me.txtFixID.Enabled = False
    
    Me.dtpReportDate.Enabled = False
    Me.txtReportMan.Enabled = False
    
    Me.txtOldMWmID.Enabled = False
    Me.txtNewMWmID.Enabled = False
    Me.debOldMWmRead.Enabled = False
    Me.debNewMWmRead.Enabled = False
    Me.txtYear.Enabled = False
    Me.cboMonth.Enabled = False
    
    Me.txtOldMWmStatus.Enabled = False
    Me.txtNewMWmStatus.Enabled = False
    Me.txtFixMan.Enabled = False
    Me.dtpFixDate.Enabled = False
End Sub

Private Sub FillMonth()
    Me.cboMonth.Clear
    Me.cboMonth.AddItem "01"
    Me.cboMonth.AddItem "02"
    Me.cboMonth.AddItem "03"
    Me.cboMonth.AddItem "04"
    Me.cboMonth.AddItem "05"
    Me.cboMonth.AddItem "06"
    Me.cboMonth.AddItem "07"
    Me.cboMonth.AddItem "08"
    Me.cboMonth.AddItem "09"
    Me.cboMonth.AddItem "10"
    Me.cboMonth.AddItem "11"
    Me.cboMonth.AddItem "12"
End Sub

Private Function GetMaxFixID() As String
'得到可用的维修单号
    Dim strFixID As String
    Dim strSQL As String
    
    If adoMWmInsteadRS.EOF And adoMWmInsteadRS.BOF Then
        GetMaxFixID = String(gFixIDLen - 1, "0") & "1"
        Exit Function
    End If
    
    strSQL = "select max(FixID) from MWaterMeterInstead"
    On Error GoTo ErrHandleExe
    strFixID = Trim(gConnect.Execute(strSQL).Fields(0).value)
    On Error GoTo 0
    
    strFixID = Trim(Str(Val(strFixID) + 1))
    strFixID = String(gFixIDLen - Len(strFixID), "0") & strFixID
    GetMaxFixID = strFixID
    Exit Function
    
    '-------错误处理---------
ErrHandleExe:
    GetMaxFixID = ""
    On Error GoTo 0
End Function

Private Function GetCurJFYm() As String
'得到当前所处的水费计费年月(及尚未计费的最小月份)
    Dim strSQL As String
    Dim strTmpString As String
    Dim adoTmpRS As ADODB.Recordset
    
    strSQL = "select max(Ym) from WaterRate"
    On Error GoTo ErrHandleExe
    Set adoTmpRS = gConnect.Execute(strSQL)
    On Error GoTo 0
    If IsNull(adoTmpRS.Fields(0)) Then
        '如果计费表为空,则当前年月就是当前的计费年月
        strTmpString = Trim(Str(Month(Date)))
        strTmpString = String(2 - Len(strTmpString), "0") & strTmpString
        strTmpString = Trim(Str(Year(Date))) & strTmpString
    Else
        '如果计费表不为空,则表中最大的计费年月的下个月就是当前的计费年月
        strTmpString = adoTmpRS.Fields(0).value
        strTmpString = NextYm(strTmpString)
    End If
    GetCurJFYm = strTmpString
    
    On Error Resume Next
    adoTmpRS.Close
    Set adoTmpRS = Nothing
    On Error GoTo 0
    
    Exit Function
    '-------错误处理---------
ErrHandleExe:
    On Error GoTo 0
    GetCurJFYm = ""
    
End Function

Private Function SaveCurrenData() As Boolean
'保存当前的数据
'注意:保存过程牵扯到三个表,在事务中分三步走
' 1:更新用户档案, 2: 更新总表表 ,3:更新总表更换表
    Dim strYm As String
    Dim strSQL As String
    
    strYm = Trim(Me.txtYear.Text) & Me.cboMonth.Text
    

⌨️ 快捷键说明

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