Foxtable(狐表)用户栏目专家坐堂 → drawcell 实现重复值单元格标注颜色 效率问题


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

主题:drawcell 实现重复值单元格标注颜色 效率问题

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


加好友 发短信
等级:幼狐 帖子:67 积分:975 威望:0 精华:0 注册:2013/7/19 16:55:00
drawcell 实现重复值单元格标注颜色 效率问题  发帖心情 Post By:2016/3/9 10:49:00 [只看该作者]

Case "姓名"
        Dim dr As Row = e.Row
        If dr.IsNull("姓名") = False Then
            If e.Table.Compute("Count([_Identify])","姓名 = '" & dr("姓名") & "'") > 1 Then
                e.Style = "重复"
            End If
        End If

 

如果姓名重复,重复项单元格用颜色标注

上述代码 在drawcell事件效率很差,可否有其他办法。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/9 11:00:00 [只看该作者]

 用datacolchanged来处理。

 

 修改姓名的时候,查询是否重复,如果重复,就在一列赋值【重复】,否则清空内容

 

 在drawcell事件,直接取那一列的值,不要重复compute。


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


加好友 发短信
等级:幼狐 帖子:67 积分:975 威望:0 精华:0 注册:2013/7/19 16:55:00
  发帖心情 Post By:2016/3/9 11:08:00 [只看该作者]

明白你的意思了 谢谢

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


加好友 发短信
等级:童狐 帖子:288 积分:2404 威望:0 精华:0 注册:2017/6/19 23:37:00
  发帖心情 Post By:2017/9/5 22:05:00 [只看该作者]

没看明白啊。 1, 修改姓名的时候,查询是否重复,如果重复,就在一列赋值【重复】,否则清空内容 相当于在表中添加一列《重复》,在datacolchanged事件中判读,如果有重复值,则把对应行的《重复》列的值设为”重复“,那导入的第一个值这个《重复》列是空的,第二次导入的时候,对应的单元格才会显示”重复“吗?这样没有原来楼主用颜色标记来的直观啊 2,在drawcell事件,直接取那一列的值,不要重复compute。 没明白这句话的意思,求解释

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107895 积分:548844 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/5 22:16:00 [只看该作者]

1、直观和效率自己娶一个

2、直接判断
If dr("重复")  Then
    e.Style = "重复"
End If

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


加好友 发短信
等级:童狐 帖子:288 积分:2404 威望:0 精华:0 注册:2017/6/19 23:37:00
  发帖心情 Post By:2017/9/5 22:21:00 [只看该作者]

针对datacolchanged事件还是有个不明白的,是用 datatable的find方法来找出重复值吗?如果这样,比如当值A第一次出现的时候,对应的《重复》标记单元格不会标记出“重复”,只有当A第二次被输入的时候,才会标记为“重复”吧?

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107895 积分:548844 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/5 22:23:00 [只看该作者]

既然只有一个,当然不会重复,既然不重复,还有必要标记吗

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


加好友 发短信
等级:童狐 帖子:288 积分:2404 威望:0 精华:0 注册:2017/6/19 23:37:00
  发帖心情 Post By:2017/9/5 22:28:00 [只看该作者]

我的意思是,比如我把excel订单表导入的foxtable中,如果地址“ABCDEF”有在excel表格中出现了2次,但是导入过程中,当第一个“ABCDEF”导入foxtable的时候,这一行对应的《重复》列,不会显示“重复”,因为datatable中没有相同行,当excel表中第二个“ABCDEF”导入foxtable,因为第一“ABCDEF”已经存在了,所以其对应的《重复》列的值会标记“重复”。也就是入附件所示的效果
图片点击可在新窗口打开查看此主题相关图片如下:snip20170905_4.png
图片点击可在新窗口打开查看
,在结合对“重复”值进行的drawcell处理,也即是只有一行会被标记出来

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107895 积分:548844 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/5 22:33:00 [只看该作者]

简单啊,使用select查找,所有相同的行,如果没有标记的都标记不就行了

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


加好友 发短信
等级:童狐 帖子:288 积分:2404 威望:0 精华:0 注册:2017/6/19 23:37:00
  发帖心情 Post By:2017/9/5 22:42:00 [只看该作者]

亲,原谅我小白一个,怎么用select来实现啊?

 回到顶部
总数 11 1 2 下一页