当前位置:编程学习 > VB >>

请教一个关于使用VB代码编写的ADO与acess数据库(数据库记录庞大)联合使用时为何出现占用内存(占用内存高达51%)的问题

假如InfoRst(ADO RecordSet对象)里的记录数有10000条,在执行下列VB语句的时候,足够把内存耗尽(占用了内存的51%),请问有什么其他办法可以解决该问题的?
VB代码如下:
Do While Not InfoRst.EOF       '已经将acess数据库里的表赋给了InfoRst记录集                
InfoRst.Fields.Item("小计").Value = InfoRst.Fields.Item("单价").Value * InfoRst.Fields.Item("数量").Value
InfoRst.MoveNext
Loop


--------------------编程问答-------------------- ACCESS不适合搞这种这么大型的数据的,转MSSQL吧 --------------------编程问答--------------------
'不用记录集循环,一条更新语句就足够了:
conn.execute " update 表名 set 小计=单价*数量 "
--------------------编程问答--------------------
引用 2 楼  的回复:
VB code
'不用记录集循环,一条更新语句就足够了:
conn.execute " update 表名 set 小计=单价*数量 "

如果是将此表的数据写入Excel,那么必须一条一条得循环写入,有什么办法可以一次性写入Excel? --------------------编程问答--------------------
引用 1 楼  的回复:
ACCESS不适合搞这种这么大型的数据的,转MSSQL吧

这个有点不靠谱吧?我已经写好了一个系统,全部用acess来的,如果用你说的那个岂不是全部要改?还是只需要改一小部分? --------------------编程问答-------------------- excel 可以支持sql 的 update 就可以的 --------------------编程问答-------------------- 用acess可以 但是这种数据库是 比较容易崩溃的 而且 木有备份功能 。如果io读取比较多 还是 用sqlserver吧。acess 还有一个问题 是 select * from 表 where 字段1=1 他会传送 表的所有数据然后本机 解析 where 条件 而sqlserver 是 传送你查询结果的信息  --------------------编程问答-------------------- 一次性写入Excel 
objExcel_sheet.Range(x,y).Value = sAryTable'(一个二维数字符数组)

如果占内存,可分段查询再导出

--------------------编程问答-------------------- ACCESS如果不用索引,这么循环慢死人。
可以使用GETROWS或者7楼的办法、、 --------------------编程问答-------------------- 谁这样用数据库啊?直接用查询,让数据库引擎来完成你需要的数值计算:

Select Sum(单价 * 数量) As 小计 From yourtable --------------------编程问答--------------------
引用 9 楼  的回复:
谁这样用数据库啊?直接用查询,让数据库引擎来完成你需要的数值计算:

Select Sum(单价 * 数量) As 小计 From yourtable


+1.
我也才反映过来,呵呵。。 --------------------编程问答-------------------- inforst.movefirst
While Not InfoRst.EOF       '已经将acess数据库里的表赋给了InfoRst记录集                
InfoRst.Fields.Item("小计").Value = InfoRst.Fields.Item("单价").Value * InfoRst.Fields.Item("数量").Value
InfoRst.MoveNext
wend
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,