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

📄 frmprojectcard.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 5 页
字号:
    Dim blnIsDetail As Boolean
    
    strPCode = CodePrefix(strCode)
    If strPCode = "" Then
        ChangeHigherSum = True
        Exit Function
    End If
    
    strSql = "SELECT * FROM Project WHERE strProjectCode='" & strPCode & "'"
    Set recP = gclsBase.BaseDB.OpenResultset(strSql, rdOpenForwardOnly)
    If Not recP.EOF Then
        blnIsDetail = (recP("blnIsDetail") = 1)
        dblValue = recP("dblBudgetAmount")
    Else
        blnIsDetail = False
        dblValue = 0
    End If
    recP.Close
    
    If blnIsDetail Then
        strSql = "UPDATE Project SET dblBudgetAmount=" _
            & dblSum & " WHERE strProjectCode='" & strPCode & "'"
        dblSum = dblSum - dblValue
    Else
        strSql = "UPDATE Project SET dblBudgetAmount=dblBudgetAmount+" _
            & dblSum & " WHERE strProjectCode='" & strPCode & "'"
    End If
    ChangeHigherSum = gclsBase.ExecSQL(strSql)
    If Not ChangeHigherSum(strPCode, dblSum) Then Exit Function
End Function

Private Function TransActivity(ByVal lngPID As Long) As Boolean
    Dim intLevel As Integer, lngID(0 To 2) As Long
    Dim recProject As rdoResultset
    Dim strSql As String, strFullName As String
    
    strSql = "SELECT * FROM Project WHERE lngProjectID=" & lngPID
    Set recProject = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    With recProject
    mblnIsDetail = False
'    mblnIsInActive = !blnIsInActive
    mintLevel = !intLevel
    mstrStartDate = !strStartDate
    mstrCode = !strProjectCode
    mstrName = !strProjectName
    mstrPrincipal = !strPrincipal
    mdblBudgetAmount = !dblBudgetAmount
    lngID(0) = Format(!lngAccountID, "@;0;")
    lngID(1) = Format(!lngClassID1, "@;0;")
    lngID(2) = Format(!lngClassID2, "@;0;")
    strFullName = !strFullName
    End With
    recProject.Close
    
    intLevel = stringCount(Trim(txtInput(0).Text), "-") + 1
    strSql = "UPDATE Project SET strProjectCode='" & Trim(txtInput(0).Text) & "',strFullName='" & mstrFullName _
        & "',strProjectName='" & Trim(txtInput(1).Text) & "',strPrincipal='" & IIf(txtInput(2).Text = "", " ", txtInput(2).Text) _
        & "',dblBudgetAmount=" & TxtToDouble(txtInput(3).Text) & ",blnIsInActive=" _
        & chkPause.Value & ",intLevel =" & intLevel & ",lngAccountID=" & mlngLstID(0) _
        & ",lngClassID1=" & mlngLstID(1) & ",lngClassID2=" & mlngLstID(2) & ",strStartDate='" _
        & Format(gclsBase.BaseDate, "YYYY-MM-DD") & "' WHERE lngProjectID=" & lngPID
    TransActivity = gclsBase.ExecSQL(strSql)
    If TransActivity Then
        mlngLstID(0) = lngID(0)
        mlngLstID(1) = lngID(1)
        mlngLstID(2) = lngID(2)
        mstrFullName = strFullName
    End If
End Function

Private Sub RefreshLst(ByVal Index As Integer)
    Select Case Index
    Case 0: setlistbox lstText(0), 0, mlngLstID(0)
    Case 1: setlistbox lstText(1), 36, mlngLstID(1)
    Case 2: setlistbox lstText(2), 37, mlngLstID(2)
    End Select
End Sub

Private Sub lstText_AddNew(Index As Integer)
    Dim lngID As Long
    
    Select Case Index
    Case 0: lngID = frmAccountCard.AddCard(, , vbModal, , True)
    Case 1: lngID = frmClass1Card.AddCard(, vbModal, True)
    Case 2: lngID = frmClass2Card.AddCard(, vbModal, True)
    End Select
    If lngID <> 0 Then mlngLstID(Index) = lngID
    RefreshLst Index
    mblnIsChanged = True
End Sub

Private Sub lstText_Change(Index As Integer)
    If ContainErrorChar(lstText(Index).Text, "`~!@#$%^&*=+'"";:,./?|\") Then BKKEY lstText(Index).hwnd
End Sub

Private Sub lstText_Choose(Index As Integer)
    If Not mblnIsEdit Then
        mlngLstID(Index) = lstText(Index).ID
        mblnIsChanged = Not mblnIsInit
    End If
End Sub

Private Sub lstText_Delete(Index As Integer)
    Select Case Index
    Case 0:
        If frmAccountCard.DelCard(mlngLstID(0), Me.hwnd) Then mlngLstID(0) = 0
    Case 1:
        If frmClass1Card.DelCard(mlngLstID(1)) Then mlngLstID(1) = 0
    Case 2:
        If frmClass2Card.DelCard(mlngLstID(2)) Then mlngLstID(2) = 0
    End Select
    RefreshLst Index
    mblnIsChanged = True
End Sub

Private Sub lstText_Edit(Index As Integer)
    mblnIsEdit = True
    If Format(mlngLstID(Index), "@;0;") = 0 Then
        Select Case Index
        Case 0:
            ShowMsg hwnd, "请先选择会计科目再进行修改!", vbExclamation, Caption
        Case 1:
            ShowMsg hwnd, "请先选择统计核算再进行修改!", vbExclamation, Caption
        Case 2:
            ShowMsg hwnd, "请先选择项目核算再进行修改!", vbExclamation, Caption
        End Select
    Else
        Select Case Index
        Case 0:
            frmAccountCard.EditCard mlngLstID(0), vbModal
        Case 1:
            frmClass1Card.EditCard mlngLstID(1), vbModal
        Case 2:
            frmClass2Card.EditCard mlngLstID(2), vbModal
        End Select
        RefreshLst Index
        mblnIsChanged = True
    End If
    mblnIsEdit = False
End Sub

Private Sub lstText_GotFocus(Index As Integer)
    If lstText(Index).Referrows <= 1 Then
        RefreshLst Index
    End If
    mblnIsInit = False
End Sub

Private Sub lstText_ItemNotExist(Index As Integer)
    Dim lngID As Long
    
    mblnNotExit = True
    Select Case Index
    Case 0:
        If frmMsgAdd.MsgAddShow("所属科目不存在", "科目列表中没有“" _
            & lstText(0).Text & "”!") = vbOK Then
            lngID = frmAccountCard.AddCard(lstText(0).Text, , vbModal, , True)
            If lngID <> 0 Then mlngLstID(0) = lngID
            RefreshLst 0
        Else
            lstText(0).Text = ""
        End If
    Case 1:
        If frmMsgAdd.MsgAddShow("所属统计核算不存在", "统计核算列表中没有“" _
            & lstText(1).Text & "”!") = vbOK Then
            lngID = frmClass1Card.AddCard(lstText(1).Text, vbModal, True)
            If lngID <> 0 Then mlngLstID(1) = lngID
            RefreshLst 1
        Else
            lstText(1).Text = ""
        End If
    Case 2:
        If frmMsgAdd.MsgAddShow("所属项目核算不存在", "项目核算列表中没有“" _
            & lstText(2).Text & "”!") = vbOK Then
            lngID = frmClass2Card.AddCard(lstText(2).Text, vbModal, True)
            If lngID <> 0 Then mlngLstID(2) = lngID
            RefreshLst 2
        Else
            lstText(2).Text = ""
        End If
    End Select
    mblnIsChanged = True
    mblnNotExit = False
End Sub

Private Sub lstText_LostFocus(Index As Integer)
    Dim strName As String
    If mblnIsEdit Then Exit Sub
    If Trim(lstText(Index).Text) = "" Then
        mlngLstID(Index) = 0
    Else
        If mblnIsNew And Trim(txtInput(1).Text) = "" Then
            strName = lstText(0).Text
            StringOut strName
            txtInput(1).Text = strName
        End If
    End If
    lstText(Index).MoveFocus
End Sub

Private Sub txtInput_Change(Index As Integer)
    
    Select Case Index
    Case 0
        If ContainErrorChar(txtInput(Index).Text, "'""|?`~!^*") Then BKKEY txtInput(Index).hwnd
    Case 1, 2
        If ContainErrorChar(txtInput(Index).Text, "'""|?`~-!^*") Then BKKEY txtInput(Index).hwnd
    Case 3
        If Not IsNum(txtInput(3).Text, 2, True) Then BKKEY txtInput(3).hwnd
    End Select
    If Not mblnIsInit Then mblnIsChanged = True
End Sub

Private Sub txtInput_GotFocus(Index As Integer)
    Select Case Index
    Case 3, 5: txtInput(Index).MaxLength = 12
    End Select
End Sub

Private Sub txtInput_KeyPress(Index As Integer, KeyAscii As Integer)
    Select Case Index
    Case 0
        If InStr("'""|?`~!^*", Chr(KeyAscii)) > 0 Then KeyAscii = 0
    Case 1, 2
        If InStr("'""|?`~-!^*", Chr(KeyAscii)) > 0 Then KeyAscii = 0
    Case 3
        If InStr("0123456789.", Chr(KeyAscii)) = 0 And KeyAscii <> 8 Then KeyAscii = 0
    End Select
End Sub

Private Sub txtInput_LostFocus(Index As Integer)
    Select Case Index
    Case 3, 5
        txtInput(Index).MaxLength = 18
        If Index = 3 Then
            txtInput(3).Text = Format(txtInput(3).Text, gclsBase.GetFormat(gclsBase.NaturalCurDec))
        Else
            txtInput(5).Text = Format(txtInput(5).Text, gclsBase.GetFormat(gclsBase.QuantityDec))
        End If
    End Select
End Sub

Private Sub SetTabIndex()
    Dim b As Byte
    Dim conX As Control
    
    On Error Resume Next
    For Each conX In Me.Controls
        Select Case conX.Name
        Case "cmdOKCancel", "sstProject", "chkPause"
        Case Else
            conX.TabStop = False
        End Select
    Next conX
    Select Case sstProject.Tab
    Case 0
        For b = 0 To 5
            txtInput(b).TabStop = True
            If b < 3 Then lstText(b).TabStop = True
        Next b
        txtNotes.TabStop = False
'        lstText.TabStop = True
        chkClose.TabStop = True
        dteClose.TabStop = dteClose.Enabled
        If dteClose.TabStop Then
            SetCmdIndex chkClose.TabIndex + 1
        Else
            SetCmdIndex dteClose.TabIndex + 1
        End If
    Case 1
        txtNotes.TabStop = True
        SetCmdIndex txtNotes.TabIndex + 1
    End Select
End Sub

Private Sub SetCmdIndex(ByVal Index As Integer)
    cmdOkCancel(0).TabIndex = Index
    cmdOkCancel(1).TabIndex = cmdOkCancel(0).TabIndex + 1
    cmdOkCancel(2).TabIndex = cmdOkCancel(1).TabIndex + 1
    chkPause.TabIndex = cmdOkCancel(2).TabIndex + 1
End Sub

Private Function ChangeHigherClose(ByVal strCode As String) As Boolean
    Dim recX As rdoResultset, strPCode As String, strSql As String
    
    ChangeHigherClose = True
    strPCode = CodePrefix(strCode)
    strSql = "SELECT * FROM Project WHERE strProjectCode='" & strPCode & "'"
    Set recX = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    Do Until strPCode = "" Or recX.EOF
        If recX!blnIsClosed = 0 Then Exit Do
        recX.Close
        strSql = "UPDATE Project SET blnIsClosed=0,strCloseDate=' '" & " WHERE " _
            & "strProjectCode='" & strPCode & "'"
        If Not gclsBase.ExecSQL(strSql) Then
            ChangeHigherClose = False
            Exit Function
        Else
            strPCode = CodePrefix(strPCode)
            strSql = "SELECT * FROM Project WHERE strProjectCode='" _
                & strPCode & "'"
            Set recX = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
        End If
    Loop
    recX.Close
End Function

Private Sub txtNotes_Change()
    If ContainErrorChar(txtNotes.Text, "'""") Then BKKEY txtNotes.hwnd
End Sub

Private Sub txtNotes_KeyPress(KeyAscii As Integer)
    If InStr("'""", Chr(KeyAscii)) > 0 Then KeyAscii = 0
End Sub

⌨️ 快捷键说明

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