请教一个关于使用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 小计=单价*数量 "
如果是将此表的数据写入Excel,那么必须一条一条得循环写入,有什么办法可以一次性写入Excel? --------------------编程问答--------------------
这个有点不靠谱吧?我已经写好了一个系统,全部用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 --------------------编程问答--------------------
+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 , 数据库(包含打印,安装,报表)