设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3558|回复: 15
打印 上一主题 下一主题

[Access本身] 重大发现,应该是ACCESS的漏洞,绝对是的(DIM 语句赋值)

[复制链接]
跳转到指定楼层
1#
发表于 2011-8-1 22:40:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
真的是重大发现。用 dim 语句定义变量时,如果同时用一个DIM定义多个变量时,会造成空值错误。什么意思呢。我刚研究了半天,发现了以下规律:

如果同时DIM多个字符变量,那么最后一个变量系统会自动赋值为空字符串 “” ,而前面的几个变量为自动赋值为 NULL. 
举例:
dim a,b,c,d,e as string  ‘那么 a,b,c,d 系统赋值为NULL 而e 则为“”
dim a,b,c,d as string         ‘那么 a,b,c系统赋值为NULL 而d 则为“”
dim a,b,c as string            ‘那么 a,b系统赋值为NULL 而c 则为“”
dim a,b as string            ‘那么 a系统赋值为NULL 而b 则为“”
dim a as string            ‘那么 a 系统赋值为“” ,因为只有一个,所以也是最后一个。

实际中会造成什么情况呢?
假如你一次定义了a,b,c,d,e 5个变量,同时将窗体的文本框1,2,3,4,5的值分别赋值于a,b,c,d,e,而且假设这五个文本框的值都为空(不为空的话则不会出现错误),代码如下
dim a,b,c,d,e as string
a=me.文本框1
b=me.文本框2
c=me.文本框3
d=me.文本框4
e=me.文本框5

运行代码,你会发现,其中a,b,c,d 四个变量都可以正常赋值,也就是系统会将NULL值赋于a,b,c,d。 但是运行到               e=me.文本框5   则会出现错误。的确是这样的。不信大家试试。

另外本人操作系统XP,access是2003.如果跟版本没关系那就的确是微软的问题了


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

16#
发表于 2011-8-4 00:46:17 | 只看该作者
其实一叶障目,时而有之。
不过,dim a,b,c,d,e as string  ‘那么 a,b,c,d 系统赋值为NULL 而e 则为“”,本身是一道VBA的经典题目。

点击这里给我发消息

15#
发表于 2011-8-3 09:47:18 | 只看该作者
咳、咳,批归批,楼主的学习精神还是可佳的,批完可表扬一下。
14#
发表于 2011-8-2 18:01:25 | 只看该作者
today416 发表于 2011-8-2 17:53
这样说来dim a,b,c,d,e as long   a,b,c,d都是Variant,只有e才是真正的long ?

Yes
13#
 楼主| 发表于 2011-8-2 17:53:25 | 只看该作者
这样说来dim a,b,c,d,e as long   a,b,c,d都是Variant,只有e才是真正的long ?
12#
 楼主| 发表于 2011-8-2 17:49:38 | 只看该作者
dim a,b,c,d,e as string 等同于如下语句: dim a Variant,b as Variant,c as Variant,d as Variant,e as string
-----------------------------------------------
悲剧啊,原来是这样.亏我这几年都是这样来DIM的,难怪老出现莫名其妙的问题
11#
发表于 2011-8-2 15:19:47 | 只看该作者
tmtony 发表于 2011-8-2 12:55
老汉,别批斗了 , 看today416的网名,约摸500年前与你是一家啊,你这一吓,today416都不敢露面了

同意,楼主应该是不断学习ACCESS操作而成为高级会员,但对ACCESS  VBA接触少,是初学者,出发点是好的。
10#
发表于 2011-8-2 13:17:56 | 只看该作者
huangqinyong 发表于 2011-8-2 12:58
赞同王站的观点,对初学者宽容些吧

挺老汉!高级会员了还“初学者”?这只能说明根本没花时间去思考或学习。

点评

这是网站的评介系统的问题,不是楼主的事情。  发表于 2011-8-3 11:30
9#
发表于 2011-8-2 12:58:59 | 只看该作者
tmtony 发表于 2011-8-2 12:55
老汉,别批斗了 , 看today416的网名,约摸500年前与你是一家啊,你这一吓,today416都不敢露面了

赞同王站的观点,对初学者宽容些吧

点击这里给我发消息

8#
发表于 2011-8-2 12:55:10 | 只看该作者
todaynew 发表于 2011-8-2 11:11
坚决参与today416同志的批斗会!

dim a,b,c,d,e as string 等同于如下语句: dim a Variant,b as V ...

老汉,别批斗了 , 看today416的网名,约摸500年前与你是一家啊,你这一吓,today416都不敢露面了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-22 04:10 , Processed in 0.104363 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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