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


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

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

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/24 14:56:00 [只看该作者]

以下是引用blackzhu在2013-1-24 14:08:00的发言:
With Tables(e.Form.Name & "_Table2")
    .Select(.RowSel, .Cols("第一列").Index)
    Syscmd.Filter.HideSameValues()
End With


测试没有问题.


嗯嗯,确实是测试正常。

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




 回到顶部
帅哥哟,离线,有人找我吗?
关键下一秒
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | 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事件里的


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/25 18:11:00 [只看该作者]

以下是引用关键下一秒在2013-1-25 17:35:00的发言:

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


我们用的是按钮测试的。

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


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

哦,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
关键下一秒
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | 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数据呢?数据太多会不会当掉?


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/26 9:19:00 [只看该作者]

以下是引用关键下一秒在2013-1-26 8:33:00的发言:
 林总,请问idxs到底能承载多少个_Identify数据呢?数据太多会不会当掉?


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

除非你在后台处理,用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(",") & ")"

 回到顶部
帅哥哟,离线,有人找我吗?
关键下一秒
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/26 10:38:00 [只看该作者]

 用另一个表把你要的数据fill进去吧,这个是最快的了,不要在原来的数据上筛选,这个很慢。

 你做个例子出来。

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/26 10:41:00 [只看该作者]

 得到不重复的值SQL语句

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

 回到顶部
帅哥哟,离线,有人找我吗?
关键下一秒
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | 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 产品)

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


 回到顶部
总数 22 上一页 1 2 3 下一页