设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 703|回复: 6
打印 上一主题 下一主题

[其它] 请帮忙解释下面的问题

[复制链接]
跳转到指定楼层
1#
发表于 2003-6-6 22:51:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Function zz(z As String) As String
  Select Case z
    Case "a1","a2","a3"
      zz = "A"
    Case "b1","b2","b3"
      zz = "B"
    Case Else
      zz = "zzzz"
  End Select
End Function

上述代码,如果z是空值的话,zz(z)不会输出"zzzz",而是输出"# 错误"。必须采用zz(nz(z))才能正常。
但如果把上述代码中"z as string"中的定义去掉,就可以直接使用zz(z)了。
为何?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2003-6-7 00:22:00 | 只看该作者
看起来不定义(函数不定义也可以用,函数引用的变量不定义也可以用)使用起来更方便,不知不定义的缺点是什么?是不是在运算效率方面?
3#
发表于 2003-6-7 03:48:00 | 只看该作者
Function zz(Optinal z As String) As String
  Select Case z
    Case "a1","a2","a3"
      zz = "A"
    Case "b1","b2","b3"
      zz = "B"
    Case Else
      zz = "zzzz"
  End Select
End Function

4#
 楼主| 发表于 2003-6-7 17:46:00 | 只看该作者
用了斑主的案例,不行。

还是按zz(nz(z))的形式使用。
5#
发表于 2003-6-8 03:54:00 | 只看该作者
你属于典型的会写函数不会用。
zz(nz(z)) 你这是什么跟什么呀

以上定义的函数ZZ是你的函数名Z是变量。而你使用zz(nz(z))其中Z为变量去了

可这样使用zz("asdfafa") 或者ZZ()考虑到你需要Z为空值所以我加了个OPTIONAL所以可以直接使用zz()
6#
发表于 2003-6-8 21:45:00 | 只看该作者
在Vb(VBA)里,你不定义数据的类型,则都作为Variant(变体类型)处理,不但运算效率方面,特别循环,消耗资源,而且容易出错,系统会自作聪明帮你转换。但也有其灵活方便的地方,你这就是一个例子。变体类型可以使用,但不要滥用。
你这问题,可以象gnoy斑竹这样用可选参数来处理,当你不使用(传递)参数时,函数用""字符串代替,(不是Null).
当然,不使用可选参数,字符串或数值类型数据为NULL值时的计算或处理常常会引起错误,你也可以在函数里面先用ISNULL()判断来处理当字符串的值为NULL时情况,或者直接用On Error Resume Next来忽略错误。

7#
发表于 2003-6-8 22:15:00 | 只看该作者
以下是引用Trynew在2003-6-8 13:44:46的发言:

"用可选参数来处理,当你不使用(传递)参数时,函数用""字符串代替,(不是Null).
当然,不使用可选参数,字符串或数值类型数据为NULL值时的计算或处理常常会引起错误,你也可以在函数里面先用ISNULL()判断来处理当字符串的值为NULL时情况,或者直接用On Error Resume Next来忽略错误。"


这种它到底传递“”还是NULL情况我倒是没研究过。看来我也是会写不会用啊:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-26 19:32 , Processed in 0.239268 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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