以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  不同时段使用不同的评判标准  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109734)

--  作者:wangj6666
--  发布时间:2017/11/18 9:55:00
--  不同时段使用不同的评判标准
各位专家:您们好!
      以前有个表达式列的表达式为IIF([偏差]   >  4.9 or [偏差] <= -5 or [标识是否正确] = \'不正确\' or [倒膜外观是否差异] = \'有差异\', \'不合格\', \'合格\'),如今要提高偏差的管控要求,将偏差的要求由[偏差]   >  4.9 or [偏差] <= -5,提高到[偏差]   >  2.9 or [偏差] <= -3,但之前时段的所有行评判标准要维持以前的要求,之后的按新的偏差要求评判,请问各位专家要如何修改?

--  作者:有点蓝
--  发布时间:2017/11/18 10:09:00
--  
那就不能使用表达式了


--  作者:wangj6666
--  发布时间:2017/11/18 10:59:00
--  
谢谢!能帮助我写一下用Select Case语言达到上述要求的代码吗?
--  作者:有点蓝
--  发布时间:2017/11/18 11:08:00
--  
先使用下面代码,然后重置"偏差"
Select Case e.DataCol.Name 
    Case "
偏差","标识是否正确","倒膜外观是否差异" 
        If
 e.DataRow("
偏差") > 4.9 orelse  e.DataRow("偏差") <= -5 orelse  e.DataRow("标识是否正确") = "不正确"  orelse  e.DataRow("倒膜外观是否差异") = "有差异"  Then
            e.
DataRow("xxx列") = "不合格"
        
Else
            
e.DataRow("xxx列") = "合格"
        End
 If
End
 
Select

再把代码偏差值改为最新的即可,然后新录入的就会按照新的偏差值进行计算。

--  作者:wangj6666
--  发布时间:2017/11/18 11:23:00
--  
非常感谢!但还没有加入时段日期,如果我想从2017年10月31日前的按上述[偏差]   >  4.9 or [偏差] <= -5进行评判,2017年10月31日起(含10月30日)按[偏差]   >  2.9 or [偏差] <= -3进行评判,还需如何进行修改呢?
--  作者:有点蓝
--  发布时间:2017/11/18 11:31:00
--  
Select Case e.DataCol.Name 
    Case "
偏差","标识是否正确","倒膜外观是否差异" ,"日期"
        If (
e.DataRow("日期") < #10/31/2017# andalso e.DataRow("
偏差") > 4.9 orelse  e.DataRow("偏差") <= -5) orelse (e.DataRow("日期") >= #10/31/2017# andalso e.DataRow("偏差") > 2.9 orelse  e.DataRow("偏差") <= -3) orelse  e.DataRow("标识是否正确") = "不正确"  orelse  e.DataRow("倒膜外观是否差异") = "有差异"  Then
            e.
DataRow("xxx列") = "不合格"
        
Else
            
e.DataRow("xxx列") = "合格"
        End
 If
End
 
Select
--  作者:wangj6666
--  发布时间:2017/11/21 14:25:00
--  
我编写好后,它只能在日期变化后,才能重新判断是否合格,当偏差修改后却不能及时重新更新判断结果?另外:有些2017年10月31日之前的时间,偏差小于-3的还是被判断为了不合格。请问还需要如何编码解决?
--  作者:有点甜
--  发布时间:2017/11/21 14:35:00
--  
Select Case e.DataCol.Name
    Case "偏差","标识是否正确","倒膜外观是否差异" ,"日期"
        If (e.DataRow("日期") < #10/31/2017# AndAlso (e.DataRow("偏差") > 4.9 OrElse  e.DataRow("偏差") <= -5)) OrElse (e.DataRow("日期") >= #10/31/2017# AndAlso (e.DataRow("偏差") > 2.9 OrElse  e.DataRow("偏差") <= -3)) OrElse  e.DataRow("标识是否正确") = "不正确"  OrElse  e.DataRow("倒膜外观是否差异") = "有差异"  Then
            e.DataRow("xxx列") = "不合格"
        Else
            e.DataRow("xxx列") = "合格"
        End If
End Select

--  作者:wangj6666
--  发布时间:2017/11/21 16:14:00
--  
谢谢专家的帮助,目前日期的问题解决了。偏差列在我的表中是个表达式列,目前还是偏差表达式计算结果已超过标准后,判定的结果还是没有进行相应的改变,是不是哪里还有不对的地方?请指教!谢谢!
--  作者:有点甜
--  发布时间:2017/11/21 16:31:00
--  

表达式列不能触发datacolchanged事件的。你看看

 

http://www.foxtable.com/webhelp/scr/2381.htm