以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]显示指定列重复值的行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=171818)

--  作者:天一生水
--  发布时间:2021/9/10 16:37:00
--  [求助]显示指定列重复值的行

老师好!

想筛选出[原审法院]、[原审案号]都相同的行,实际是有这类行,但是没有显示出来,老师给看看代码是哪里的问题?

谢谢!

 

Dim idx As String = "-1,"
Dim idx_temp As String = ""
Dim pdr As DataRow = Nothing
Dim count As Integer = 0
Dim cs As String = "原审法院,原审案号"
For Each dr As DataRow In DataTables("数据表").SQLSelect("", cs)
   
    Dim flag As Boolean = False
    If pdr IsNot Nothing Then
        For Each c As String In cs.split(",")
            If pdr(c) <> dr(c) Then
                flag = True
                Exit For
            End If
        Next
    End If
    If flag Then
        If count > 1 Then
            idx &= idx_temp
        End If
        count = 1
        idx_temp = ""
    Else
        count += 1
    End If
    idx_temp &= dr("_Identify") & ","
    pdr = dr
Next

If count > 1 Then
    idx &= idx_temp
End If

Tables("数据表_table1").filter = "_Identify in (" & idx.trim(",") & ")"


--  作者:y2287958
--  发布时间:2021/9/10 16:50:00
--  

Tables("数据表_table1").DuplicateValuesFilter({"原审法院","原审案号"})


--  作者:有点蓝
--  发布时间:2021/9/10 16:51:00
--  
最新版有多列重复筛选功能了:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=171144


--  作者:天一生水
--  发布时间:2021/9/13 11:32:00
--  

谢谢蓝老师!

如果数据没有加载,上面的方法就筛选不出来。

老师帮忙写个sql语句吧: 加载出[原审法院]、[原审案号]都相同的行。

 

Dim cmd As new SQLCommand
cmd.C
Dim dt As DataTable
cmd.CommandText = "Se lect * From {数据表} Where [_Identify] Is null          "


DataTables("数据表").Load()    \'重新加载表


--  作者:有点蓝
--  发布时间:2021/9/13 11:49:00
--  
试试

Select * From {数据表} where [原审法院]+[原审案号] in(select [原审法院]+[原审案号] from (select [原审法院],[原审案号],count(1) as cnt from {数据表} group by [原审法院],[原审案号]) as a where cnt > 1)
--  作者:天一生水
--  发布时间:2021/9/13 13:47:00
--  

谢谢蓝老师!

我在执行sql窗口里运行代码,显示的数据没问题,怎样加载到窗口表里显示它?


--  作者:有点蓝
--  发布时间:2021/9/13 13:51:00
--  
http://www.foxtable.com/webhelp/topics/2912.htm

SQLCommand绑定到DataSource:http://www.foxtable.com/webhelp/topics/1909.htm

--  作者:天一生水
--  发布时间:2021/9/13 16:34:00
--  

蓝老师,我用窗口的副本表来显示Select出的数据,因为Fill帮助中说是跨表加载,因此我用的是DataSource。但是这样显示的是原始表的所有列,并且再点击窗口中的其他加载按钮,也没反应了...是不是绑定后还要解除绑定?

 

Dim cmd As new SQLCommand
cmd.C
Dim dt As DataTable
cmd.CommandText = "Select * From {数据表} where [原审法院]+[原审案号] in(select [原审法院]+[原审案号] from (select [原审法院],[原审案号],count(1) as cnt from {数据表} group by [原审法院],[原审案号]) as a where cnt > 1)
dt = cmd.ExecuteReader()
Tables("数据管理_table1").DataSource = dt

 

直接用LoadFilter 会报错,为什么?
Dim Filter As String
Filter = "Select * From {数据表} where [原审法院]+[原审案号] in(select [原审法院]+[原审案号] from (select [原审法院],[原审案号],count(1) as cnt from {数据表} group by [原审法院],[原审案号]) as a where cnt > 1)  "
DataTables("数据表").LoadFilter = Filter
DataTables("数据表").Load()    \'重新加载表


--  作者:有点蓝
--  发布时间:2021/9/13 16:44:00
--  
LoadFilter和完整sql没有半毛钱关系:http://www.foxtable.com/webhelp/topics/1928.htm

再说设置DataSource后,窗口表就是另外一个独立的表,和DataTables("数据表")也没有半毛钱的关系

重新加载数据可以这样:dataTables("数据管理_table1").load

或者重新调用上面的第一段代码