以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Syscmd.Filter.HideSameValues()对窗口中的副本表无效?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28123)

--  作者:关键下一秒
--  发布时间:2013/1/19 18:17:00
--  Syscmd.Filter.HideSameValues()对窗口中的副本表无效?
如题!请各位高人指教!谢谢!
--  作者:狐狸爸爸
--  发布时间:2013/1/21 8:56:00
--  

是的,副本没有这个功能。


--  作者:关键下一秒
--  发布时间:2013/1/21 10:00:00
--  
那对于副本应该如何处理呢?
--  作者:lin_hailun
--  发布时间:2013/1/21 10:08:00
--  
 几种方法。

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

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

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

--  作者:关键下一秒
--  发布时间:2013/1/24 11:59:00
--  
以下是引用lin_hailun在2013-1-21 10:08:00的发言:
 几种方法。

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

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

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

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


--  作者:blackzhu
--  发布时间:2013/1/24 13:01:00
--  
With Tables("表A")
    .Select(.RowSel, .Cols("第一列").Index)
    Syscmd.Filter.HideSameValues()
End With

这样?

--  作者:关键下一秒
--  发布时间: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

这样?

对窗口中的副本无效啊!


--  作者:lin_hailun
--  发布时间:2013/1/24 13:30:00
--  
做一下,方法2,方法一应该是最好的。

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

\'开始,产品和客户不重复的行
Dim idxs As String
For Each ary As String() In DataTables("订单").GetUniqueValues(Tables("订单").Filter, "产品", "客户")
    Dim fdr As DataRow = DataTables("订单").Find("产品 = \'" & ary(0) & "\' And 客户 = \'" & ary(1) & "\' And (" & Tables("订单").Filter & ")")
    idxs &= fdr("_Identify") & ","
Next

Tables("订单").Filter = "_Identify in (" & idxs.Trim(",") & ")"

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者: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(",") & ")"

--  作者:blackzhu
--  发布时间:2013/1/24 14:08:00
--  
With Tables(e.Form.Name & "_Table2")
    .Select(.RowSel, .Cols("第一列").Index)
    Syscmd.Filter.HideSameValues()
End With


测试没有问题.