怎么快速的往MDB中写大量数据
程序本身过程是这样的:1、从EXCEL中导入到listview中
2、根据一些检测的规则,检查出一些不允许写入数据库的情况,检查的过程中利用数组记录了需要写入数据库的相关数据
3、检查完成后将数组中的数据写入数据库
程序运行是没有问题的,就是:慢
检查的过程不慢,我用进度条可以看到很快完成了检查的部分
但是到了写入的时候,很慢,出现假死
进度条也没有适时的进行更新
数据总数,32000多行,需写入时,最多11列,最少6列,下面代码中可以看到
我用写6列的情况试运行,写32000多行,直接让我失去耐性
然后试着写5000行,大概10分钟写入。
请教:
1、有没有更快的方式写入?
2、为什么循环中加入了doevents,进度条仍然不会更新呢?
3、假死状态有没有办法避免
代码如下:
For i = 1 To ww
DoEvents
yy = 70 * i / ww
MDIForm1.ProgressBar1.Value = 30 + Int(yy)
If Mlist(i) = False Then '当数据库还未有当前编码的记录时
rs.Addnew
If Mfnum(i) = "" Then '如果当前信息未录入文件代码时,看是否有负责人
If nam(i) = "" Then '如果没有负责人,那么当旧编码直接导入
rs("负责人") = ""
rs("待处理人") = ""
rs("待处理人帐号") = ""
rs("发放状态") = "待发放"
rs("物料编码") = Mnum(i)
rs("物料名称") = Mnam(i)
Else
rs("负责人") = nam(i)
rs("待处理人") = nam(i)
rs("待处理人帐号") = Minch(i)
rs("反馈状态") = "是"
rs("物料编码") = Mnum(i)
rs("物料名称") = Mnam(i)
rs("发放状态") = "待发放"
rs("任务类型") = "物料新增"
rs("任务节点") = 1
rs("反馈时间") = Now
rs("反馈人") = Usnum
MaddLo p, lv
End If
Else '如果当前信息录入有文件代码时,直接按文件所涉及的负责人等信息覆盖
If Fsta(i) = "已发放" Then
rs("负责人") = Fincharge(i)
rs("发放状态") = Fsta(i)
rs("物料编码") = Mnum(i)
rs("物料名称") = Mnam(i)
rs("文件代码") = Mfnum(i)
rs("文件名称") = Mfnam(i)
ElseIf Fsta(i) = "发放中" Then
rs("负责人") = Fincharge(i)
rs("发放状态") = Fsta(i)
rs("待处理人帐号") = "dev004"
rs("待处理人") = fin
rs("反馈状态") = "是"
rs("物料编码") = Mnum(i)
rs("物料名称") = Mnam(i)
rs("任务类型") = "物料新增"
rs("任务节点") = 3
rs("文件代码") = Mfnum(i)
rs("文件名称") = Mfnam(i)
ElseIf Fsta(i) = "更新中" Then
rs("负责人") = Fincharge(i)
rs("发放状态") = Fsta(i)
rs("待处理人帐号") = "dev004"
rs("待处理人") = fin
rs("反馈状态") = "是"
rs("物料编码") = Mnum(i)
rs("物料名称") = Mnam(i)
rs("任务类型") = "文件更新"
rs("任务节点") = 4
rs("文件代码") = Mfnum(i)
rs("文件名称") = Mfnam(i)
End If
End If
rs.Update
Else '当数据库已有当前编码的记录时
If Mfnum(i) = "" Then '如果新记录没有文件代码
rs("负责人") = nam(i)
rs("待处理人") = nam(i)
rs("待处理人帐号") = Minch(i)
rs("反馈状态") = "是"
rs("发放状态") = "待发放"
rs("任务类型") = "物料新增"
rs("任务节点") = 1
rs("反馈时间") = Now
rs("反馈人") = Usnum
MaddLo p, lv
Else
If Fsta(i) = "已发放" Then
rs("负责人") = Fincharge(i)
rs("发放状态") = Fsta(i)
rs("文件代码") = Mfnum(i)
rs("文件名称") = Mfnam(i)
ElseIf Fsta(i) = "发放中" Then
rs("负责人") = Fincharge(i)
rs("发放状态") = Fsta(i)
rs("待处理人帐号") = "dev004"
rs("待处理人") = fin
rs("反馈状态") = "是"
rs("任务类型") = "物料新增"
rs("任务节点") = 3
rs("文件代码") = Mfnum(i)
rs("文件名称") = Mfnam(i)
ElseIf Fsta(i) = "更新中" Then
rs("负责人") = Fincharge(i)
rs("发放状态") = Fsta(i)
rs("待处理人帐号") = "dev004"
rs("待处理人") = fin
rs("反馈状态") = "是"
rs("任务类型") = "文件更新"
rs("任务节点") = 4
rs("文件代码") = Mfnum(i)
rs("文件名称") = Mfnam(i)
End If
End If
rs.Update
End If
Next
lv.ListItems.Clear
MsgBox "物料信息已加入数据库", vbInformation, "提示"