【问题标题】:How to filter out null elements of an array in MS Access如何在 MS Access 中过滤掉数组的空元素
【发布时间】:2010-09-24 00:13:38
【问题描述】:

我正在从其他几个领域生成标题,并希望以“正确”的方式去做:

Me.Title.Value = Join(Array([Conference], [Speaker], partstr), " - ")

除了 [conference]、[speaker] 或 partstr 中的任何一个可能为 null,我不想要额外的“-”。是否有任何功能可以让这项工作变得简单?

【问题讨论】:

    标签: arrays ms-access null


    【解决方案1】:

    不——你必须检查每一个,然后在最后清理

    Dim Temp As String
    
    If Not IsNull([Conference]) Then
      Temp = Temp & [Conference] & " - "
    End If
    
    If Not IsNull([Speaker]) Then
      Temp = Temp & [Speaker] & " - "
    End If
    
    If Not IsNull(partstr) Then
      Temp = Temp & partstr & " - "
    End If
    
    If Temp > "" then
      Me.Title.Value = Left(Temp, Len(Temp) - 3)
    Else
      Me.Title.Value = Null
    End If
    

    用通用函数修改:

    Public Function JoinEx(ByVal pArray As Variant, ByVal pDelimiter As String) As String
    
      Dim sTemp As String
      Dim iCtr As Integer
    
      For iCtr = 0 To UBound(pArray)
        If Not IsNull(pArray(iCtr)) Then
          sTemp = sTemp & pArray(iCtr) & pDelimiter
        End If
      Next
    
      If sTemp > "" Then
       JoinEx = Left(sTemp, Len(sTemp) - Len(pDelimiter))
      End If
    
    End Function
    

    调用示例:

     JoinEx(Array("one","two","three"), " - ")  'Returns "One - Two - Three"
     JoinEx(Array(null,"two","three"), " - ")  'Returns "Two - Three"
    

    【讨论】:

    • 我还是希望有更好的答案,我会这样做很多次,不想重复那么多代码。
    • 我感受到了您的痛苦 - 但是,您可以通过更多的工作创建一个接受数组和分隔符并返回字符串的通用函数。
    • 啊,这更像。如果可以的话,我会再给你一个赞成票。
    • 专家表示,将可能为 Null 的字段与零长度字符串连接并测试其长度比仅检查 Null 或将连接结果与 ZLS 进行比较要快。而且,顺便说一句,任何时候您需要在 Access VBA 中使用 ZLS,请务必使用 vbNullString 常量而不是“”。
    【解决方案2】:

    完全重写,这次经过适当测试:

     IIf(IsNull(Partstr), IIf(IsNull(Conference), Speaker, Conference & " - " + Speaker), Conference + " - " & Speaker + " - " & Partstr)
    

    【讨论】:

    • 如果其中一项为空,那么这会将整个结果变为空,我认为 OP 不希望这样做。
    • 抱歉,它仍然无法工作 - 如果 [conference] 为 null 而其他不是 - 您的解决方案将返回“None”而不是“Speaker - Partstr”
    • 你是对的,所以我重做了整个事情,更加注意:(
    猜你喜欢
    • 2018-03-14
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多