计算 Access 报告中的 null 或空值 returns #Type!错误

calculating null or empty value in Access report returns #Type! error

我的数据库中有员工的 'Name' 列 "Surname, Name",例如“Gambel,Peter”。

我想在报告中替换这个名字,例如“彼得。 G'。我创建了一个 Vba 函数来转换名称,如上所示,但如果字段值为空,它总是 return 我 '#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

如果不存在逗号,Name_splitUBound0 并且 Name_split(1) 将失败。

正如 Gustav 指出的那样,您只是检查空字符串,而不检查没有逗号的字符串。你需要这样的东西:

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

终于找到答案了。

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

=name_change(Nz([姓名],"-"))

感谢大家的意见。