Foxtable(狐表)用户栏目专家坐堂 → Syscmd.Filter.HideSameValues()对窗口中的副本表无效?


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

主题:Syscmd.Filter.HideSameValues()对窗口中的副本表无效?

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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
Syscmd.Filter.HideSameValues()对窗口中的副本表无效?  发帖心情 Post By:2013/1/19 18:17:00 [显示全部帖子]

如题!请各位高人指教!谢谢!

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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/21 10:00:00 [显示全部帖子]

那对于副本应该如何处理呢?

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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/24 11:59:00 [显示全部帖子]

以下是引用lin_hailun在2013-1-21 10:08:00的发言:
 几种方法。

 方法一,遍历所有的行,比较取出所有不重复的_Identify,然后设置filter

 方法二,用datatable.getxxxvalue()取出不重复的值,然后设置filter

 方法三,直接用sql语句查找不重复的_Identify,然后设置filter;或者直接使用sql加载不重复的行。

林总,能不能具体一点写个例子啊,相信很多人用得着的?


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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/24 13:05:00 [显示全部帖子]

以下是引用blackzhu在2013-1-24 13:01:00的发言:
With Tables("表A")
    .Select(.RowSel, .Cols("第一列").Index)
    Syscmd.Filter.HideSameValues()
End With

这样?

对窗口中的副本无效啊!


 回到顶部
帅哥哟,离线,有人找我吗?
关键下一秒
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/25 17:35:00 [显示全部帖子]

以下是引用lin_hailun在2013-1-24 14:56:00的发言:


嗯嗯,确实是测试正常。

With Tables(e.Form.Name & "_Table1")
    .Select(.RowSel, .ColSel)
    Syscmd.Filter.HideSameValues()
End With


你们是怎样测试的呢,我怎么测试就是有问题啊,能不能做不例子看看?我是放在窗口中的AfterLoad事件里的


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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/25 20:28:00 [显示全部帖子]

哦,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
关键下一秒
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/26 8:33:00 [显示全部帖子]

以下是引用lin_hailun在2013-1-24 13:38:00的发言:
 方法一。

Tables("订单").Filter = "单价 < 10"   '模拟筛选

'开始,产品和客户不重复的行
Dim idxs As String = ""
Dim prev_cp As String = ""
Dim prev_kh As String = ""
For Each dr As DataRow In DataTables("订单").Select(Tables("订单").Filter, "产品,客户")
    If prev_cp <> dr("产品") OrElse prev_kh <> dr("客户") Then
        idxs &= dr("_Identify") & ","
        prev_cp = dr("产品")
        prev_kh = dr("客户")
    End If
Next

Tables("订单").Filter = "_Identify in (" & idxs.Trim(",") & ")"
 
林总,请问idxs到底能承载多少个_Identify数据呢?数据太多会不会当掉?


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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/26 9:43:00 [显示全部帖子]

以下是引用lin_hailun在2013-1-26 9:19:00的发言:


数据量太大的话,会挂掉的,或者说,要相应的速度很慢。但是,你要筛选去除重复的话,只能通过这种方法了。

除非你在后台处理,用sql语句加载入符合你要求的那些行,用这种方法来模拟筛选。这样会快很多的。

又或者,这样写代码

Tables("订单").Filter = "单价 < 10"   '模拟筛选

'开始,产品和客户不重复的行
Dim idxs As String = ""
Dim prev_cp As String = ""
Dim prev_kh As String = ""
For Each dr As DataRow In DataTables("订单").Select(Tables("订单").Filter, "产品,客户")
    If prev_cp <> dr("产品") OrElse prev_kh <> dr("客户") Then
        idxs &= dr("_Identify") & ","
        prev_cp = dr("产品")
        prev_kh = dr("客户")
    Else
        dr.Remove()
    End If
Next

'Tables("订单").Filter = "_Identify in (" & idxs.Trim(",") & ")"
 
这方法确实很慢,我才3000行数据,打开就要用10秒钟了。使用remove后,其它table也就没办法引用被remove掉的数据了吧?

[此贴子已经被作者于2013-1-26 9:45:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
关键下一秒
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/26 13:05:00 [显示全部帖子]

以下是引用lin_hailun在2013-1-26 10:41:00的发言:
 得到不重复的值SQL语句

select * from {订单} where [_Identify] in (SELECT MAX([_Identify]) AS id FROM {订单} GROUP BY 产品)

林总,这个比较好用,速度较让人满意!谢谢啊!


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


加好友 发短信
等级:四尾狐 帖子:816 积分:6685 威望:0 精华:2 注册:2012/8/23 12:35:00
  发帖心情 Post By:2013/1/28 11:47:00 [显示全部帖子]

以下是引用lin_hailun在2013-1-26 10:41:00的发言:
 得到不重复的值SQL语句

select * from {订单} where [_Identify] in (SELECT MAX([_Identify]) AS id FROM {订单} GROUP BY 产品)

如果使用这个产生的表,再用 datatable.load 代码,就会出错(Group不正确)。用messagebox(loadfilter)显示没有" Group By 产品 "


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