设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[其它] 请教一个函数问题

[复制链接]
跳转到指定楼层
1#
发表于 2003-7-24 06:34:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了一个根据有无文件代字以及时间格式确定文号内容的函数,但是我在报表中利用此函数执行时,如果第一个判断为真时,也就是没有文件代字时,总是显示错误,而没有像预想的那样"wh"为空字符串,请问错在那里?
Public Function WH(Wjdz As String, Wjdate As String, Wjxh As Integer)
'wjdz:文件代字,wjdate:时间,whxh:文件顺序号
If IsNull(Wjdz) = True Or Wjdz = "" Then '如果文件没有代字,那么文号为空
    WH = ""
Else:
    If IsDate(Wjdate) = True Then '如果文件时间符合日期格式
        WH = Wjdz & "[" & Year(Wjdate) & "]" & Wjxh & "号"
        '比如,wjdz="中发";wjdate="2003-07-01";wjxh="8",文号为"中发[2003]8号"
        Else:
        WH = Wjdz & "[" & Left(Wjdate, 4) & "]" & Wjxh & "号"
        '比如,wjdz="中发";wjdate="20030701";wjxh="8",文号为"中发[2003]8号"
    End If
End If
End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-7-24 15:56:00 | 只看该作者
IsNull(Wjdz) = True 可能有问题。(但我测试过)
可以直接使用IsNull(Wjdz) 的。
3#
发表于 2003-7-24 16:23:00 | 只看该作者
你这是把Null值赋给一个String时出错。有两个办法:
1、用Variant代替String参数类型,可以接受Null值。
Public Function WH(Wjdz As String, Wjdate As String, Wjxh As Integer)
改为:Public Function WH(Wjdz As Variant, Wjdate As String, Wjxh As Integer)

2、在赋值给函数的参数时判断处理Null值,如用Nz函数:
    MyWh=WH(Nz([wjdz]),[Date],[WJXH])
4#
 楼主| 发表于 2003-7-25 06:51:00 | 只看该作者
非常感谢楼上的指点,何时我发现还是出现错误的内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5#
发表于 2003-7-25 17:26:00 | 只看该作者
因为你的文件序号字段为空引起。注意其它两个参数也要用NZ()转换或其他方法处理一下(你是戴了帽子,忘了穿裤:)。
Null值不处理好,经常会出些意想不到和莫名其妙的Bug,为了防止Null值引起错误,除了用ISNull()判断,NZ()转换,使用Variant变体类型外,还有就是把字段定义为不允许空值,以及加上错误捕捉语句。

6#
 楼主| 发表于 2003-7-26 20:29:00 | 只看该作者
原来如此,我懂了,非常感谢!
我将Public Function WH(Wjdz As String, Wjdate As String, Wjxh As Integer)
改为:Public Function WH(Wjdz As Variant, Wjdate As Variant, Wjxh As Variant)成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-4 05:19 , Processed in 0.103431 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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