Foxtable(狐表)用户栏目专家坐堂 → 合并不重复的数据


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

主题:合并不重复的数据

美女呀,离线,留言给我吧!
信达
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:183 积分:1320 威望:0 精华:0 注册:2014/11/22 18:33:00
合并不重复的数据  发帖心情 Post By:2015/2/4 13:53:00 [只看该作者]

老师,

 

我在合并“产品”表时,

 

Dim mg As New Merger
mg.SourcePath = "d:\订单管理表.xls"
mg.Format = "excel" '指定格式
mg.SourceTableName = "订单管理表$" '指定要合并的表
mg.DataTableName = "产品" '指定接收数据的表
mg.FieldMaps.Add("委托单位","客户简称")
mg.FieldMaps.Add("名称","部件名称")
mg.Merge() '开始合并

为了防止重复写入客户简称和图号相同的数据时,在“产品”的DataColChanged里加上:

Select Case e.DataCol.name
    Case "客户简称","图号"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("客户简称") = False AndAlso dr.IsNull("图号") = False Then
            If e.DataTable.Compute("Count([_Identify])","客户简称 = '" & dr("客户简称") & "' And 图号 = '" & dr("图号") & "'") > 1 Then
                MessageBox.Show("已经存在相同客户和图号的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
            End If
        End If
End Select

 

不起作用。难度在合并表时,不运行DataColChanged吗?要怎样写呢?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/4 14:21:00 [只看该作者]

 合并不会触发DataCochanged事件。

 

 你可以编码导入 http://www.foxtable.com/help/topics/2334.htm

 


 回到顶部
美女呀,离线,留言给我吧!
信达
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:183 积分:1320 威望:0 精华:0 注册:2014/11/22 18:33:00
  发帖心情 Post By:2015/2/4 16:40:00 [只看该作者]

那在菜单"产品导入"中这样写对吗?

 

Dim Book As New XLS.Book("d:\订单管理表.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("产品").StopRedraw()
Dim Cols1() As String = {"委托单位","名称","图号","台车定额"}
Dim Cols2() As String = {"客户简称","部件名称","图号","台车定额"}
For dr1 As Integer = 1 To Sheet.Rows.Count -1
    Dim dr2 As DataRow = DataTables("产品").Find("客户简称 = '" & dr2("客户简称") & "' And 图号 = '" & dr2("图号") & "'")
    If dr2 Is Nothing Then '如果不存在同客户名称和图号的订单
        dr2 =  DataTables("产品").AddNew()
    End If
    For i As Integer = 0 To Cols1.Length - 1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next
Tables("产品").ResumeRedraw()

[此贴子已经被作者于2015-2-4 16:40:40编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/4 16:44:00 [只看该作者]

Dim Book As New XLS.Book("d:\订单管理表.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("产品").StopRedraw()
Dim Cols1() As String = {"委托单位","名称","图号","台车定额"}
Dim Cols2() As String = {"客户简称","部件名称","图号","台车定额"}
For dr1 As Integer = 1 To Sheet.Rows.Count -1
    Dim dr2 As DataRow = DataTables("产品").Find("客户简称 = '" & sheet(dr1,0).Text & "' And 图号 = '" & sheet(dr1,2).Text & "'")
    If dr2 Is Nothing Then '如果不存在同客户名称和图号的订单
        dr2 =  DataTables("产品").AddNew()
    End If
    For i As Integer = 0 To Cols1.Length - 1
        dr2(Cols2(i)) = sheet(dr1,i).Text
    Next
Next
Tables("产品").ResumeRedraw()

 回到顶部