以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多条件问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=196146)

--  作者:lin98
--  发布时间:2025/4/2 13:46:00
--  多条件问题
需求:

如果  计划数>原数
      如果 计划数不为空  And 完成数不为空   And    完成数>计划数
              完成率=dr1("完成数") / dr1("计划数")*1.5
     如果 计划数不为空  And 完成数不为空   And    完成数=计划数
             完成率=dr1("完成数") / dr1("计划数")*1.3
     如果 计划数不为空  And 完成数不为空   And    完成数<计划数  And 完成数<原数
            完成率=dr1("完成数") / dr1("计划数")*1.05
     如果 计划数不为空  And 完成数=0
           完成率=0

如果  计划数<原数
         
      如果 原数不为空  And 完成数不为空   And    完成数>原数
              完成率=dr1("完成数") / dr1("原数")*1.2
     如果 原数不为空  And 完成数不为空   And    完成数=原数
             完成率=dr1("完成数") / dr1("原数")*1.0
          如果 原数不为空  And 完成数=0
           完成率=0
     如果 原数不为空  And   完成数<原数  And (完成数/原数)<0.6
           完成率=0

   否则
            完成率=dr1("完成数") / dr1("原数")*0.5


下面代码,如何改为实现上面的需求

Dim dr1 As DataRow = e.DataRow
Select Case e.DataCol.Name 
    Case "完成数", "计划数", "原数"
        If dr1("完成数") Is Nothing OrElse dr1("计划数") Is Nothing OrElse dr1("原数") Is Nothing Then
            dr1("完成率") = Nothing
        Else 
            If dr1("计划数") > dr1("原数") And dr1("计划数") > 0 Then
                
                dr1("完成率") = dr1("完成数") / dr1("计划数")
                
            Else
                dr1("完成率") = dr1("计划数") / dr1("完成率")
                
            End If
            
            If dr1("计划数") < dr1("原数") And dr1("原数") > 0Then
                
                
                dr1("完成率") = dr1("完成数") / dr1("原数")
            Else
                
                dr1("完成率") = dr1("原数") / dr1("完成数")
            End If
            
            
            
        End If
End Select


--  作者:lin98
--  发布时间:2025/4/2 13:47:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:多条件.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2025/4/2 14:19:00
--  
按照需求做就行了呀
Dim dr1 As DataRow = e.DataRow
Select Case e.DataCol.Name 
    Case "完成数", "计划数", "原数"
        If dr1("完成数") Is Nothing OrElse dr1("计划数") Is Nothing OrElse dr1("原数") Is Nothing Then
            dr1("完成率") = Nothing
        Else 
如果  计划数>原数 If dr1("计划数") > dr1("原数")
下面不需要判断为空了,因为前面已经有判断
      如果 完成数>计划数   If dr1("完成数") > dr1("计划数")
              完成率=dr1("完成数") / dr1("计划数")*1.5  dr1("完成率") = dr1("完成数") / dr1("计划数")*1.5
     如果 完成数=计划数  elseIf dr1("完成数") = dr1("计划数")
             完成率=dr1("完成数") / dr1("计划数")*1.3 dr1("完成率") = dr1("完成数") / dr1("计划数")*1.3
     如果 完成数<计划数  And 完成数<原数  elseIf dr1("完成数") < dr1("计划数") andalso dr1("完成数") < dr1("原数") 
……下面全部套用同样的用法,就不再重复了