Foxtable(狐表)用户栏目专家坐堂 → [求助]符合条件导入问题


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

主题:[求助]符合条件导入问题

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
[求助]符合条件导入问题  发帖心情 Post By:2019/6/8 21:34:00 [只看该作者]

如上传的测试:

想达到以下目的:如果导入的EXCEL样表中,主机厂、商品车、清单号、底盘号四列中的任意三列与表A中相应列的内容符,并且表A中的“是否二次”列不为TRUE,则导入用表中的实际对账金额导入至表A相对应的实际对账金额列中,并在表A中的自动生成对账单号DZH+当日的年月日00X

如以上四列中的任意三列与表A对应列不符,则将不符的行导入到表B中。并弹出对话框,统计出有多少条信息对账成功,多少条对账不成功(导入到表B的即为对账不成功的信息)。

简单的说,就是符合条件的行,实际对账金额导入到表A对应价格列里,其他不符合的行导入到表B中

代码如何实现?老师指导。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入测试.table

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

[此贴子已经被作者于2019/6/9 10:25:09编辑过]

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


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

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("表A")
    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 cr As Row = Nothing
        For Each r As Row In t.Rows
        Dim count As Integer = 0
            If r("主机厂") = sheet(n, 0).text Then count += 1
            If r("商品车") = sheet(n, 2).text Then count += 1
            If r("清单号") = sheet(n, 3).text Then count += 1
            If r("底盘号") = sheet(n, 4).text Then count += 1
            If count >= 3 Then
                cr = r
                Exit For
            End If
        Next
        If cr Is Nothing Then cr = Tables("表B").AddNew()
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If cr.Table.Cols.Contains(cname) Then
                cr(cname) = sheet(n, i).Text
            ElseIf cname = "对账金额" Then
                cr("实际对账金额") = sheet(n, i).Text
            End If
        Next
    Next
   
End If

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2019/6/9 11:02:00 [只看该作者]

老师,我加了个窗口,测试了一下,没成功呢,还得您帮忙看一下
现在是符不符合条件的都导入到表BK中了,符合条件的也没导入到表A 
另外没提示分别导入的条数
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入测试.table

[此贴子已经被作者于2019/6/9 11:16:34编辑过]

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


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

 

你上次的excel,我用代码测试没问题。

 


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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2019/6/9 13:26:00 [只看该作者]

老师,我重测了一下,符合条件的也导入表B了,实际应该是导入表A的

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


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

1、excel文件发上来测试;

 

2、截图说明哪条数据符合。


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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2019/6/10 11:00:00 [只看该作者]

EXCEL123456这个表的信息都是符合条件的,应该导入到表A,但实际导入时却都导入到表B中

还有就是没有提示各表导入的条数

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入测试.table

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


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


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

Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("表A")
    Dim n1 As Integer = 0
    Dim n2 As Integer = 0
    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 cr As Row = Nothing
        For Each r As Row In t.Rows
            Dim count As Integer = 0
            If r("主机厂") = sheet(n, 0).text Then count += 1
            If r("商品车") = sheet(n, 1).text Then count += 1
            If r("清单号") = sheet(n, 2).text Then count += 1
            If r("底盘号") = sheet(n, 3).text Then count += 1
            If count >= 3 Then
                cr = r
                Exit For
            End If
        Next
        If cr Is Nothing Then
            cr = Tables("表B").AddNew()
            n1 += 1
        Else
            n2 += 1
        End If
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
            If cr.Table.Cols.Contains(cname) Then
                cr(cname) = sheet(n, i).Text
            ElseIf cname = "对账金额" Then
                cr("实际对账金额") = sheet(n, i).Text
            End If
        Next
    Next
    msgbox(n1 & " " & n2)
End If

 回到顶部