【问题标题】:How to filter blank arrays using Access VBA?如何使用 Access VBA 过滤空白数组?
【发布时间】:2020-04-17 09:44:12
【问题描述】:

我在 Ms Access 中有一个数组 Tax class B。

税类 B 有一些空值。这些数组是从下面的代码生成的:

Tax.Add DLookup("TaxClassB", "QryJson", "InvoiceID =" & Me.InvoiceID & " AND ItemesID =" & CStr(i))
Like say: if i = 5 then
 "B"
  ""
 "B"
 ""
 "B"

我怎样才能摆脱那些空元素,使 Tax class B 变成只有三个元素长,然后将它们显示在三个单元格的范围内?

我试过下面的代码

Dim myvar As Variant

myvar = DLookup("TaxClassB", "QryJson", "InvoiceID =" & Me.InvoiceID & " AND ItemesID =" & CStr(i))
If Not IsNull(myvar) Then
    If Len(myvar) > 0 Then
        Tax.Add myvar
    End If
End If

【问题讨论】:

  • 该代码没有解决您的问题,因为它是解决不同问题的方法。 stackoverflow.com/questions/59455560/…您从单个 DLookup 中从哪里获取此数组? TaxClassB 是多值字段吗?在单元格中显示结果是什么意思?
  • 对不起,它不是一个单元格而是一个字段,这个字段是可选的,它可能是必需的,也可能不是,这就是为什么如果它为空它不应该显示在由提供的 on Json 字符串上向上查找,请注意提供此 Json 字符串的其余代码是可以的,这部分是可选的,要排序的部分
  • 我想说 DLookup 也缺少测试相关列的值。它正在测试 InvoiceID、ItemesID,但返回的字段是什么?仅在该字段不是“空”并且不需要进行后处理时才返回该字段...
  • 返回的字段是“TaxClassB”
  • 添加检查 Is Null 以查询标准为@cindy 建议"InvoiceID =" & Me.InvoiceID & " AND ItemesID =" & CStr(i) & " And TaxClassB Not Is Null" 如果您在该查询上使用记录集,您可以在一个查询中获取所有元素,如果您需要一个数组(有什么用?) m 你可以使用.GetRows将记录集转换为数组。

标签: arrays vba ms-access


【解决方案1】:

也许您可以过滤掉 null 或空字符串值作为 DLookup 标准的一部分?

换行:

"InvoiceID=" & Me.InvoiceID & " AND ItemesID=" & CStr(i)

类似于以下内容:

"InvoiceID=" & Me.InvoiceID & " AND ItemesID=" & CStr(i) & Nz(TaxClassB, "") <> ""

应该做的伎俩,返回一个完全填充的数组。

【讨论】:

    猜你喜欢
    • 2013-08-05
    • 2016-12-29
    • 2017-02-16
    • 2014-05-15
    • 1970-01-01
    • 2020-06-28
    • 2010-09-24
    • 2019-08-23
    • 1970-01-01
    相关资源
    最近更新 更多