以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 根据值所在的区间判断等级 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=140228) |
-- 作者:deliangzhaoe -- 发布时间:2019/9/1 11:02:00 -- 根据值所在的区间判断等级 表A设定了值的区间R1-R2,表B的风险值列在表A中找到值所在区间的行,填入风险等级、风险级别和管控层级,表A要使用与表B企业名称列相同的行,如果表A中没有与表B企业名称相同的行,表A列使用企业名称为“通用”的行。 如何写代码?谢谢!
|
-- 作者:y2287958 -- 发布时间:2019/9/1 11:59:00 -- For Each dr As DataRow In DataTables("表B").Select("企业名称>\'\'") Dim drs As List(of DataRow) = DataTables("表A").Select("企业名称=\'" & dr("企业名称") & "\'") If drs.Count = 0 drs = DataTables("表A").Select("企业名称=\'通用\'") End If If drs.Count > 0 For Each fdr As DataRow In drs If dr("风险值") >= fdr("R1") AndAlso dr("风险值") <= fdr("R2") dr("风险等级") = fdr("风险等级") dr("风险级别") = fdr("风险级别") dr("管控层级") = fdr("管控层级") Exit For End If Next End If Next |
-- 作者:deliangzhaoe -- 发布时间:2019/9/1 16:06:00 -- 出现了以下错误: |
-- 作者:有点蓝 -- 发布时间:2019/9/1 20:58:00 -- 表B,datacolchanged事件 Select Case e.DataCol.Name Case "企业名称","风险值" If e.DataRow.IsNull("企业名称") OrElse e.DataRow.IsNull("风险值") e.DataRow("风险等级") = Nothing Else Dim dr As DataRow = DataTables("表A").Find("企业名称=\'" & e.DataRow("企业名称") & "\' and 风险等级 <= " & e.DataRow("风险值") & " and 风险等级 >=" & e.DataRow("风险值")) If dr Is Nothing Then dr = DataTables("表A").Find("企业名称=\'通用\' And R1 <= " & e.DataRow("风险值") & " and R2 >=" & e.DataRow("风险值")) End If If dr Is Nothing Then e.DataRow("风险等级") = Nothing Else e.DataRow("风险等级") = dr("风险等级") End If End If End Select |
-- 作者:deliangzhaoe -- 发布时间:2019/9/2 21:03:00 -- 没实现! 表A设定了列:企业名称、值的区间R1、R2、风险等级、风险级别、管控层级等列。表B设置了列:企业名称、mes_风险值、风险等级、风险级别、管控层级等。 表B的MES_风险值列在表A中找到值所在区间的正确行,在表B中填入找到的风险等级、风险级别和管控层级,表A要使用与表B企业名称列相同的行,如果表A中没有与表B企业名称相同的行,表A使用企业名称为“通用”的行。不管使用企业名称相同的还是使用企业名称为通用的,风险等级、风险级别和管控层级都要填入找到的内容。 Select Case e.DataCol.Name Case "MES_风险值" If e.DataRow.IsNull("企业名称") OrElse e.DataRow.IsNull("MES_风险值") e.DataRow("MES_评价级别") = Nothing e.DataRow("风险分级") = Nothing e.DataRow("管控层级") = Nothing Else Dim dr As DataRow = DataTables("MES法").Find("企业名称 = \'" & e.DataRow("企业名称") & "\' and R1 <= " & e.DataRow("MES_风险值") & " and R2 >=" & e.DataRow("MES_风险值")) If dr IsNot Nothing Then e.DataRow("MES_评价级别") = dr("风险等级") e.DataRow("风险分级") = dr("风险级别") e.DataRow("管控层级") = dr("管控层级") Else dim dt as datarow = DataTables("MES法").Find("企业名称 = \'通用\' And R1 <= " & e.DataRow("MES_风险值") & " and R2 >=" & e.DataRow("MES_风险值")) e.DataRow("MES_评价级别") = dt("风险等级") e.DataRow("风险分级") = dt("风险级别") e.DataRow("管控层级") = dt("管控层级") End If End If End Select 用您上面的代码,没实现,我又自己改了一下代码,还是不行,麻烦您再给看看,谢谢 |
-- 作者:有点蓝 -- 发布时间:2019/9/2 21:35:00 -- 4楼的代码我在1楼的实例测试没有问题,说明如何测试,按什么步骤,输入什么数据有问题? 如果是改到其它实例不会改,就上传有问题的实例说明
|
-- 作者:deliangzhaoe -- 发布时间:2019/9/3 20:08:00 -- 如果MES_风险值这一列是通过公式计算得出的,而不是输入的,就不行,我改了一下,现在可以了。谢谢老师 |