注册 登录
Office中国论坛/Access中国论坛 返回首页

t小宝的个人空间 http://www.office-cn.net/?71896 [收藏] [复制] [分享] [RSS]

日志

能辨别ACCESS版本的神奇窗体 - 之解释

已有 2663 次阅读2013-6-1 12:12 |个人分类:Access| 窗体, 图片, 2007, 图片属性存储格式

之前发过一个帖子:能辨别ACCESS版本的神奇窗体 [http://www.office-cn.com/thread-116936-1-1.html]。
其实一个没有任何代码和控件的窗体是不能辨别ACCESS版本的,该窗体只是在Access2003和Access2007中显示了不同的图片。
通过以下步骤可以实现这个效果:
1、用Access2003新建一个mdb文件。
2、用Access2007或2010打开mdb文件,设置 Access选项 - 当前数据库 - 图片属性存储格式:保留源图像格式。
   创建一个窗体,在设计视图中为窗体添加一幅图片,保存后关闭数据库。
3、用Access2003打开,以设计视图打开该窗体,可能有一个弹出框提示不能显示图片,点确定,然后为窗体插入另一幅图片,保存并关闭。

这样在Access2003和Access2007分别打开该窗体就会显示不同的图片。

至于为什么会这样?可能细心的人已经从上面的步骤中看出了奥妙,原因如下:
1、Access2003窗体中插入的图片是转换为位图格式的。
2、Access2007增加了一种图片存储格式:保留源图像格式,也就是jpg、gif、png等各种图片会保留原来的格式,这样体积就比较小。
3、Access2003只能识别位图格式,不能识别保留源图像这种格式。
所以,在Access2007中以保留源图像格式向窗体插入的图片,在Access2003中不显示,这时在Access2003中向窗体再插入一个图片,这个图片在Access2003中自然是可以显示的,因为它转换为位图,而在Access2007中因为设置了默认图片存储格式为保留源图像格式的原因,显示的是以保留源图像格式插入的那个图片。

大家应该发现有一个关键的地方:一个窗体先在Access2007中插入了一个图片,后在Access2003中插入了另一个图片。为什么一个窗体可以插入两幅图片?为什么在Access2003中插入的图片不覆盖掉在Access2007中插入的图片?
通过用SaveAsText这个Access提供的隐藏的方法研究发现,在Access2007中以保留源图像格式向窗体插入的图片,并不保存在窗体上面,似乎是保存在某个系统表里面,而在Access2003中插入的图片是保存在窗体中的。这就是一个窗体能插入两个图片的根本原因,因为它们的保存位置不同。


至此,这个神奇窗体的秘密是彻底解开了,我们也发现了Access2007中图片独特的存储方式。
在Access2007中同样是二进制类型的附件字段也有类似的秘密,有空会另写一篇来探讨它。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

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

GMT+8, 2024-4-19 12:18 , Processed in 0.079562 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部