计算 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_split
的 UBound 是 0
并且 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([姓名],"-"))
感谢大家的意见。
我的数据库中有员工的 '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_split
的 UBound 是 0
并且 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([姓名],"-"))
感谢大家的意见。