以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- drawcell 实现重复值单元格标注颜色 效率问题 (http://foxtable.net/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来实现啊?
|