Access 中的自定义函数返回类型转换错误

Posted

技术标签:

【中文标题】Access 中的自定义函数返回类型转换错误【英文标题】:Custom function in Access is returning type conversion error 【发布时间】:2014-11-18 22:55:58 【问题描述】:

我正在 Access 中创建一个自定义函数,它检查 2 个字段以查看其中是否有值并根据哪个字段具有值返回答案。

其中一半有效,但是在尝试使用自定义函数时查询后出现类型转换错误。

可能有 4 个结果,所有结果都返回不同的答案。

1) 字段 1 为空,字段 2 为空 = 函数不返回任何内容。

2) 字段 1 为空且字段 2 有值 = 函数返回文本字符串“删除”

3) 字段 1 有一个值,而字段 2 为空 = 函数返回文本字符串“New”

4) 字段 1 有值 & 字段 2 有值 = 检查值是否相同

4a) 如果值相同 = 函数返回文本字符串“匹配”

4b) 如果值不同 = 函数返回文本字符串“更新”

我尝试使用案例选择来确定哪个字段为空,哪个字段不是, 但是我求助于使用 If 语句,因为我没有得到我想要的结果。

目前起作用的一半是比较两个值并返回“匹配”和“更新”。 一半不起作用的是它需要返回“删除”或“新建”。好像无法判断字段是否为空。

我尝试使用 IsEmpty、IsNull 和 Field = ""

这是我的代码:

Public Function BarcodeCheck(DBTPART As String, SUPPBC As String)

If IsEmpty(DBTPART) And IsEmpty(SUPPBC) Then
    BarcodeCheck = ""
End If

If IsEmpty(DBTPART) And Not IsEmpty(SUPPBC) Then
    BarcodeCheck = "NEW BC"
End If

If Not IsEmpty(DBTPART) And IsEmpty(SUPPBC) Then
    BarcodeCheck = "DELETE BC"
End If

If Not IsEmpty(DBTPART) And Not IsEmpty(SUPPBC) Then
    If DBTPART = SUPPBC Then
        BarcodeCheck = "MATCH"
    Else
      BarcodeCheck = "UPDATE BC"
    End If
End If

End Function

【问题讨论】:

【参考方案1】:

问题在于函数的参数,它们被声明为String

Public Function BarcodeCheck(DBTPART As String, SUPPBC As String)

如果字段DBTPARTSUPPBC 可以包含Null,那么您必须在UDF 中将参数声明为Variant。在 Visual Basic 中,唯一可以包含Null 的数据类型是Variant。然后在您的 UDF 中使用IsNull() 函数将字段值与Null 进行比较。

所以当参数是Variant 类型时,函数应该可以工作(也许你可以使用If-Then-ElseIf?)

Public Function BarcodeCheck(DBTPART As Variant, SUPPBC As Variant)

    If IsNull(DBTPART) And IsNull(SUPPBC) Then
        BarcodeCheck = "EMPTY123"

    ElseIf IsNull(DBTPART) And Not IsNull(SUPPBC) Then
        BarcodeCheck = "NEW BC"

    ElseIf Not IsNull(DBTPART) And IsNull(SUPPBC) Then
        BarcodeCheck = "DELETE BC"

    ElseIf Not IsNull(DBTPART) And Not IsNull(SUPPBC) Then
        If DBTPART = SUPPBC Then
            BarcodeCheck = "MATCH"
        Else
          BarcodeCheck = "UPDATE BC"
        End If
    End If

End Function

【讨论】:

以上是关于Access 中的自定义函数返回类型转换错误的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp的自定义返回类型具体是如何使用的?

PHP常用的自定义函数

聊天应用,分配问题。 Xcode 中的自定义类初始化错误(EXC_BAD_ACCESS 代码=2)

PHP常用的自定义函数

Scss中的自定义函数

Apex 中的自定义迭代器