|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 pmet12345 于 2016-1-11 09:33 编辑
-
- rst.Open "信息", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
-
- For i = 0 To cid '~=25000
-
- With Datas(i)
- If Not IsEmpty(Datas(i).p_info) Then
- m = UBound(Datas(i).p_info)
- For j = 1 To m
- n = UBound(Datas(i).p_info(j, 5))
- If n = 0 Then
- rst.AddNew Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16), _
- Array(.p_info(j, 0), .p_info(j, 1), .p_info(j, 2), .p_info(j, 3), .p_info(j, 4), Empty, Empty, Empty, Empty, _
- .p_info(j, 9), Empty, .p_info(j, 11), .p_info(j, 12), Empty _
- )
- Else
- For k = 1 To n
- rst.AddNew Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16), _
- Array(.p_info(j, 0), .p_info(j, 1), .p_info(j, 2), .p_info(j, 3), .p_info(j, 4), IIf(Datas(i).p_info(j, 5)(k, 0) = "", Empty, idlx(Val(Datas(i).p_info(j, 5)(k, 0)))), IIf(Datas(i).p_info(j, 5)(k, 1) = "", Empty, iddj(Val(Datas(i).p_info(j, 5)(k, 1)))), .p_info(j, 5)(k, 2), .p_info(j, 5)(k, 3), _
- .p_info(j, 9), .p_info(j, 5)(k, 4), .p_info(j, 11), .p_info(j, 12), .p_info(j, 5)(k, 5) _
- )
- Next k
- End If
- Next j
- End If
-
- End With
- Next
- rst.Close
- Set rst = Nothing
- Datas(0-25000+) 结构如下
- |属性1
- |属性2
- ...
- |属性13
- 其中 |属性info 为动态数组 维数不定
- |属性info的子属性1
- |属性info的子属性2
- |属性info的子属性3
- |属性info的子属性4
- |属性info的子属性5 为动态数组 维数不定
- |属性info的子属性5孙属性1
- |属性info的子属性5孙属性2
- |属性info的子属性5孙属性3
- |属性info的子属性5孙属性4
- |属性info的子属性5孙属性5
-
- ...
- |属性info的子属性8
- 。。。
- idlx 和iddj 是2个已有固定数组
复制代码
需要接近10分钟 太慢了.. 是取datas数组太慢了?!
为什么不在生成数组的时候直接存入表,我只能说我有 暗疾.....说不出的痛
一般情况下 写完后 表[信息] 将有12万条记录为什么这么慢的呢 试过 将 21行的屏蔽后能大概提高1班时间,如果芝士将 21行的iif语句该为直接数组的值(即不取对应固定数组中的值), 有10-20%的提升
第21行 其实增加的数据量很少的
|
|