以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  drawcell 实现重复值单元格标注颜色 效率问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81943)

--  作者:huozhe
--  发布时间:2016/3/9 10:49:00
--  drawcell 实现重复值单元格标注颜色 效率问题

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事件效率很差,可否有其他办法。


--  作者:大红袍
--  发布时间:2016/3/9 11:00:00
--  

 用datacolchanged来处理。

 

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

 

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


--  作者:huozhe
--  发布时间:2016/3/9 11:08:00
--  
明白你的意思了 谢谢
--  作者:jackchan120925
--  发布时间:2017/9/5 22:05:00
--  
没看明白啊。 1, 修改姓名的时候,查询是否重复,如果重复,就在一列赋值【重复】,否则清空内容 相当于在表中添加一列《重复》,在datacolchanged事件中判读,如果有重复值,则把对应行的《重复》列的值设为”重复“,那导入的第一个值这个《重复》列是空的,第二次导入的时候,对应的单元格才会显示”重复“吗?这样没有原来楼主用颜色标记来的直观啊 2,在drawcell事件,直接取那一列的值,不要重复compute。 没明白这句话的意思,求解释
--  作者:有点蓝
--  发布时间:2017/9/5 22:16:00
--  
1、直观和效率自己娶一个

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

--  作者:jackchan120925
--  发布时间:2017/9/5 22:21:00
--  
针对datacolchanged事件还是有个不明白的,是用 datatable的find方法来找出重复值吗?如果这样,比如当值A第一次出现的时候,对应的《重复》标记单元格不会标记出“重复”,只有当A第二次被输入的时候,才会标记为“重复”吧?
--  作者:有点蓝
--  发布时间:2017/9/5 22:23:00
--  
既然只有一个,当然不会重复,既然不重复,还有必要标记吗
--  作者:jackchan120925
--  发布时间:2017/9/5 22:28:00
--  
我的意思是,比如我把excel订单表导入的foxtable中,如果地址“ABCDEF”有在excel表格中出现了2次,但是导入过程中,当第一个“ABCDEF”导入foxtable的时候,这一行对应的《重复》列,不会显示“重复”,因为datatable中没有相同行,当excel表中第二个“ABCDEF”导入foxtable,因为第一“ABCDEF”已经存在了,所以其对应的《重复》列的值会标记“重复”。也就是入附件所示的效果
图片点击可在新窗口打开查看此主题相关图片如下:snip20170905_4.png
图片点击可在新窗口打开查看
,在结合对“重复”值进行的drawcell处理,也即是只有一行会被标记出来
--  作者:有点蓝
--  发布时间:2017/9/5 22:33:00
--  
简单啊,使用select查找,所有相同的行,如果没有标记的都标记不就行了
--  作者:jackchan120925
--  发布时间:2017/9/5 22:42:00
--  
亲,原谅我小白一个,怎么用select来实现啊?