我正在尝试使用VBScript过滤二维数组,但VBScript的内置“过滤器”功能仅适用于单维数组。我正在使用“rs.GetRows()”数组,那么有一个简单的函数可以使用二维数组吗?
编辑:这不是关于过滤数据库记录,而是关于过滤多维数组。我知道我可以在数据库级别过滤这些记录,但这不是我想要的。所以我正在寻找的是多维数组的过滤函数。
答案 0 :(得分:2)
Option explicit
' actual function
Public function filter2dArray(a, text)
Dim i
For i = ubound(a) to lbound(a) step -1
If instr(join(a(i), vbTab), text) = 0 Then
' no match. switch it with ubound and delete ubound
a(i) = a(ubound(a))
ReDim preserve a(ubound(a)-1)
End If
Next
filter2dArray = a
End Function
' test code
Dim b, i
b = array( array("row1", "monday", "work"), _
array("row2", "tuesday", "work"), _
array("row3", "wednesday", "free"))
b = filter2dArray(b, "work")
For i = lbound(b) to ubound(b)
msgbox i & ": " & join(b(i), vbTab)
Next
根据您的要求:2D阵列的过滤功能 限制:它仅适用于文本2d数组,并且没有Include和Compare开关,但这并不难实现。
答案 1 :(得分:0)
如果要求是您不更改临时数据结构,那么循环遍历数组并丢弃不符合您的过滤条件的元素,或者将元素添加到新数组似乎是一个不错的选择。我想如果你选择这种方法,你所处理的记录数量将会产生重大影响。
另一种方法是将您的子集加载到临时表中,然后对其进行过滤。某些代码/数据指示可能有助于提供最佳方法。
希望这有帮助。