以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何做到数据合并的时候会更新相同电话号码的同行信息  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102405)

--  作者:zoudezhao
--  发布时间:2017/6/19 12:47:00
--  如何做到数据合并的时候会更新相同电话号码的同行信息
如何做到数据合并的时候会更新相同电话号码的同行信息
--  作者:有点色
--  发布时间:2017/6/19 14:43:00
--  

 用这种方法合并数据

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=101056&skin=0

 


--  作者:zoudezhao
--  发布时间:2017/6/19 19:04:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170619190252.png
图片点击可在新窗口打开查看
他提示我这个问题
--  作者:有点蓝
--  发布时间:2017/6/19 20:35:00
--  
贴出你的代码
--  作者:zoudezhao
--  发布时间:2017/6/19 21:45:00
--  
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("表A")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Dim newcount As Integer = 0
    Dim oldcount As Integer = 0
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As DataRow = t.DataTable.Find("电话 = \'" & sheet(n, 0).text & "\'")
        If r Is Nothing Then
            r = t.DataTable.AddNew()
            newcount += 1
        Else
            oldcount += 1
        End If
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If t.Cols.Contains(cname) Then
                r(cname) = sheet(n, i).Text
            End If
        Next
    Next
    msgbox("新增" & newcount & "    " & "更新旧数据" & oldcount)
    t.ResumeRedraw()
End If

--  作者:有点蓝
--  发布时间:2017/6/19 22:09:00
--  
......

        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If t.Cols.Contains(cname) Then
                If t.Cols(cname).IsNumeric Then
                    r(cname) = val(sheet(n, i).Text)
                Else
                    r(cname) = sheet(n, i).Text
                End If
            End If
        Next
......

--  作者:有点蓝
--  发布时间:2017/6/19 22:10:00
--  
......

        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If t.Cols.Contains(cname) Then
                r(cname) = sheet(n, i).value
            End If
        Next

......

--  作者:zoudezhao
--  发布时间:2017/6/20 14:28:00
--  

超版我试了下,但是他不会更新同手机号的而是会单独在新增一行


--  作者:有点色
--  发布时间:2017/6/20 14:32:00
--  

 你手机号是excel第几列的数据?

 

Dim r As DataRow = t.DataTable.Find("电话 = \'" & sheet(n, 0).text & "\'") \'Excel里面A列为手机号


--  作者:zoudezhao
--  发布时间:2017/6/20 14:33:00
--  

好的感谢色超版