设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3275|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-8-2 00:41:39 | 只看该作者
楼主连最基本的语法都没弄明白,String型的变量赋值为Null的时候本来就应该出错,因为所赋的值超出了变量的允许范围,不出错才奇怪了
3#
发表于 2011-8-2 08:57:48 | 只看该作者
dim a,b,c,d,e as string  
就这个语句来说,你以为最后把e声明为string后,前面的a,b,c,d全部都自动为string类型了吗?
呵...关键点就在这里.纯属楼主意念之差.

点评

说得对。也警醒后人。但很多书上就是这么写的。  发表于 2011-8-3 11:32

点击这里给我发消息

4#
发表于 2011-8-2 09:54:25 | 只看该作者
dim as string,b as string ,c as string ,d as string,e as string  
5#
发表于 2011-8-2 11:05:46 | 只看该作者
对于类型不确定的变量,可以先不定义类型。例如可以这样:
Dim a,b,c,d,e
6#
发表于 2011-8-2 11:11:27 | 只看该作者
本帖最后由 todaynew 于 2011-8-2 11:15 编辑
today416 发表于 2011-8-1 22:40
真的是重大发现。用 dim 语句定义变量时,如果同时用一个DIM定义多个变量时,会造成空值错误。什么意思呢。 ...

坚决参与today416同志的批斗会!

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

Variant 数据类型是所有没被显式声明(用如 Dim、Private、Public 或 Static等语句)为其他类型变量的数据类型。Variant 数据类型并没有类型声明字符。

Variant 是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,可以包含任何种类的数据。Variant 也可以包含 Empty、Error、Nothing 及 Null等特殊值。可以用 VarType 函数或 TypeName 函数来决定如何处理 Variant 中的数据。


7#
发表于 2011-8-2 12:17:33 | 只看该作者


喜欢这种帖子,动脑筋啊

点击这里给我发消息

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都不敢露面了
9#
发表于 2011-8-2 12:58:59 | 只看该作者
tmtony 发表于 2011-8-2 12:55
老汉,别批斗了 , 看today416的网名,约摸500年前与你是一家啊,你这一吓,today416都不敢露面了

赞同王站的观点,对初学者宽容些吧
10#
发表于 2011-8-2 13:17:56 | 只看该作者
huangqinyong 发表于 2011-8-2 12:58
赞同王站的观点,对初学者宽容些吧

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

点评

这是网站的评介系统的问题,不是楼主的事情。  发表于 2011-8-3 11:30
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-9 14:37 , Processed in 0.109991 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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