以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  复制粘贴数据很慢怎么解决  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=121041)

--  作者:kaituozhe
--  发布时间:2018/6/28 8:18:00
--  复制粘贴数据很慢怎么解决
我现在有大约40万行数据需要复制到软件中,每行为25个数据,每粘贴一行大约需要2秒钟,40万行数据约需要10天时间,实在是太慢了,有没有更好的办法加快速度,软件是局域内数据能够自动更新的。
--  作者:有点甜
--  发布时间:2018/6/28 8:41:00
--  

把你datacolchanged等事件的代码清空,再粘贴测试。

 

如果变快,就暂停事件触发 http://www.foxtable.com/webhelp/scr/2218.htm

 

[此贴子已经被作者于2018/6/28 8:40:58编辑过]

--  作者:kaituozhe
--  发布时间:2018/6/28 9:15:00
--  

 SystemReady = False
        Try
                      Dim dlg As New OpenFileDialog
            Dim Book As New XLS.Book(dlg.FileName)
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            Tables("商品采购明细").StopRedraw()
            \'注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
            Dim nms() As String = {"日期","单位编号","单位名称","单据编号","单据摘要","单据类型","单据行号","商品编号","商品名称","单位","规格","剂型","经手人编号","经手人姓名","批号","生产日期","有效日期","采购数量","成本单价","成本金额"}
            \'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
            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()
            
            
            
            
            
            
        Catch ex As Exception
            MessageBox.Show("追加数据失败")
        End Try
        SystemReady = True

 

 

上述代码直接提示“追加数据失败”是什么原因?


--  作者:有点甜
--  发布时间:2018/6/28 9:25:00
--  

加上红色代码,看报什么错

 

       Catch ex As Exception

msgbox(ex.message)
            MessageBox.Show("追加数据失败")
        End Try


--  作者:kaituozhe
--  发布时间:2018/6/28 9:28:00
--  
提示“打开存储文件失败”
--  作者:有点甜
--  发布时间:2018/6/28 9:36:00
--  

如果你的excel是xlsx格式,数据超过6万5千行,不能用xls.book打开,要用vba处理

 

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

 


--  作者:kaituozhe
--  发布时间:2018/6/30 10:43:00
--  

执行大量数据操作时,设置一个按钮手动暂停所有代码,待完成时再手动启动所有代码,可以吗?


--  作者:有点蓝
--  发布时间:2018/6/30 10:48:00
--  
SystemReady=false可以停止所有事件的触发
--  作者:kaituozhe
--  发布时间:2018/6/30 10:49:00
--  
想恢复启动的时候按按钮还可以使用吗?
--  作者:有点蓝
--  发布时间:2018/6/30 10:51:00
--  
恢复就是SystemReady=true咯