Foxtable(狐表)用户栏目专家坐堂 → 显示超差单元格颜色


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

主题:显示超差单元格颜色

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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
显示超差单元格颜色  发帖心情 Post By:2014/4/6 22:01:00 [只看该作者]

有三个表,标准规格表,公差表和测量数据表,想要测量数据超差的单元格以红色背景显示,如何写代码?

 

标准规格表(D1)-公差表(D1)<测量数据表(D1)<标准规格表(D1)+公差表(D1)

测量数据表(D1)单元格为原色,否则,单元测量数据表(D1)单元格为红色

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:显示超差单元格颜色.foxdb


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


加好友 发短信
等级:四尾狐 帖子:822 积分:5885 威望:0 精华:0 注册:2013/7/29 12:00:00
  发帖心情 Post By:2014/4/6 23:36:00 [只看该作者]


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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By:2014/4/7 7:12:00 [只看该作者]

谢谢2楼,我的例子要复杂的多,每一列的标定尺寸都不一样,涉及到3个表中取数,比简单的固定值(如60分)复杂许多,我自己无法完成,请高手帮助,谢谢!


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/4/7 8:32:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:显示超差单元格颜色.foxdb


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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By:2014/4/7 22:00:00 [只看该作者]

多谢Isy, 真正套用到我的项目中,为什么是两个"product"呀,实际的项目中该表还有一个“TestingDate"列

 

 

e.Table.DataTable.AddUserStyle("差",Color.Red,Color.Black)
For Each c As Col In e.Table.Cols
    If e.Col.Name = c.Name AndAlso c.Name <> "Product""Product" Then
        Dim dr1 As DataRow = DataTables("标准规格").Find("Product Is Not Null And Product = '" & e.Row("Product") & "'")
        Dim dr2 As DataRow = DataTables("公差范围").Find("Product Is Not Null And Product = '" & e.Row("Product") & "'")
        If dr1 IsNot Nothing AndAlso dr2 IsNot Nothing Then
            If e.Row(c.Name) < dr1(c.Name) - dr2(c.Name) OrElse e.Row(c.Name) > dr1(c.Name) + dr2(c.Name) Then
                e.Style = "差"
            End If

 

套用后,出现如下错误

 

.NET Framework 版本:2.0.50727.3053
Foxtable 版本:2014.3.8.1
错误所在事件:表,测量数据,DrawCell
详细错误信息:
调用的目标发生了异常。
从字符串“233667_1”到类型“Double”的转换无效。
输入字符串的格式不正确。

 


        End If
    End If
Next


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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By:2014/4/7 23:05:00 [只看该作者]

搞定了,加入了一行代码

 

e.Table.DataTable.AddUserStyle("差",Color.Red,Color.Black)
For Each c As Col In e.Table.Cols
    If e.Col.Name = c.Name AndAlso c.Name <> "Product" Then
        Dim dr1 As DataRow = DataTables("标准规格").Find("Product Is Not Null And Product = '" & e.Row("Product") & "'")
        Dim dr2 As DataRow = DataTables("公差范围").Find("Product Is Not Null And Product = '" & e.Row("Product") & "'")

       If e.Col.IsNumeric 
        If dr1 IsNot Nothing AndAlso dr2 IsNot Nothing Then
            If e.Row(c.Name) < dr1(c.Name) - dr2(c.Name) OrElse e.Row(c.Name) > dr1(c.Name) + dr2(c.Name) Then
                e.Style = "差"
            End If
        End If

End if
    End If
Next


 回到顶部