以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  代码优化求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=126348)

--  作者:lisheng1971
--  发布时间:2018/10/19 9:46:00
--  代码优化求助

Select Case e.DataCol.Name
    Case "申报性质","申报鉴定工种","资格审核","理论考否","考试性质"
        If e.DataRow("鉴定等级") = "高级工" Then
            If e.DataRow("申报性质") = "正常申报" Or e.DataRow("申报性质") = "补考理论" Then
                If e.DataRow("资格审核") = True Then
                    e.DataRow("理论考否") = "要考理论"
                    Dim fdr As DataRow = DataTables("机考工种表").Find("鉴定等级三 = \'" & e.DataRow("鉴定等级") & "\' And 机考工种 = \'" & e.DataRow("申报鉴定工种") & "\'")
                    If fdr IsNot Nothing Then
                        e.DataRow("考试性质") = "上机考试"
                    Else
                        e.DataRow("考试性质") = "纸质考试"
                    End If
                Else
                    e.DataRow("理论考否") = "没有资格"
                    e.DataRow("考试性质") = "不排考试"
                End If
            Else
                e.DataRow("理论考否") = "不考理论"
                e.DataRow("考试性质") = e.DataRow("申报性质")
            End If
        End If
End Select
Select Case e.DataCol.Name
    Case "申报性质","申报鉴定工种","资格审核","理论考否","考试性质"
        If e.DataRow("鉴定等级") = "中级工" Then
            If e.DataRow("申报性质") = "正常申报" Or e.DataRow("申报性质") = "补考理论" Then
                If e.DataRow("资格审核") = True Then
                    e.DataRow("理论考否") = "要考理论"
                    Dim fdr As DataRow = DataTables("机考工种表").Find("鉴定等级四 = \'" & e.DataRow("鉴定等级") & "\' And 机考工种 = \'" & e.DataRow("申报鉴定工种") & "\'")
                    If fdr IsNot Nothing Then
                        e.DataRow("考试性质") = "上机考试"
                    Else
                        e.DataRow("考试性质") = "纸质考试"
                    End If
                Else
                    e.DataRow("理论考否") = "没有资格"
                    e.DataRow("考试性质") = "不排考试"
                End If
            Else
                e.DataRow("理论考否") = "不考理论"
                e.DataRow("考试性质") = e.DataRow("申报性质")
            End If
        End If
End Select

 

以上两段代码还能够再优化精减吗?谢谢先!



--  作者:有点蓝
--  发布时间:2018/10/19 9:52:00
--  
Select Case e.DataCol.Name
    Case "申报性质","申报鉴定工种","资格审核","理论考否","考试性质"
        Dim dj As String = ""
        If e.DataRow("鉴定等级") = "高级工" Then
            dj = "鉴定等级三"
        ElseIf e.DataRow("鉴定等级") = "中级工" Then
            dj = "鉴定等级四"
        End If
        If dj > "" Then
            If e.DataRow("申报性质") = "正常申报" Or e.DataRow("申报性质") = "补考理论" Then
                If e.DataRow("资格审核") = True Then
                    e.DataRow("理论考否") = "要考理论"
                    Dim fdr As DataRow = DataTables("机考工种表").Find(dj & " = \'" & e.DataRow("鉴定等级") & "\' And 机考工种 = \'" & e.DataRow("申报鉴定工种") & "\'")
                    If fdr IsNot Nothing Then
                        e.DataRow("考试性质") = "上机考试"
                    Else
                        e.DataRow("考试性质") = "纸质考试"
                    End If
                Else
                    e.DataRow("理论考否") = "没有资格"
                    e.DataRow("考试性质") = "不排考试"
                End If
            Else
                e.DataRow("理论考否") = "不考理论"
                e.DataRow("考试性质") = e.DataRow("申报性质")
            End If
        End If
End Select

--  作者:lisheng1971
--  发布时间:2018/10/19 10:44:00
--  

谢谢!下面两段代码是否也可以精减整合在一段里面?

Select Case e.DataCol.Name
    Case "鉴定等级","申报性质","申报鉴定工种","资格审核","理论考否","考试性质"
        If e.DataRow("鉴定等级") = "技师" Then
            If e.DataRow("申报性质") = "正常申报" Then
                If e.DataRow("资格审核") = True Then
                    e.DataRow("理论考否") = "要考理论"
                    Dim fdr As DataRow = DataTables("机考工种表").Find("鉴定等级二 = \'" & e.DataRow("鉴定等级") & "\' And 机考工种 = \'" &  e.DataRow("申报鉴定工种") & "\'")
                    If fdr IsNot Nothing Then
                        e.DataRow("考试性质") = "上机考试"
                    Else
                        e.DataRow("考试性质") = "内网机考"
                    End If
                Else
                    e.DataRow("理论考否") = "没有资格"
                    e.DataRow("考试性质") = "不排考试"
                End If
            Else
                e.DataRow("考试性质") = e.DataRow("申报性质")
            End If
        End If
End Select
Select Case e.DataCol.Name
    Case "鉴定等级","申报性质","申报鉴定工种","资格审核","理论考否","考试性质"
        Dim dj As String = ""
        If e.DataRow("鉴定等级") = "高级工" Then
            dj = "鉴定等级三"
        ElseIf e.DataRow("鉴定等级") = "中级工" Then
            dj = "鉴定等级四"
        End If
        If dj > "" Then
            If e.DataRow("申报性质") = "正常申报" Or e.DataRow("申报性质") = "补考理论" Then
                If e.DataRow("资格审核") = True Then
                    e.DataRow("理论考否") = "要考理论"
                    Dim fdr As DataRow = DataTables("机考工种表").Find(dj & " = \'" & e.DataRow("鉴定等级") & "\' And 机考工种 = \'" & e.DataRow("申报鉴定工种") & "\'")
                    If fdr IsNot Nothing Then
                        e.DataRow("考试性质") = "上机考试"
                    Else
                        e.DataRow("考试性质") = "纸质考试"
                    End If
                Else
                    e.DataRow("理论考否") = "没有资格"
                    e.DataRow("考试性质") = "不排考试"
                End If
            Else
                e.DataRow("理论考否") = "不考理论"
                e.DataRow("考试性质") = e.DataRow("申报性质")
            End If
        End If
End Select


--  作者:lisheng1971
--  发布时间:2018/10/19 10:47:00
--  
“纸质考试”可以统一换成“内网机考”
--  作者:有点蓝
--  发布时间:2018/10/19 11:14:00
--  
改法一样,参考2楼自己改