Foxtable(狐表)用户栏目专家坐堂 → 超出当前范围。 (异常来自 HRESULT:0x8002000A (DISP_E_OVERFLOW))


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

主题:超出当前范围。 (异常来自 HRESULT:0x8002000A (DISP_E_OVERFLOW))

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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
超出当前范围。 (异常来自 HRESULT:0x8002000A (DISP_E_OVERFLOW))  发帖心情 Post By:2016/8/16 15:28:00 [只看该作者]

导入数据时提示:


图片点击可在新窗口打开查看此主题相关图片如下:2016-08-16_152630.jpg
图片点击可在新窗口打开查看
是什么原因引起的?

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/16 15:31:00 [只看该作者]

 1、你导入的代码怎么写?

 

 2、数据量是不是过大?


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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/8/16 15:35:00 [只看该作者]

Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
    Dim App As New MSExcel.Application
    try
        Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(dlg.FileName)
        Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("计划表")
        wb.saved = True
        Dim Rg As MSExcel.Range = Ws.UsedRange
        Dim ary = rg.value
       
        Tables("订单").ResumeRedraw()
        Tables("订单").StopRedraw()
        Dim nms() As  String = {"甲方客户","项目","下单日期","MK号","DO号","城市","客户","送货地址","物料代码","数量","体积","重量","承运商","司机","车牌","车数","车型","出车日期","车辆属性","备注","特殊要求","司机搬运费","跟车搬运","人数","订单编号"}
        Dim count As Integer = 0
        Dim ls As new List(of Integer)
        Dim dic As new Dictionary (Of DataRow, Integer)
        systemready = False
        For i As Integer = 2 To Rg.Rows.count
            If ary(i, 25) > "" Then
                Dim Filter = "[订单编号] = '" & ary(i,25) & "'"
                Dim dr As DataRow = DataTables("订单").sqlFind(filter)
                If dr Is Nothing Then
                    ls.Add(i)
                    count += 1
                Else
                    dic.add(dr, i)
                End If
            End If
        Next
       
        For Each n As Integer In ls
           
            Dim r As  Row = Tables("订单").AddNew()
            For  m As  Integer = 0 To nms.Length - 1
                If ary(n,m+1) = Nothing Then
                    r(nms(m)) = Nothing
                Else
                    If Tables("订单").Cols(nms(m)).IsDate Then
    Dim d As Date
    If Date.TryParse(ary(n,m+1), d)
        r(nms(m)) = d
    End If
ElseIf Tables("订单").Cols(nms(m)).IsNumeric Then
    r(nms(m)) = val(ary(n,m+1))
Else
    r(nms(m)) = ary(n,m+1)
End If

 

                End If
               
            Next
           
        Next
        systemready = True
       
        Tables("订单").ResumeRedraw()
        msgbox("共有 "& count &" 条数据导入" )
        Tables("订单").Save
    catch ex As exception
        msgbox(ex.message)
    finally
        app.quit
    End try
End If

 

系统用了快一年,数据多了,现在导入好慢,要改代码吗?

 


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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/8/16 15:36:00 [只看该作者]

一次导入量在1000条到6000条左右

 

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/16 15:41:00 [只看该作者]

1、慢,是因为你用了 sqlFind ,这个方法要少用啊。

 

2、报错的话,上传实例测试一下。


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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/8/16 17:14:00 [只看该作者]

1.不用sqlfind,只查找前台数据,不同的人导入数据(存在相同数据)假如一订单号在后台数据库,未在前台显示,另外一个人导入这一订单号订单怎样最快做到筛查?

2.针对超出当前范围的问题,是否因为数据存在外部引用连接,我把计算结果替换单一公式,得到纯粹的数据,导入无问题.

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/16 17:24:00 [只看该作者]

1、把所有数据一次性加载出来也比你直接用sqlFind要快;

 

2、如果还有问题,做个实例上来看看。


 回到顶部