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


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

主题:判断公式请教

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/14 16:46:00 [显示全部帖子]

我写了三个,其他自己加进去:

 

iif([标准] = 1 And [实测] = 2,'不合格',
iif([标准] < 1 And [实测] = 0.5,'合格',
iif([标准] > 1 And [实测] = 2, '合格',Null
)))

 

每行都是逗号结尾,倒数第二行的逗号后面要有NULL,前面有多少个iif,最后一行就有多少个右括号。

 

记得标准列好实测列改为双精度小数。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/15 9:37:00 [显示全部帖子]

请重做例子,输入一些数据,包括标准、实测,以及结果,方便他人理解。

不要一个空表就发上来


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/15 15:20:00 [显示全部帖子]

真的有点难:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

 

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
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部