Foxtable(狐表)用户栏目专家坐堂 → [求助]高速合并


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

主题:[求助]高速合并

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


加好友 发短信
等级:婴狐 帖子:17 积分:197 威望:0 精华:0 注册:2018/1/15 16:34:00
[求助]高速合并  发帖心情 Post By:2018/2/28 15:45:00 [只看该作者]

高速合并时,选择更新同主键记录无效,请问是怎么

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表a.xlsx

回事?

我是想将这两个表添加合并为一个新表,并根据主键更新行列内容。

附测试表。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表b.xlsx


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


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

参考代码

 

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("abc")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(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()
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If cname > "" AndAlso t.Cols.Contains(cname) Then
                r(cname) = sheet(n, i).Text
            End If
        Next
    Next
    t.ResumeRedraw()
End If


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


加好友 发短信
等级:婴狐 帖子:17 积分:197 威望:0 精华:0 注册:2018/1/15 16:34:00
  发帖心情 Post By:2018/2/28 16:48:00 [只看该作者]

这块代码加到哪里?

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


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


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


加好友 发短信
等级:婴狐 帖子:17 积分:197 威望:0 精华:0 注册:2018/1/15 16:34:00
  发帖心情 Post By:2018/2/28 16:58:00 [只看该作者]

好的,我试试

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


加好友 发短信
等级:婴狐 帖子:17 积分:197 威望:0 精华:0 注册:2018/1/15 16:34:00
  发帖心情 Post By:2018/2/28 19:57:00 [只看该作者]

这是添加“企业名称”列的一块代码,当我设置第二个大循环准备添加第二列时,为什么提示错误,循环代码基本与这块相同

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("表B")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(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()
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim aname As String = sheet(0, i).text
            If aname > "" AndAlso t.Cols.Contains(aname) Then
                r(aname) = sheet(n, i).Text
            End If
        Next
    Next
 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()
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim bname As String = sheet(0, i).text
            If bname > "" AndAlso t.Cols.Contains(bname) Then
                r(bname) = sheet(n, i).Text
            End If
        Next
    Next

    t.ResumeRedraw()
End If


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


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

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("表B")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As DataRow = t.DataTable.Find("企业名称 = '" & sheet(n, 0).text & "' and 纳税人识别号 = '" & sheet(n, 1).text & "'")
        If r Is Nothing Then r = t.DataTable.AddNew()
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim aname As String = sheet(0, i).text
            If aname > "" AndAlso t.Cols.Contains(aname) Then
                r(aname) = sheet(n, i).Text
            End If
        Next
    Next

    t.ResumeRedraw()
End If


 回到顶部