很多朋友对什么时候用链接字符串"&","+",什么时候用双引号(""),单引号(''),"NULL"与空字符串("")的区别等等都不是很清楚,这里我让大家先明确一些概念。这样对于我们后面理解就有很好的帮助
概念:
字符:由一个字母组成的,例如'a'、'b'…… 就是字符了。 字符串:字符串或串(String)是由数字、字母、下划线组成的一串字符。它是编程语言中表示文本的数据类型;或由多个字符组成的,例如:"Hello wold !",它是由双引号包括着的。(注:空格 应也代表一个字符) 标识符:窗体或报表上的表字段或控件的‘名称’,或者是这些字段的控件的‘属性’。 运算符:+-*/等可以进行运算的符号。 函数:有系统自带的函数(Eval,Dsum......),和自定义函数(自己编写,有一定功能的方法)之分。 常量:不会改变的数值,如private const str as string =“100101” 变量: 变量是指程序运行时值会发生变化的数据 表达式:就是由标识符、函数、运算符号等组成的算式。使用表达式可以执行:计算,检索字段或控件的值,为查询提供条件,定义规则,创建计算控件和计算字段,以及定义报表的分组级别。如 “A+B”
数据类型: 文本类型:表示一个字符串,要用双引号("") 括起来
如:“张飞”,“Lucy”。“”表示空字符串
数值型:表示一个的数值,可以为整数或小数
如:1,1.25,0.456,-123。
布尔型常:表示真/假
只有True和False,不需要用引号
日期/时间型常量:表示一个日期/时间,要用两个井号(#)将日期/时间括住,不能用引号。
如:#2015-01-20#。
(非)空值:表示空值或非空值的常量。
只有Is Null和Is Not Null
几个代表空含义的区别(0、""(空字串)、Null、Empty) 有了前面的知识作铺垫,我们就很好理解了。首先定义几个变量,观看它们的不同
Dim A
Dim B As String
Dim C As Integer
Dim D As Object
A 等于 Empty, 因为尚未初始化的「不定型变量」都等于 Empty。但如果检测 A = "" 或 A = 0, 也都可以得到 True 值。
B 等于 "", 因为尚未初始化的非固定长度「字串」都等于 "" 。 但请注意 B<> Null。
C 等于 0, 这个是整型、
D 等于 Nothing, 尚未设定有对象的「对象变量」都等于 Nothing, 但请不要使用 D = Nothing , 而要使用 D Is Nothing 来判断 D 是否等于 Nothing, 因为判断 是否相等的符号是 Is 不是 = 。
最令人迷惑的地方是 Null 这个保留字, 请看以下语句:
Print X = Null
Print X <> Null
结果都是输出 Null(不是 True 也不是 False), 这是因为任何一个运算式只要含有 Null , 则该运算式就等于 Null, 实际上想要判断某一数据是否为 Null 绝对不能使用:
If X = Null Then ' 永远都会得到 Null
而要使用:
If IsNull(X) Then
哪一种数据会等于 Null 呢? 除了含有 Null 运算式之外, 就属没有输入任何数据的「数据字段」(在数据库中) 会等于 Null。
所以:Null表示未知空, 一个用来指明任何数据值都不存在的一个特殊值, 而 ""表示已知空, 长度为0字符的一种字符串数据类型
连接字符“&”和“+”的区别
“&”和“+”都是连接符,都有连接的功能,如:“123”+“456” 的结果是都字符串“123456”
但是“&”连接符连接两边的数据时,如果有一边不是字符串,“&”连接符会先将非字符串转化为字符型,再作连接,如123&"abc" 结果即为“123abc”。但“+”连接符会报错
但是正好相反的是,“+”能作运算符的作用。“12”+13 “+”运算符会把字符串中的数字转化为数值型,再进行算术加法运算,即结果为25,而“&” 运算符即为“1213”
值得注意的是:使用运算符“&”时,变量与运算符“&”之间应加一个空格。这是因为符号“&”还是长整型的类型定义符,如果变量与符号“&”接在一起,系统先把它作为类型定义符处理,因而就会出现语法错误。
所以:连字符在执行字符串连接时是首选的运算符。在除加法以外的其他情况下应尽量避免使用加法运算符,除非特地需要在表达式中产生 Nulls 值。
连接字符串
上面说了这么,其实也是围绕一个问题去讨论的。就是语句连接的时候,是用井号(##),引号(''),还是双引号("")
这里说明一下:" " 双引号表示为字符串,' ' 单引号表示引用值,但得强调一点,上述的符号在不同的需求的地方,如:表达式、SQL语句、VBA编程中,用法或表示的意思略有一点点不同
CurrentDb.Execute "UPDATE tblStud SET 日期 = #" & Me.日期 & "# where Fid=" & Me.编号 & " and FName='" & Me.编号 & "'"
看这句话,你会发现,这里用了三个变量,都有不同的写法。
总结:引用控件的数据类型为字符型时加单引号,为日期时时加#号,为数值型时,直接双引号
[推荐]关于VBA表达式中的字符串和控件变量引用
http://www.office-cn.net/thread-36632-1-1.html
|