以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于排除重复值的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=152502)

--  作者:狐表(小白)
--  发布时间:2020/7/13 21:31:00
--  关于排除重复值的问题
老师你好,表A是SQL数据库加载出来的表,我想知道用下面的代码排除表A的重复值,排除的数据系统是直接删除了还是保存在数据库了?谢谢!
Tables("A").RepeatFilter("第一列"1)
--  作者:有点蓝
--  发布时间:2020/7/13 21:51:00
--  
属于筛选,只是不显示而已,不会删除任何数据
--  作者:狐表(小白)
--  发布时间:2020/7/13 23:01:00
--  

[此贴子已经被作者于2020/7/13 23:01:28编辑过]

--  作者:狐表(小白)
--  发布时间:2020/7/13 23:12:00
--  
谢谢老师,还有个问题要请教,如下图,如何通过遍历表的方式,通过点击按钮,把下图表1的高是2400的产品型号进行数量加总,来源列合并后去重后只显示一行数据。上传的代码请老师给改下,谢谢!

图片点击可在新窗口打开查看此主题相关图片如下:20200713231608.png
图片点击可在新窗口打开查看

按钮代码:
Dim drs As List(Of DataRow)
drs = DataTables("表1").Select("高 = 2400 And 导入类型 = \'线\'")
   For Each dr As DataRow In drs
     Dim i As Integer = Tables("表1").FindRow("序=\'" & dr("序") & "\'")
     If i >=0 Then
        Dim rz As Row = Tables("表1").Rows(i)
        If rz IsNot Nothing AndAlso rz("高")=2400 AndAlso rz("导入类型") = "线" Then
         dr = DataTables("表1").AddNew
           dr("订单编号")= rz("订单编号")
           dr("产品名称")= rz("产品名称")
           dr("产品分类")= rz("产品分类")
           dr("产品型号")= rz("产品型号")
           dr("高")= rz("高")
           dr("数量")= 合并后的总数
           dr("导入类型")= rz("导入类型")
           dr("来源")=合并后去重的值
        End If
     End If
删除原有的3条数据行
Next 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表 1.xls




[此贴子已经被作者于2020/7/13 23:20:36编辑过]

--  作者:有点蓝
--  发布时间:2020/7/14 8:49:00
--  
Dim drs As List(Of DataRow)
drs = DataTables("表1").Select("高 = 2400 And 导入类型 = \'线\'")
If drs.Count = 0 Then Return ""
Dim dr1 As DataRow = drs(0)
Dim dr As DataRow = DataTables("表1").AddNew
dr("订单编号")= dr1("订单编号")
dr("产品名称")= dr1("产品名称")
dr("产品分类")= dr1("产品分类")
dr("产品型号")= dr1("产品型号")
dr("高")= dr1("高")
dr("导入类型")= dr1("导入类型")
Dim lst As new List(of String)
Dim sum As Integer
For i As Integer = drs.Count -1 To 0 Step -1
    dr1 = drs(i)
    sum += dr1("数量")
    For Each s As String In dr1("来源").split(",")
        If lst.Contains(s) = False Then lst.Add(s)
    Next
    dr1.Delete
Next
dr("数量")= sum
lst.Sort
dr("来源")=String.Join(",",lst.ToArray)

--  作者:狐表(小白)
--  发布时间:2020/7/14 9:20:00
--  
多谢图片点击可在新窗口打开查看
--  作者:y2287958
--  发布时间:2020/7/14 14:37:00
--  
还可以这样写:
Dim fl As String = "高 = 2400 And 导入类型 = \'线\'"
Dim i As Integer = DataTables("表1").Compute("Sum(数量)",fl)
Dim s As String = DataTables("表1").GetComboListString("来源",fl).replace("|",",")
Dim f As New Filler
f.SourceTable = DataTables("表1")
f.DataTable = DataTables("表1")
f.Filter = "序=1"
f.Fill()
Dim dr As DataRow = DataTables("表1").DataRows(DataTables("表1").DataRows.Count-1)
dr("数量") = i
dr("来源") = String.join(",",s.split(",").Distinct.ToArray)