Office中国论坛/Access中国论坛

标题: 请问 access 中的vba 能否 直接将数组的数据存入 某个表中 [打印本页]

作者: 先下车选4    时间: 2015-12-23 17:30
标题: 请问 access 中的vba 能否 直接将数组的数据存入 某个表中
请问 access 中的vba 能否 直接将数组的数据存入 某个表中
一行一行 addnew 似乎效率不高

作者: roych    时间: 2015-12-24 09:07
应该不可以。
1、可以考虑转为字符串,作为一行追加进去。
2、可以考虑用【insert 表 字段 values(值)】的SQL语句,用for循环追加进去。不过跟addnew可能区别不大。
不过反过来是可以的,即recordset可以很轻易地转为数组,用getrows方法即可,详细可参考以下链接:
http://www.office-cn.net/thread-121100-1-1.html
作者: 先下车选4    时间: 2015-12-24 09:13
roych 发表于 2015-12-24 09:07
应该不可以。
1、可以考虑转为字符串,作为一行追加进去。
2、可以考虑用【insert 表 字段 values(值)】 ...

谢谢

那如果 将数组 以流写入文本 再 导入 这样和 直接addnew 那个效率高呢
作者: roych    时间: 2015-12-24 09:37
先下车选4 发表于 2015-12-24 09:13
谢谢

那如果 将数组 以流写入文本 再 导入 这样和 直接addnew 那个效率高呢

以前试过,数据较多的时候,内置的TransferText比Recordset的AddNew会快一些。是否属于偶然现象不太清楚,因为没做过更多的测试。
流文件或者VB或者FSO写入文本都很快的。
作者: todaynew    时间: 2015-12-24 12:12
不要解决问题,而应消灭问题。
不产生数组,直接将产生数组的过程改变为写数据表过程即可。
作者: 先下车选4    时间: 2015-12-24 12:45
本帖最后由 先下车选4 于 2015-12-24 13:01 编辑
todaynew 发表于 2015-12-24 12:12
不要解决问题,而应消灭问题。
不产生数组,直接将产生数组的过程改变为写数据表过程即可。

xiexie 谢谢, 我明白 ,只是 vba有 直接表转数组的 功能, 为何就 没有反向的呢
作者: todaynew    时间: 2015-12-24 13:11
先下车选4 发表于 2015-12-24 12:45
xiexie 谢谢, 我明白 ,只是 vba有 直接表转数组的 功能, 为何就 没有反向的呢

因为没必要。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3