设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: pureshadow
打印 上一主题 下一主题

Excel挑战Access第二十三期:错位引用

[复制链接]
1#
发表于 2016-5-9 22:59:41 | 显示全部楼层
本帖最后由 ganlinlao 于 2016-5-9 23:31 编辑

Excel和Access的工作机制是完全不同的。
Excel打开一个xlsx文件,是一次性把文件全部载入内存,所以,每个Excel表的每个单元格在内存中的地址是固定的。
这也是为什么Excel在公式中可以引用单元格,因为每个单元格的地址是明确和可寻的。这也是为什么Excel打开一个大文件比如50M大小的xlsx,会变得很卡,因为一次性要在内存中分配这么大的内存,变得非常困难。没有人能想象Excel打开一个1.9G的xlsx文件,会变成什么样子,估计离死机不远。
Access不管dao或是ado载入acced表中的数据,是逐条输出的。除非你特意去修改注册表,否则,它一次只输出一条记录。换句说,表中的数据在内存的地址一开始是不明确和不可寻的,所以它没有公式,也无法引用具体某行某列的数值。
StrSql="select * from 表1“
rs.open strsql,currentproject,1,3
这个时候,其实rs是没有任何记录的。
rs.moveFirst,这个时候才会从acced中输出第一条记录。而且只输出一条。

********************
说到这里,我们顺便再看一下Excel的公式(函数)。Excel的公式或函数和Access的表达式,本质是一样的,它实质是一种回调函数,那个该死的=(等于号)遮蔽了无数人的眼睛,让人忘了它是一个回调函数。=相当于icallback(addressof 公式或函数名())。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 14:16 , Processed in 0.081512 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表