Foxtable(狐表)用户栏目专家坐堂 → [求助] 导入数据量 过大 卡死


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

主题:[求助] 导入数据量 过大 卡死

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


加好友 发短信
等级:婴狐 帖子:47 积分:523 威望:0 精华:0 注册:2015/4/19 17:37:00
[求助] 导入数据量 过大 卡死  发帖心情 Post By:2015/6/9 9:26:00 [显示全部帖子]

我的目的是设计一个功能,能 从外部 excell 导入物料信息 ,table名为 “商品基本信息” ,有四个数据列("厂家","商品编码","品名及规格","商品类别"),导入的excell 格式也调整为和 table 一致  。如下代码,导入 数据行几十行的时候比较正常,想要 一次导入约2万行的时候就会狐表 卡死,设备应该无问题( i5处理器 ,8G 内存)。    求 高手指点 如何改善代码,解决卡死问题?
   以下是代码
Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("商品基本信息").StopRedraw()
    Dim nms() As String = {"厂家","商品编码","品名及规格","商品类别"}
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim bh As String = sheet(n,0).Text
        Dim dr As DataRow = DataTables("商品基本信息").Find("品名及规格 = '" & bh & "'")
        If dr Is Nothing Then '如果不存在同编号的订单
            dr =  DataTables("商品基本信息").AddNew()
        End If
        For m As Integer = 0 图片点击可在新窗口打开查看To nms.Length - 1
            dr(nms(m)) = Sheet(n,m).Value
        Next
    Next
    Tables("商品基本信息").ResumeRedraw()
End If


谢谢大家的帮助
出于试验心态,将代码做如下修改(不find,直接导入),结果也是 数据量少的时候正常,导入2万行数据依然卡死,上传了实例,求突破!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入合并 实例.zip


Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("商品基本信息").StopRedraw()
    Dim nms() As String = {"厂家","商品编码","品名及规格","商品类别"}
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As Row = Tables("商品基本信息").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    Next
    Tables("商品基本信息").ResumeRedraw()
End If
[此贴子已经被作者于2015/6/9 19:12:58编辑过]

 回到顶部