以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  判断公式请教  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=29831)

--  作者:7032175
--  发布时间:2013/3/14 16:12:00
--  判断公式请教
表A中有三个列,第一列为“标准列”第二列为“实测列”第三列为“结果列”

标准列的数值为固定数,实测列为浮动列,结果列为公式例。

“结果列”的公式为以下几种情况:

1、“标准列”内容“〈1”  时 ,  “实测列”为2时  ,“结果列”等于“不合格”
2、“标准列”内容“〈1”  时 ,  “实测列”为0.5时  ,“结果列”等于“合格”
3、“标准列”内容“〉1”  时 ,  “实测列”为2时  ,“结果列”等于“合格”
4、“标准列”内容“〉1”  时 ,  “实测列”为0.5时  ,“结果列”等于“不合格”
5、“标准列”内容“≥1”  时 ,  “实测列”为1或比1更大值时  ,“结果列”等于“合格”
6、“标准列”内容“≥1”  时 ,  “实测列”小于1时  ,“结果列”等于“不合格”
5、“标准列”内容“≤1”  时 ,  “实测列”为1或比1更小值时  ,“结果列”等于“合格”
6、“标准列”内容“≤1”  时 ,  “实测列”大于1时  ,“结果列”等于“不合格”
7、“标准列”内容“1-3”  时 ,  “实测列”1或2或3时  ,“结果列”等于“合格”
8、“标准列”内容“1-3”  时 ,  “实测列”小于1或大于1时  ,“结果列”等于“不合格”
9、“标准列”内容“1”  时 ,  “实测列”1时  ,“结果列”等于“合格”
10、“标准列”内容“1”  时 ,  “实测列”不等于1时  ,“结果列”等于“不合格”

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



--  作者:狐狸爸爸
--  发布时间:2013/3/14 16:46:00
--  

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

 

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

 

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

 

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


--  作者:7032175
--  发布时间:2013/3/14 23:02:00
--  
首先谢谢狐爸爸,我的意思是标准列会出现 条件1〈,  条件2  〉,  条件3  ≥ , 条件4   ≤,   条件5  n-n   条件6   n   当实测列符合标准列的要求时就等于合格,相反不符合要求的时候就是不合格,我想要这样的一个结果,请狐爸爸帮我一下谢谢您了.
--  作者:nblwar
--  发布时间:2013/3/14 23:07:00
--  
把标准列拆成两数值列,一列最大值,一列最小值。拿实测列与最大最小列比对结果
最小列〈 实测列 〈 最大列
[此贴子已经被作者于2013-3-14 23:08:28编辑过]

--  作者:7032175
--  发布时间:2013/3/15 8:44:00
--  
标准列是固定列不能分
--  作者:狐狸爸爸
--  发布时间:2013/3/15 9:37:00
--  

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

不要一个空表就发上来


--  作者:7032175
--  发布时间:2013/3/15 13:13:00
--  
烦请狐狸爸爸看一下,谢谢了, 条件1〈,  条件2  〉,  条件3  ≥ , 条件4   ≤,   条件5  n-n   条件6   n   一共6个条件,满足条件为合格,不满足为不合格,谢谢了.
--  作者:7032175
--  发布时间:2013/3/15 13:14:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:狐狸爸爸
--  发布时间: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


--  作者:7032175
--  发布时间:2013/3/15 18:10:00
--  
谢谢狐狸爸爸