Foxtable(狐表)用户栏目专家坐堂 → 判断公式请教


  共有7174人关注过本帖树形打印复制链接

主题:判断公式请教

帅哥哟,离线,有人找我吗?
7032175
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:383 积分:2757 威望:0 精华:0 注册:2011/9/1 14:26:00
  发帖心情 Post By:2013/3/19 7:53:00 [只看该作者]

狐狸爸爸,如果我在同一个表里面,又多了三列 "标准1","实测1" "结果1",在这种情况下,要如何修改以上的代码,请狐狸爸爸帮一下, 谢谢您了。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/19 15:43:00 [只看该作者]

Select Case e.DataCol.name
    Case "标准","实测"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("标准") OrElse dr.IsNull("实测") Then
            dr("结果") = Nothing
        Else
            Dim exp As String
            Dim v1 As String = dr("标准")
            Dim v2 As String = dr("实测")
            If IsNumeric(v1) Then
                exp = v1 & "= " & v2
            ElseIf v1.IndexOf("-") > 0 Then
                exp = v1.Replace("-"," <= " & v2 & " And " & v2 & " <= ")
            Else
                Select Case v1.SubString(0,1)
                    Case "<",">"
                        exp = v2 & v1
                    Case "≥"
                        exp = v2 & ">=" & v1.SubString(1)
                    Case "≤"
                        exp = v2 & "<=" & v1.SubString(1)
                End Select
            End If
            dr("结果") = iif(eval(exp),"合格","不合格")
        End If
    Case "标准1","实测1"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("标准1") OrElse dr.IsNull("实测1") Then
            dr("结果1") = Nothing
        Else
            Dim exp As String
            Dim v1 As String = dr("标准1")
            Dim v2 As String = dr("实测1")
            If IsNumeric(v1) Then
                exp = v1 & "= " & v2
            ElseIf v1.IndexOf("-") > 0 Then
                exp = v1.Replace("-"," <= " & v2 & " And " & v2 & " <= ")
            Else
                Select Case v1.SubString(0,1)
                    Case "<",">"
                        exp = v2 & v1
                    Case "≥"
                        exp = v2 & ">=" & v1.SubString(1)
                    Case "≤"
                        exp = v2 & "<=" & v1.SubString(1)
                End Select
            End If
            dr("结果1") = iif(eval(exp),"合格","不合格")
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
7032175
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:383 积分:2757 威望:0 精华:0 注册:2011/9/1 14:26:00
  发帖心情 Post By:2013/3/19 16:15:00 [只看该作者]

狐狸爸爸 ,还是麻烦您一下,要是我在后面在多加几条这三样的列,要是用这个代码就有点太长,有没有更好的更改方法吗?谢谢您了。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/19 16:24:00 [只看该作者]

Dim nm1() As String = {"标准","标准1","标准2","标准3"}
Dim nm2() As String = {"实测","实测1","实测2","实测3"}
Dim nm3() As String = {"结果","结果1","结果2","结果3"}
For i As Integer = 0 To nm1.Length -1
    Select Case e.DataCol.name
        Case nm1(i),nm2(i)
            Dim dr As DataRow = e.DataRow
            If dr.IsNull(nm1(i)) OrElse dr.IsNull(nm2(i)) Then
                dr("结果") = Nothing
            Else
                Dim exp As String
                Dim v1 As String = dr(nm1(i))
                Dim v2 As String = dr(nm2(i))
                If IsNumeric(v1) Then
                    exp = v1 & "= " & v2
                ElseIf v1.IndexOf("-") > 0 Then
                    exp = v1.Replace("-"," <= " & v2 & " And " & v2 & " <= ")
                Else
                    Select Case v1.SubString(0,1)
                        Case "<",">"
                            exp = v2 & v1
                        Case "≥"
                            exp = v2 & ">=" & v1.SubString(1)
                        Case "≤"
                            exp = v2 & "<=" & v1.SubString(1)
                    End Select
                End If
                dr(nm3(i)) = iif(eval(exp),"合格","不合格")
            End If
    End Select
Next

 回到顶部
总数 14 上一页 1 2