以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  狐爸:如何排除前面的重复值,留下最后一个。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=18655)

--  作者:HUANGPP
--  发布时间:2012/4/20 10:40:00
--  狐爸:如何排除前面的重复值,留下最后一个。

以下代码只能排除后面的重复值,如何排除前面的重复值,留下最后一个。

  

Case "库存报表"
      Tables("CK").Sort = "[_Identify] DESC"
         With Forms("仓库1")
                    .Open()
        End With
                With Tables("CK")
                    Select Case e.Link.Name
                        Case "库存报表"
                   .Select(0, .Cols("D3").Index)
                    End Select
                End With
    Syscmd.Filter.HideSameValues()
    MainTable = Tables("CK")
            End Select


--  作者:狐狸爸爸
--  发布时间:2012/4/20 10:50:00
--  
系统的排除重复值,只能留下最前的一个
--  作者:程兴刚
--  发布时间:2012/4/20 11:13:00
--  

第一、可否给系统的排除重复值增加选项,假如给一个逻辑值选项,true保留第一个值,false保留最后一个值,默认为true

第二、可以对指定列排序后再排除重复吧(未测试,猜想可以,楼主可以测试一下)?如果行,那就可以实现保留最后一个值或这是第一个值。


--  作者:狐狸爸爸
--  发布时间:2012/4/20 11:21:00
--  

有道理,我会考虑的。


--  作者:HUANGPP
--  发布时间:2012/4/20 11:43:00
--  
第二点就是以上的代码,可是不行,还是只显示最前一个
--  作者:HUANGPP
--  发布时间:2012/4/20 11:44:00
--  
请教有没有别的思路,可否用SQL
--  作者:HUANGPP
--  发布时间:2012/5/5 18:30:00
--  

对于基本功能里的流水帐二,如果要取得每一个产品的最后一行记录做为库存报表,请教有什么方法?

我用排除重复值的方法(如下),只能留下最前面的一行,请教有没有别的思路? 

Case "库存报表"
      Tables("CK").Sort = "[_Identify] DESC"
         With Forms("仓库")
                    .Open()
        End With
                With Tables("CK")
                    Select Case e.Link.Name
                        Case "库存报表"
                   .Select(0, .Cols("D3").Index)
                    End Select
                End With
    Syscmd.Filter.HideSameValues()
    MainTable = Tables("CK")
            End Select


--  作者:mr725
--  发布时间:2012/5/5 19:46:00
--  

这样是不是楼主要的结果:


Dim sk As String
Dim Cs As List(Of String)
Cs = DataTables("例子二").GetUniqueValues("","产品")
For i As Integer = 0 To Cs.count -1   
    Dim dr As DataRow
    With DataTables("例子二")
        dr = .Find("产品 = \'" & Cs(i) & "\'","[_sortkey] Desc")
    End With
    sk = sk & "\'" & dr("库存") & "\',"
Next
output.show(sk)
Tables("例子二").filter = "库存 in (" & sk & ") "
Tables("例子二").sort = "产品"

[此贴子已经被作者于2012-5-5 20:17:18编辑过]

--  作者:lyq
--  发布时间:2012/5/5 20:56:00
--  

试下这个代码

Dim cmd As New SQLCommand
cmd.CommandText = "select 列名 From 表名 where [_Identify]  In (Select max([_Identify]) From 表名 Group by 列名)"
cmd.ExecuteNonQuery()


--  作者:mr725
--  发布时间:2012/5/5 22:03:00
--  

学习了···