在Access报告中计算null或空值返回#Type!错误

时间:2018-04-11 15:13:11

标签: database vba ms-access ms-access-2010

我的数据库中有列'名称'员工姓氏" Surname,Name"喜欢' Gambel,Peter'。

我想在报告中替换此名称,例如'彼得。 G&#39 ;.我已经创建了一个Vba函数,它可以像上面所示转换Name,但是如果字段值为空,那么它总是返回给我' #Type!'。我已经尝试了很多,但仍然无法解决此错误。

Public Function name_change(Name_pass As String) As String

If (IsNull(Name_pass) Or Name_pass = "") Then

name_change = "-"

Else

Dim Name_split() As String

Name_split = split(Name_pass, ",")

Name_split(0) = Left$(Name_split(0), 1)

name_change = Name_split(1) & "." & Name_split(0)

End If

End Function

3 个答案:

答案 0 :(得分:0)

如果不存在逗号,则Name_split UBound 0,而Name_split(1)将失败。

答案 1 :(得分:0)

正如古斯塔夫指出的那样,你只是在检查一个空字符串,而不是那个没有逗号的字符串。你需要这样的东西:

If Nz(Name_pass) LIKE "*,*" Then
  Dim Name_split() As String    
  Name_split = split(Name_pass, ",")    
  Name_split(0) = Left$(Name_split(0), 1)    
  name_change = Name_split(1) & "." & Name_split(0)    
Elseif Trim(Nz(Name_pass)) = "" then
  name_change = "-"
Else
  [Deal with names that have content but not comma] 
End if

答案 2 :(得分:0)

最后我找到了答案。

在将值传递给函数之前的控制源中,我们必须使用NZ函数检查值是否为Null。

= name_change(NZ([名称]," - &#34))

感谢大家的意见。