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

📄 frmsalarylisteditsome.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 3 页
字号:
    Dim intThisSelStart As Integer
    If mEditText = 1 Then
        intThisSelStart = txtEditSome(1).SelStart
        txtEditSome(1).Text = frmSalaryList.select_text(txtEditSome(1).SelText, txtEditSome(1).SelStart, _
        txtEditSome(1).SelLength, txtEditSome(1).Text, lstEditSome.Text)
        txtEditSome(1).SetFocus
        txtEditSome(1).SelStart = intThisSelStart + Len(Trim(lstEditSome.Text)) + 2
    End If
End Sub
Private Sub mclsDepoland_OnAccidenceParse(ByVal strToken As String, token As TokenClass, blnOK As Boolean)
    Dim i As Long
    Dim j As Long
    Dim strMsg As String
    Dim strString As String
    Dim strID As String
    Dim strTableName As String
    Dim strFieldName As String
    Dim strSql As String
    Dim recRecordset As rdoResultset
    Dim strFormula As String
    
    strToken = Trim(strToken)
    i = InStr(strToken, ".")
    '表名
    If i > 0 Then
        strTableName = Left(strToken, i - 1)
    End If
    '字段名称
    strFieldName = Right(strToken, Len(strToken) - i)
    i = 0
    strID = ""
    With msgEditSome
        Do While i < .Rows
            '计算公式中含有字符型字段
            If UCase(Trim(strFieldName)) = UCase(Trim(.TextMatrix(i, 0))) Then
                If mblnCond = False And .TextMatrix(i, 2) = "String" Then
                    Exit Do
                End If
                mstrFomularItemname = Trim(strFieldName)
                '带表名
                If Len(Trim(strTableName)) > 0 And strTableName <> "本表" Then
                    j = 0
                    Do While j < litSomeEdit(1).Referrows
                        If Trim(litSomeEdit(1).TextMatrix(j, 2)) = Trim(strTableName) Then
                            strID = litSomeEdit(1).TextMatrix(j, 1)
                            Exit Do
                        End If
                        j = j + 1
                    Loop
                Else
                    strID = mlngSalaryID
                End If
                If strID = "" Then
                    ShowMsg Me.hwnd, "不能识别表:" & strTableName & "。", vbInformation, Me.Caption
                    blnOK = False
                    Exit Sub
                End If
                '公式,去掉表名
                If strToken = "性别" Then
                    token.Value = "blnIsMale"
                Else
                    token.Value = Right(.TextMatrix(i, 4), Len(Trim(.TextMatrix(i, 4))) - Len(Trim(.TextMatrix(i, 3))) - 1)
                End If
                '加上查询名称
                token.Value = "tab" & strID & "." & token.Value
                '公式查询串中不含当前查询
                If InStr(mstrTableWHERE, "tab" & strID & ".") = 0 Then
                    If Len(mstrTableSql) = 0 Then
                        'mstrTableSql = " SalaryData AS tab" & strID
                        mstrTableSql = " SalaryData tab" & strID
                        mstrTableWHERE = " WHERE tab" & strID & ".lngSalaryListID=" & strID
                    Else
                        'mstrTableSql = mstrTableSql & ",SalaryData AS tab" & strID
                        mstrTableSql = mstrTableSql & ",SalaryData tab" & strID
                        mstrTableWHERE = mstrTableWHERE & " AND tab" & strID _
                            & ".lngSalaryListID=" & strID & " AND tab" & mlngSalaryID _
                            & ".lngEmployeeID=tab" & strID & ".lngEmployeeID"
                    End If
                End If
                blnOK = True
                Exit Do
            End If
           i = i + 1
        Loop
    End With
    If blnOK = False Then
        If Left(Trim(strToken), 1) = "'" And Right(Trim(strToken), 1) = "'" And mblnCond Then
            '查找项目值
            strSql = ""
            strFormula = strToken
            On Error GoTo Errors1
            Select Case mstrFomularItemname
            Case "部门名称"
                '判断是否为非明细
                'strSql = "SELECT blnIsDetail,strDepartmentCode From DepartMent WHERE TRIM(strDepartmentName)=" _
                    & strFormula
                strSql = "SELECT blnIsDetail,strDepartmentCode From DepartMent " _
                       & " WHERE Upper(LTRIM(RTRIM(strDepartmentName)))= " & UCase(strFormula)
                Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
                If recRecordset.EOF Then
                    ShowMsg Me.hwnd, "部门:" & strFormula & "不存在。", vbInformation, "工资发放"
                    blnOK = False
                    mblnFomulaOk = blnOK
                    Exit Sub
                End If
                'If Not recRecordset!blnIsDetail Then
                If recRecordset!blnIsDetail = 0 Then
                    'strSql = "SELECT strDepartmentName From DepartMent WHERE blnIsDetail=True AND InStr" _
                        & "(strDepartmentCode,'" & Trim(recRecordset!strDepartmentCode) & "-')=1"
                    strSql = "SELECT strDepartmentName From DepartMent WHERE blnIsDetail=1 AND InStr" _
                        & "(strDepartmentCode,'" & Trim(recRecordset!strDepartmentCode) & "-')=1"
                    Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
                    '查找下级明细
                    If Not recRecordset.EOF Then
                        recRecordset.MoveLast
                        recRecordset.MoveFirst
                        strFormula = " IN("
                        Do While Not recRecordset.EOF
                            strFormula = strFormula & "'" & recRecordset!strDepartmentName & "',"
                            recRecordset.MoveNext
                        Loop
                        strFormula = Left(strFormula, Len(strFormula) - 1)
                        strFormula = strFormula & ")"
                    End If
                End If
            Case "职员类别"
                'strSql = "SELECT blnIsDetail,strEmployeeTypeCode From EmployeeType WHERE TRIM(strEmployeeTypeName)=" _
                    & strFormula
                strSql = "SELECT blnIsDetail,strEmployeeTypeCode From EmployeeType " & _
                         " WHERE Upper(LTRIM(RTRIM(strEmployeeTypeName)))=" & UCase(strFormula)
                Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
                If recRecordset.EOF Then
                    ShowMsg Me.hwnd, "职员类别:" & strFormula & "不存在。", vbInformation, "工资发放"
                    Exit Sub
                End If
                'If Not recRecordset!blnIsDetail Then
                If recRecordset!blnIsDetail = 0 Then
                    'strSql = "SELECT strEmployeeTypeName From EmployeeType WHERE blnIsDetail=True AND InStr" _
                        & "(strEmployeeTypeCode,'" & Trim(recRecordset!strEmployeeTypeCode) & "-')=1"
                    strSql = "SELECT strEmployeeTypeName From EmployeeType WHERE blnIsDetail=1 AND InStr" _
                        & "(strEmployeeTypeCode,'" & LTrim(RTrim(recRecordset!strEmployeeTypeCode)) & "-')=1"
                    Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
                    '查找下级明细
                    If Not recRecordset.EOF Then
                        recRecordset.MoveLast
                        recRecordset.MoveFirst
                        strFormula = " IN("
                        Do While Not recRecordset.EOF
                            strFormula = strFormula & "'" & recRecordset!strEmployeeTypeName & "',"
                            recRecordset.MoveNext
                        Loop
                        strFormula = Left(strFormula, Len(strFormula) - 1)
                        strFormula = strFormula & ")"
                    End If
                End If
            End Select
            If mstrFomularItemname = "性别" Then
                token.Value = IIf(strFormula = "'男'", True, False)
            Else
                token.Value = strFormula
            End If
            mstrFomularItemname = ""
            blnOK = True
        End If
    End If
    If blnOK = False Then
        If Len(Trim(strToken)) > 30 Then
            strString = Left(Trim(strToken), 24) & "......"
        Else
            strString = Trim(strToken)
        End If
        ShowMsg Me.hwnd, "不能识别:'" & strString & "'。", vbInformation, Me.Caption
    End If
    mblnFomulaOk = blnOK
    Exit Sub
Errors1:
    ShowMsg Me.hwnd, "不能识别:'" & strFormula & "'。", vbInformation, Me.Caption
    blnOK = False
    mblnFomulaOk = blnOK
End Sub

Private Sub msgEditSome_Click()
    Call msgEditSome_RowColChange
End Sub

Private Sub msgEditSome_DblClick()
        Dim intThisSelStart As Integer
        Dim strSelect As String
        Select Case mEditText
        Case 0  '选择公式
            With msgEditSome
                If UCase(.TextMatrix(.Row, 2)) = "DOUBLE" Then
                    If Trim(litSomeEdit(1).TextMatrix(litSomeEdit(1).ReferRow, 2)) = "本表" Or Trim(litSomeEdit(1).TextMatrix(litSomeEdit(1).ReferRow, 2)) = "" Then
                        strSelect = .TextMatrix(.Row, 0)
                    Else
                        strSelect = litSomeEdit(1).TextMatrix(litSomeEdit(1).ReferRow, 2) _
                            & "." & .TextMatrix(.Row, 0)
                    End If
                    intThisSelStart = txtEditSome(0).SelStart
                    txtEditSome(0).Text = frmSalaryList.select_text(txtEditSome(0).SelText, txtEditSome(0).SelStart, _
                     txtEditSome(0).SelLength, txtEditSome(0).Text, strSelect)
                    txtEditSome(0).SetFocus
                    txtEditSome(0).SelStart = intThisSelStart + Len(Trim(strSelect)) + 2
                Else
                    txtEditSome(0).SetFocus
                End If
            End With
        Case 1  '选择条件
            With msgEditSome
                intThisSelStart = txtEditSome(1).SelStart
                txtEditSome(1).Text = frmSalaryList.select_text(txtEditSome(1).SelText, txtEditSome(1).SelStart, _
                txtEditSome(1).SelLength, txtEditSome(1).Text, .TextMatrix(.Row, 0))
                txtEditSome(1).SetFocus
                txtEditSome(1).SelStart = intThisSelStart + Len(Trim(.TextMatrix(.Row, 0))) + 2
            End With
        End Select
End Sub

Private Sub msgEditSome_RowColChange()
    Dim recItem As rdoResultset
    Dim strSql As String
    With msgEditSome
        '职员信息和代发银行帐号
        If UCase(Trim(.TextMatrix(.Row, 3))) <> "SALARY" Or UCase(Trim(.TextMatrix(.Row, 4))) = "SALARY.STRBANKCODE" Then '参照表
            lstEditSome.Clear
            strSql = "SELECT " & .TextMatrix(.Row, 4) & " AS Item FROM " & .TextMatrix(.Row, 3) & _
                     " GROUP BY " & .TextMatrix(.Row, 4)
            Set recItem = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
            Do While Not recItem.EOF()
                If UCase(.TextMatrix(.Row, 2)) = "DOUBLE" Then
                    If Not IsNull(recItem!Item) Then
                        If Trim(str(recItem!Item)) <> "" Then
                            lstEditSome.AddItem (recItem!Item)
                        End If
                    End If
                Else
                    If Not IsNull(recItem!Item) Then
                        If Trim(recItem!Item) <> "" Then
                            lstEditSome.AddItem ("'" & recItem!Item & "'")
                        End If
                    End If
                End If
                recItem.MoveNext
            Loop
            recItem.Close
            Set recItem = Nothing
        Else
            lstEditSome.Clear
        End If
    End With
End Sub

Private Sub txtEditSome_GotFocus(Index As Integer)
    mEditText = Index
End Sub
Private Function Analysis(ByVal strFomular As String) As Boolean
    Set mclsDepoland = New DepolandClass
    Analysis = mclsDepoland.VerifyFomular(strFomular)
End Function

Private Sub EditCalc()
    Dim strSql As String
    Dim strLeft As String
    Dim strRight As String
    Dim strTmp As String
    Dim strDateFunTmp1 As String
    Dim strDateFunTmp2 As String
    
    With litSomeEdit(0)
    
        If InStr(Trim(mstrTableSql), ",") > 0 Then
        'strSql = "UPDATE " & mstrTableSql & " SET Tab" & mlngSalaryID & ".Sa" _
            & .TextMatrix(.ReferRow, 1) & "=" & mstrFormular & mstrTableWHERE
        strTmp = UCase(Trim(mstrTableSql))
        strLeft = Trim(Right(strTmp, Len(strTmp) - InStr(strTmp, ",")))
        strRight = Trim(Right(strLeft, Len(strLeft) - InStr(strLeft, " ")))
        strTmp = Right(strRight, Len(strRight) - 3)
        strSql = "UPDATE SalaryData Tab" & mlngSalaryID & " SET Tab" & mlngSalaryID & ".Sa" _
            & .TextMatrix(.ReferRow, 1) & "= (SELECT " & mstrFormular & " FROM " & strLeft & " WHERE " _
            & strRight & ".lngSalaryListID=" & strTmp _
            & " AND " & strRight & ".lngEmployeeID=Tab" & mlngSalaryID & ".lngEmployeeID) " _
            & " WHERE Tab" & mlngSalaryID & ".lngSalaryListID=" & mlngSalaryID _
            & " And Tab" & mlngSalaryID & ".lngEmployeeID In (Select lngEmployeeID FROM Salary  WHERE " _
            & " Salary.lngSalaryListID=" & strTmp & ")"
        Else
            strSql = "UPDATE " & mstrTableSql & " SET Tab" & mlngSalaryID & ".Sa" _
                & .TextMatrix(.ReferRow, 1) & "=" & mstrFormular & mstrTableWHERE
        End If
        If Len(Trim(mstrFormularWHERE)) > 0 Then
            strDateFunTmp1 = ""
            strDateFunTmp2 = ""
            strDateFunTmp1 = Salary.GetOraDateFunnctionCalc(mstrFormularWHERE, strDateFunTmp2)
            strSql = strSql & " AND " & strDateFunTmp1
            If strDateFunTmp2 <> "" Then
                strSql = strSql & " AND " & strDateFunTmp2
            End If
        End If
        gclsBase.BaseDB.Execute strSql
    End With
End Sub
Private Sub txtEditSome_KeyPress(Index As Integer, KeyAscii As Integer)
    If KeyAscii = 124 Then
        SendKeys "{BACKSPACE}"
    End If
End Sub

Public Function ShowSalaryListEditSome() As Boolean
    frmSalaryListEditSome.Show vbModal
    ShowSalaryListEditSome = mblnIsOK
End Function


⌨️ 快捷键说明

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