以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现筛选后 多个相同行只显示第一行?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54558)

--  作者:zyys2813
--  发布时间:2014/7/30 16:49:00
--  如何实现筛选后 多个相同行只显示第一行?

下拉窗口打开后的筛选,如 

Tables("选择产品_table1").Filter = "[库存数量] >0"
Tables("选择产品_table1").Sort = "产品名称,入库日期"

执行筛选后,由于产品很多,而且相同的“产品名称”因为“入库日期”的不同也会有多行,这样下拉窗口会很长且查找不方便,而我只需要每个产品的第一行,也就是“入库日期”最早的一行,其它相同产品隐藏,请问如何实现?


--  作者:Bin
--  发布时间:2014/7/30 16:55:00
--  
dim dr as datarow = Tables("选择产品_table1").Datatable.Find("[库存数量] >0","产品名称,入库日期")
if dr isnot nothing then
   Tables("选择产品_table1").Filter = "_Identify=" & dr("_Identify")
end if

--  作者:有点甜
--  发布时间:2014/7/30 16:56:00
--  

 简单一点这样写

 

Tables("选择产品_table1").Select(-1,Tables("选择产品_table1").Cols("产品名称").Index)
Syscmd.Filter.HideSameValues()


--  作者:zyys2813
--  发布时间:2014/7/30 17:00:00
--  
Bin 老师,这样只能显示第一种产品的第一行,其它产品的第一行也要显示怎么做?
--  作者:有点甜
--  发布时间:2014/7/30 17:01:00
--  

复杂一点这样写

 

Dim drs As List(Of DataRow) = Tables("选择产品_table1").DataTable.Select("[库存数量] >0","产品名称,入库日期")
Dim idxs As String = ""
Dim names As New List(Of String)
For Each dr As DataRow In drs
    If names.Contains(dr("产品名称")) = False Then
        idxs &= dr("_Identify") & ","
        names.Add(dr("产品名称"))
    End If
Next
Tables("选择产品_table1").Filter = "_Identify in (" & idxs.TrimEnd(",") & ")"


--  作者:zyys2813
--  发布时间:2014/7/30 17:11:00
--  
解决了,感谢两位老师