Foxtable(狐表)用户栏目专家坐堂 → [求助]请教删除重复值的问题!


  共有7818人关注过本帖树形打印复制链接

主题:[求助]请教删除重复值的问题!

帅哥哟,离线,有人找我吗?
gaoyong30000
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
[求助]请教删除重复值的问题!  发帖心情 Post By:2013/4/7 12:00:00 [显示全部帖子]

有3个列  删除表中3列都相等的重复行 ,只保留一行   怎么弄?

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/4/8 10:31:00 [显示全部帖子]

以下是引用muhua在2013-4-7 15:34:00的发言:

Dim i As Integer
For i  = DataTables("表A").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("表A").DataRows(i)
    Dim dr2 As DataRow = DataTables("表A").Find("第一列='" & dr("第一列") & "' and 第二列='" & dr("第二列") & "' and _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
Next

 

执行了一下 卡了。。。 一直不动  代码能优化不?

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/4/8 13:42:00 [显示全部帖子]

 8万多条

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/4/8 14:31:00 [显示全部帖子]

我现在碰到一个头疼的问题 就是填充  接收表里本来就存在的数据  用filter填充后 居然还能重复填充了一次 才导致这么多数据量

Dim wbl1 As WinForm.Table = e.Form.Controls("Table1")
Dim tbl1 As Table = wbl1.Table
tbl1.DataTable.Save()

Dim v As Double
v = Tables("售后客户录入_table1").Compute("max(公里数)")
Dim d As Date
d  = Tables("售后客户录入_table1").Compute("max(进店时间)")

If e.Form.controls("textbox1").text = v  And e.Form.controls("DateTimePicker2").text = d Then
    Tables("售后客户档案_售后客户档案Table2").current.save()
    e.sender.Enabled = False
Else
    If DataTables("售后客户录入_Table1").Compute("Count(进店时间)","进店时间 >= #"& Tables("售后客户档案_售后客户档案Table2").current("最后进店日期").addyears(-1) &"# And 底盘号 = '" & Tables("售后客户档案_售后客户档案Table2").current("底盘号") & "'") >= 3 Then
        Tables("售后客户档案_售后客户档案Table2").current("客户等级") = "A"
    ElseIf DataTables("售后客户录入_Table1").Compute("Count(进店时间)","进店时间 >= #"& Tables("售后客户档案_售后客户档案Table2").current("最后进店日期").addyears(-1) &"# And 底盘号 = '" & Tables("售后客户档案_售后客户档案Table2").current("底盘号") & "'") = 2 Then
        Tables("售后客户档案_售后客户档案Table2").current("客户等级") = "B"
    ElseIf DataTables("售后客户录入_Table1").Compute("Count(进店时间)","进店时间 >= #"& Tables("售后客户档案_售后客户档案Table2").current("最后进店日期").addyears(-1) &"# And 底盘号 = '" & Tables("售后客户档案_售后客户档案Table2").current("底盘号") & "'") = 1 Then
        Tables("售后客户档案_售后客户档案Table2").current("客户等级") = "C"
        'ElseIf DataTables("售后客户录入_Table1").Compute("Count(进店时间)","进店时间 >= #"& date.today.addyears(-1)&"# and 底盘号 = '" & Tables("售后客户档案_售后客户档案Table2").current("底盘号") & "'") <= 1 Then
        'ElseIf DataTables("售后客户录入_Table1").Compute("Count(进店时间)","进店时间 >= #"& Tables("售后客户档案_售后客户档案Table2").current("最后进店日期").addyears(-2) &"# And 底盘号 = '" & Tables("售后客户档案_售后客户档案Table2").current("底盘号") & "'") = 0 Then
        'Tables("售后客户档案_售后客户档案Table2").current("客户等级") = "无效档案"
    Else
        Tables("售后客户档案_售后客户档案Table2").current("客户等级") = "D"
    End If
   
    If (e.Form.controls("textbox1").text - v) < 7000 And (CDate(e.Form.controls("DateTimePicker2").value) - d).totaldays < 180 Then
        Tables("售后客户档案_售后客户档案Table2").current("客户等级") = "A"
    End If
   
    If Date.Today.addmonths(-3) < Tables("售后客户档案_售后客户档案Table2").current("建档日期") Then
        Tables("售后客户档案_售后客户档案Table2").current("客户等级") = "A"
    End If
   
    If Tables("售后客户档案_售后客户档案Table2").current.IsNull("编号") = True Then
        Tables("售后客户档案_售后客户档案Table2").current("客户等级") = "E"
    End If
   
    Tables("售后客户档案_售后客户档案Table2").current.save()

    Dim g As New Filler
    g.SourceTable = DataTables("售后客户档案_售后客户档案Table2") '指定数据来源
    g.SourceCols = "底盘号,里程,最后进店日期" '指定数据来源列
    g.DataTable = DataTables("售后客户录入_Table1")'指定数据接收表
    g.DataCols = "底盘号,公里数,进店时间" '指定数据接收列
    g.ExcludeExistValue =True
    g.ExcludeNullValue =False
    g.Distinct =True
    g.Append =True
    g.Fill()

 
    Dim wbl As WinForm.Table = e.Form.Controls("Table1")
    Dim tbl As Table = wbl.Table
    tbl.DataTable.Save()
   
    DataTables("售后客户档案_售后客户档案Table1").load
    Tables("售后客户档案_售后客户档案Table1").filter = "底盘号 = '" & Tables("售后客户档案_售后客户档案Table2").Current("底盘号") & "'"
    Tables("售后客户档案_售后客户档案Table1").Sort = "进店时间"
    e.sender.Enabled = False
End If

就是红色这段~  只要一保存 就把来源表的3000多数据 全部填充进了 接收表 不管有没重复

  g.ExcludeExistValue =True

    g.Distinct =True

这2句 貌似没起到效果!
[此贴子已经被作者于2013-4-8 14:34:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/4/9 8:52:00 [显示全部帖子]

以下是引用muhua在2013-4-8 11:20:00的发言:

Dim i As Integer
For i  = DataTables("订单").DataRows.Count-1 To 0 Step -1
    Dim dr As DataRow = DataTables("订单").DataRows(i)
    Dim dr2 As DataRow = DataTables("订单").Find("产品='" & dr("产品") & "' and 客户='" & dr("客户") & "' and _Identify <> " & dr("_Identify"))
    If dr2 IsNot Nothing Then
        dr2.Delete
    End If
    Application.DoEvents   
Next

 

数据量很大吗?

很慢  一条条的在删除
[此贴子已经被作者于2013-4-9 8:56:01编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/4/9 14:44:00 [显示全部帖子]

 Microsoft Jet 数据库引擎找不到输入表或查询 '~TMPCLP历史进店记录'。 确定它是否存在,以及它的名称的拼写是否正确。


Dim cmd As New SQLCommand
cmd.CommandText = "delete from {历史进店记录} where [_Identify] not in (select max([_Identify]) from {历史进店记录} group by 进店时间,公里数,底盘号)"
cmd.ExecuteNonQuery()
DataTables ("历史进店记录").Load()



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


 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/4/9 15:10:00 [显示全部帖子]

好了,多谢C版  删掉了

muhua版  也麻烦你了  呵呵~

 回到顶部