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

📄 frmsalaryedit.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 5 页
字号:
    Dim recViewField As rdoResultset
    Dim i As Long
    Dim blnAddNew As Boolean
    Dim lngTmpListID As Long
    Dim lngTmpListFieldId As Long
    
    On Error GoTo Errors1
    gclsBase.BaseWorkSpace.BeginTrans
    strSql = "UPDATE List SET lngOperatorID=0 WHERE lngViewID=" & mintSalaryViewID _
        & " AND lngOperatorID=" & mlngOperatorID
    gclsBase.BaseDB.Execute strSql
    strSql = "SELECT * FROM List WHERE lngOperatorID=-1 AND lngViewID=" & mintSalaryViewID
    Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenDynamic, rdConcurRowVer, 64)
    If recRecordset.EOF() Then
        If blnEdit Then
            lngTmpListID = BillPublic.GetNewID("LIST")
            strSql = "INSERT INTO List (lngListID,lngOperatorID,strListName,lngViewID) Values(" & lngTmpListID & "," & mlngOperatorID _
                & ",'" & "ZjTjyGasoft001_001" & mstrSalaryName & "'," & mintSalaryViewID & ")"
            gclsBase.BaseDB.Execute strSql
        Else
            lngTmpListID = BillPublic.GetNewID("LIST")
            strSql = "INSERT INTO List (lngListID,lngOperatorID,strListName,lngViewID) Values(" & lngTmpListID & ",-1" _
                & ",'" & mstrSalaryName & "'," & mintSalaryViewID & ")"
            gclsBase.BaseDB.Execute strSql
            strSql = "SELECT * FROM List WHERE lngOperatorID=-1 AND lngViewID=" & mintSalaryViewID
            Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenDynamic, rdConcurRowVer, 64)
        End If
    Else
        If blnEdit Then
            recRecordset.Edit
            recRecordset!lngOperatorID = mlngOperatorID
            recRecordset.Update
        End If
    End If
    If blnEdit Then
        strSql = "SELECT lngListID FROM List WHERE lngOperatorID=" & mlngOperatorID & " AND lngViewID=" & mintSalaryViewID
        Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    End If
    mlngListID = recRecordset!lngListID
    strSql = "SELECT * FROM ListField WHERE lngListID=" & mlngListID
    Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenDynamic, rdConcurRowVer, 64)
    If Not recRecordset.EOF Then
        recRecordset.MoveLast
        recRecordset.MoveFirst
    End If
    i = 1
    '写ListField固定项
    strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
        & "ViewField.bytFieldSize FROM ViewField WHERE lngViewID=" & mintSalaryViewID & " AND" _
        & " blnIsFixed=1 ORDER BY ViewField.lngViewFieldNO"
    Set recViewField = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    recViewField.MoveLast
    recViewField.MoveFirst
    Do While Not recViewField.EOF
        With recRecordset
            If .EOF Then
                .AddNew
                lngTmpListFieldId = BillPublic.GetNewID("LISTFIELD")
                !lngListFieldID = lngTmpListFieldId
            Else
                .Edit
            End If
            !lngListID = mlngListID
            !lngViewFieldID = recViewField!lngViewFieldID
            !lngListFieldNO = i
            !strListFieldDesc = recViewField!strViewFieldDesc
            !lngDisplayWidth = Utility.GetDisplayWidth(recViewField!strViewFieldDesc, _
                recViewField!bytFieldSize)
            !blnIsChoosed = 1
            .Update
            If Not .EOF() Then
                .MoveNext
            End If
        End With
        i = i + 1
        recViewField.MoveNext
    Loop
    '写ListField非固定项
    If blnEdit Then
        'strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
            & "ViewField.bytFieldSize" _
            & " FROM (SalaryField INNER JOIN SalaryList ON SalaryField.lngSalaryListID = " _
            & " SalaryList.lngSalaryListID) INNER JOIN ViewField ON SalaryField.lngViewFieldID = " _
            & " ViewField.lngViewFieldID WHERE SalaryList.lngSalaryListID=" & mlngSalaryID _
            & " ORDER BY SalaryField.lngSalaryFieldNO"
        strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
            & " ViewField.bytFieldSize" _
            & " FROM SalaryField,SalaryList,ViewField " _
            & " WHERE (SalaryField.lngSalaryListID = SalaryList.lngSalaryListID) " _
            & " AND SalaryField.lngViewFieldID = ViewField.lngViewFieldID " _
            & " AND SalaryList.lngSalaryListID=" & mlngSalaryID _
            & " ORDER BY SalaryField.lngSalaryFieldNO"
    Else
        'strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
            & "ViewField.bytFieldSize FROM ViewField WHERE blnIsFixed=False AND lngViewID=" _
            & mintSalaryViewID & " ORDER BY ViewField.lngViewFieldNO "
        strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
            & "ViewField.bytFieldSize FROM ViewField WHERE blnIsFixed=0 AND lngViewID=" _
            & mintSalaryViewID & " ORDER BY ViewField.lngViewFieldNO "
    End If
    Set recViewField = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    recViewField.MoveLast
    recViewField.MoveFirst
    blnAddNew = False
    Do While Not recViewField.EOF
        With recRecordset
            If .EOF Then
                .AddNew
                blnAddNew = True
                lngTmpListFieldId = BillPublic.GetNewID("LISTFIELD")
                !lngListFieldID = lngTmpListFieldId
            Else
                .Edit
            End If
            !lngListID = mlngListID
            !lngViewFieldID = recViewField!lngViewFieldID
            !lngListFieldNO = i
            !strListFieldDesc = recViewField!strViewFieldDesc
            !lngDisplayWidth = Utility.GetDisplayWidth(recViewField!strViewFieldDesc, _
                recViewField!bytFieldSize)
            !blnIsChoosed = 1
            .Update
            If Not .EOF() Then
                .MoveNext
            End If
        End With
        i = i + 1
        recViewField.MoveNext
    Loop
    If Not blnAddNew Then
        Do While Not recRecordset.EOF
            recRecordset.Delete
            recRecordset.MoveNext
        Loop
    End If
    recRecordset.Close
    Set recRecordset = Nothing
    recViewField.Close
    Set recViewField = Nothing
    gclsBase.BaseWorkSpace.CommitTrans
    Exit Sub
Errors1:
    gclsBase.BaseWorkSpace.RollBacktrans
    Resume Next
End Sub
'得到SELECT串
Private Function GetFieldString(ByRef Objrec As Object) As String
    Dim strSql As String
    Dim recRecordset As rdoResultset
    Dim i As Long
    Dim j As Long
    Dim lngTmp As Long
    
    GetFieldString = ""
    '固定列录入
    '判断当前操作员的固定列
    'strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
        & "ViewField.bytFieldSize FROM (List INNER JOIN ListField ON List.lngListID = ListField.lngListID" _
        & ") INNER JOIN ViewField ON ListField.lngViewFieldID = ViewField.lngViewFieldID WHERE " _
        & "List.lngOperatorID=1 AND ViewField.lngViewID=63 AND ViewField.blnIsFixed ORDER BY " _
        & "ListField.lngListFieldNO"
    strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
        & "ViewField.bytFieldSize FROM List,ListField,ViewField " _
        & " WHERE (List.lngListID = ListField.lngListID )" _
        & " AND ViewField.lngViewFieldID=ListField.lngViewFieldID " _
        & " AND List.lngOperatorID=1 AND ViewField.lngViewID=63 AND ViewField.blnIsFixed=1 " _
        & " ORDER BY ListField.lngListFieldNO"
    Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If recRecordset.EOF Then
        'strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
            & "ViewField.bytFieldSize FROM ViewField WHERE lngViewID=" & mintSalaryViewID & " AND" _
            & " blnIsFixed=True ORDER BY ViewField.lngViewFieldNO "
        strSql = "SELECT ViewField.strViewFieldDesc,ViewField.strFieldName,ViewField.lngViewFieldID," _
            & "ViewField.bytFieldSize FROM ViewField WHERE lngViewID=" & mintSalaryViewID & " AND" _
            & " blnIsFixed=1 ORDER BY ViewField.lngViewFieldNO "
        Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    End If
    
    lngTmp = 0
    i = 0
    With recRecordset
        If Not .EOF Then
            .MoveLast
            .MoveFirst
            lngTmp = .RowCount - 1
        End If
        If Not Objrec.EOF Then
            Objrec.MoveLast
            Objrec.MoveFirst
            lngTmp = lngTmp + Objrec.RowCount
        End If
        If lngTmp > 0 Then
            ReDim mInputItemType(lngTmp, 4)
        End If
        Do While Not .EOF
            GetFieldString = GetFieldString & "," & !strFieldName & " AS " & !strViewFieldDesc
            mInputItemType(i, 0) = Trim(!strViewFieldDesc)
            mInputItemType(i, 0) = Salary.Change_Text("[", "", mInputItemType(i, 0))
            mInputItemType(i, 0) = Salary.Change_Text("]", "", mInputItemType(i, 0))
            mInputItemType(i, 1) = "0"
            mInputItemType(i, 2) = "0"
            mInputItemType(i, 3) = Trim(!strFieldName)
            mInputItemType(i, 4) = "3"
            i = i + 1
            .MoveNext
        Loop
    End With
    '非固定列
    j = 0
    With Objrec
        Do While Not .EOF
            'mlngListID=0,表示新增
            If !blnIsChoosed Or mlngListID = 0 Then
                strSql = "UPDATE ViewField SET lngViewFieldNO=" & (j + 5) _
                    & " WHERE lngViewFieldID=" & !lngViewFieldID
                gclsBase.BaseDB.Execute strSql
                strSql = "UPDATE SalaryField SET lngSalaryFieldNO=" & (j + 1) _
                    & " WHERE lngViewFieldID=" & !lngViewFieldID _
                    & " AND lngSalaryListID=" & mlngSalaryID
                gclsBase.BaseDB.Execute strSql
                mInputItemType(i, 0) = Trim(!strViewFieldDesc)
                mInputItemType(i, 0) = Salary.Change_Text("[", "", mInputItemType(i, 0))
                mInputItemType(i, 0) = Salary.Change_Text("]", "", mInputItemType(i, 0))
                mInputItemType(i, 3) = Trim(!strFieldName)
                '工资表数据,且非本次扣零,代扣税额,上次扣零
                If UCase(Trim(!strTableName)) = "SALARY" And UCase(Trim(!strFieldName)) <> "SALARY.DBLNOWTAX" _
                    And UCase(Trim(!strFieldName)) <> "SALARY.DBLNOWZERO" And UCase(Trim(!strFieldName)) _
                    <> "SALARY.DBLLASTZERO" And UCase(Trim(!strFieldName)) <> "SALARY.STRBANKCODE" _
                    And UCase(Trim(!strFieldName)) <> "SALARY.SA18660" Then
                    Select Case UCase(!strFieldType)
                    Case "DOUBLE"
                        mInputItemType(i, 1) = "1"
                        mInputItemType(i, 4) = "1"
                    Case "DATE"
                        mInputItemType(i, 1) = "2"
                        mInputItemType(i, 4) = "2"
                    Case "STRING"
                        mInputItemType(i, 1) = "3"
                        mInputItemType(i, 4) = "3"
                    Case Else
                        mInputItemType(i, 1) = "0"
                        mInputItemType(i, 4) = "0"
                    End Select
                Else
                    mInputItemType(i, 1) = "0"
                End If
                mInputItemType(i, 2) = !bytFieldDec
                '显示格式设置
                If !bytFieldDec > 0 Then
                    If UCase(!strFieldType) = "DOUBLE" Then
                        'GetFieldString = GetFieldString & "," & "IIF(" & !strFieldName & "= 0 ,'',Format(" _
                            & !strFieldName & ",'###,###,##0." & String(!bytFieldDec, "0") & "')) AS [" & !strViewFieldDesc & "]"
                        GetFieldString = GetFieldString & "," & !strFieldName & " AS " _
                            & !strViewFieldDesc
                    ElseIf UCase(!strFieldType) = "DATE" Then
                        'GetFieldString = GetFieldString & ",Format(" & !strFieldName & ",'yyyy-mm-dd')  AS [" _
                            & !strViewFieldDesc & "]"
                        GetFieldString = GetFieldString & "," & !strFieldName & " AS " _
                            & !strViewFieldDesc
                    Else
                        GetFieldString = GetFieldString & "," & !strFieldName & " AS " _
                            & !strViewFieldDesc
                    End If
                Else
                    If UCase(!strFieldType) = "DOUBLE" Then
                        'GetFieldString = GetFieldString & ",IIF(" & !strFieldName & "=0,'',Format(" _
                            & !strFieldName & ",'#')) AS [" & !strViewFieldDesc & "]"
                        GetFieldString = GetFieldString & "," & !strFieldName & " AS " _
                            & !strViewFieldDesc
                    ElseIf UCase(!strFieldType) = "DATE" Then
                        'GetFieldString = GetFieldString & ",Format(" & !strFieldName & ",'yyyy-mm-dd')  AS [" _
                            & !strViewFieldDesc & "]"
                        GetFieldString = GetFieldString & "," & !strFieldName & " AS " _
                            & !strViewFieldDesc
                    Else
                        GetFieldString = GetFieldString & "," & !strFieldName & " AS " _
                            & !strViewFieldDesc
                    End If
                End If
                i = i + 1
                j = j + 1
            End If
            .MoveNext
        Loop
    End With
End Function
'当前ListID
Public Property Get ListID() As Long
    ListID = mlngListID
End Property
'当前操作员
Public Property Get OperatorID() As Long
    OperatorID = mlngOperatorID
End Property
Public Property Let ListID(ByVal lngID As Long)
    mlngListID = lngID
End Property
'当前List名称
Public Property Let ListName(ByVal lngName As String)
    mstrListName = lngName
End Property
Public Property Get ListName() As String
    ListName = mstrListName
End Property
'栏目设置否
Public Property Let ItemSet(ByVal blnItemSet As Boolean)
    mblnItemSet = blnItemSet
End Property

Private Sub CancelOperatorRecord()
    Dim strSql As String
    Dim recRecordset As rdoResultset
    Dim lngOperatorID As Long
    Dim lngListID As Long
    lngOperatorID = gclsBase.OperatorID
    strSql = "SELECT lngListID FROM List WHERE lngOperatorID=" & lngOperatorID _
        & " AND lngViewID=" & mintSalaryViewID
    Set recRecordset = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If Not recRecordset.EOF Then
        lngListID = recRecordset!lngListID
        strSql = "UPDATE List SET lngOperatorID=0 WHERE lngListID<>" & lngLis

⌨️ 快捷键说明

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