以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:代码显得有些臃肿 麻烦老师们帮忙简化一下  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131164)

--  作者:李孝春
--  发布时间:2019/2/19 9:57:00
--  求助:代码显得有些臃肿 麻烦老师们帮忙简化一下
  "是否关联" ,"审结处理结果"属于一个表  当两个有一个发生变化时
查找告知内容表   和关联人信息表     
如果是否关联=是   审结处理结果不等于空  新增告知内容  为已审结
如果是否关联=是   审结处理结果等于空    新增告知内容   为处理中
下面的代码显得有些臃肿   麻烦老师们帮忙简化一下  谢谢!


  Case "是否关联" ,"审结处理结果"
        If e.DataRow("是否关联") ="是" Then
            If e.DataRow("审结处理结果") Is Nothing Then
                Dim dr2 As DataRow = DataTables("告知内容").Find("部门受案号 = \'" & e.DataRow("部门受案号") & "\'  and 流程时间 = #" & e.DataRow("审结日期") & "# ")
                Dim dr1 As DataRow = DataTables("人员关联表").Find("部门受案号 = \'" & e.DataRow("部门受案号") & "\' ")
                \'If dr2 Is Nothing Then \'如果不存在同编号的订单
                    dr2 =  DataTables("告知内容").AddNew()
                    dr2("部门受案号")=e.DataRow("部门受案号")
                    dr2("嫌疑人姓名")=e.DataRow("嫌疑人姓名")
                    dr2("是否告知")="否"
                    dr2("注意事项")="请注意"
                    dr2("案件状态")="已审结"
                    dr2("涉嫌案由")=e.DataRow("涉嫌案由")
                    dr2("案件类别")=e.DataRow("案件类别")
                    dr2("流程时间")= e.DataRow("审结日期")
                    dr2("姓名")=dr1("姓名")
                \'End If
            Else
                Dim dr22 As DataRow = DataTables("告知内容").Find("部门受案号 = \'" & e.DataRow("部门受案号") & "\'  and 流程时间 = #" & e.DataRow("受理日期") & "# ")
                Dim dr12 As DataRow = DataTables("人员关联表").Find("部门受案号 = \'" & e.DataRow("部门受案号") & "\' ")
                If dr22 Is Nothing Then \'如果不存在同编号的订单             
                Else              
                    If dr22("姓名")=dr12("姓名") Then   ’查找告知内容表中 如果姓名等于人员关联表姓名     
                    Else
                        dr22 =  DataTables("告知内容").AddNew()
                        dr22("部门受案号")=e.DataRow("部门受案号")
                        dr22("嫌疑人姓名")=e.DataRow("嫌疑人姓名")
                        dr22("是否告知")="否"
                        dr22("注意事项")="请注意"
                        dr22("案件状态")="办理中"
                        dr22("涉嫌案由")=e.DataRow("涉嫌案由")
                        dr22("案件类别")=e.DataRow("案件类别")
                        dr22("流程时间")= e.DataRow("受理日期")
                        dr22("姓名")=dr12("姓名")
                    End If
                End If
            End If
        End If
[此贴子已经被作者于2019/2/19 10:26:46编辑过]

--  作者:y2287958
--  发布时间:2019/2/19 10:20:00
--  
If e.DataRow("是否关联") ="是" Then
    Dim dr2 As DataRow = DataTables("告知内容").Find("部门受案号 = \'" & e.DataRow("部门受案号") & "\'  and 流程时间 = #" & e.DataRow("审结日期") & "# ")
    Dim dr1 As DataRow = DataTables("人员关联表").Find("部门受案号 = \'" & e.DataRow("部门受案号") & "\' ")
    Dim dr As DataRow
    Dim s As String
    If e.DataRow("审结处理结果") Is Nothing Then
        dr =  DataTables("告知内容").AddNew()
        s = "已审结"
    Else
        If dr22 IsNot Nothing Then
            If dr2("姓名")<>dr1("姓名") Then   \'查找告知内容表中 如果姓名等于人员关联表姓名
                dr =  DataTables("告知内容").AddNew()
                s = "办理中"
            End If
        End If
    End If
    dr("部门受案号")=e.DataRow("部门受案号")
    dr("嫌疑人姓名")=e.DataRow("嫌疑人姓名")
    dr("是否告知")="否"
    dr("注意事项")="请注意"
    dr("案件状态")= s
    dr("涉嫌案由")=e.DataRow("涉嫌案由")
    dr("案件类别")=e.DataRow("案件类别")
    dr("流程时间")= e.DataRow("审结日期")
    dr("姓名")=dr1("姓名")
End If

试试,具体问题具体分析,最好上实例
[此贴子已经被作者于2019/2/19 10:20:22编辑过]

--  作者:有点蓝
--  发布时间:2019/2/19 10:30:00
--  
Case "是否关联" ,"审结处理结果"
    If e.DataRow("是否关联") ="是" Then
        Dim dr1 As DataRow = DataTables("人员关联表").Find("部门受案号 = \'" & e.DataRow("部门受案号") & "\'
        If dr1 IsNot Nothing Then
            Dim dr2 As DataRow
            If e.DataRow.Isnull("审结处理结果") Then
                dr2 =  DataTables("告知内容").AddNew()
                dr2("案件状态")="已审结"
                
            Else
                Dim dr22 As DataRow = DataTables("告知内容").Find("部门受案号 = \'" & e.DataRow("部门受案号") & "\' and 流程时间 = #" & e.DataRow("受理日期") & "# and 姓名= \'" & dr1("姓名") & "\'")
                If dr22 Is Nothing Then \'如果不存在同编号的订单
                    dr2 =  DataTables("告知内容").AddNew()
                    dr2("案件状态")="办理中"
                End If
            End If
            If dr2 IsNot Nothing Then
                dr2("部门受案号")=e.DataRow("部门受案号")
                dr2("嫌疑人姓名")=e.DataRow("嫌疑人姓名")
                dr2("是否告知")="否"
                dr2("注意事项")="请注意"
                dr2("涉嫌案由")=e.DataRow("涉嫌案由")
                dr2("案件类别")=e.DataRow("案件类别")
                dr2("流程时间")= e.DataRow("审结日期")
                dr2("姓名")=dr1("姓名")
            End If
        End If
    End If