我使用Collection来存储VBA中记录集的数据。记录集有两个字段。
我正在使用集合,因为我想通过使用key参数来利用其防止重复的能力。我正在运行SQL查询以多次生成记录集,并且很多结果将与之前的结果相同,但有些会有所不同。我想从每个记录集中捕获一组独特的结果。
我目前可以使用以下方法执行此操作:
rs.Open sql_vehicles, cn
If rs.RecordCount > 0 Then
Do While Not rs.EOF
On Error Resume Next
value = rs.Fields("EVN").value
catalogue_Tags.Add Item:=value, Key:=value
rs.MoveNext
On Error GoTo 0
Loop
End If
所有都驻留在for循环中,每次生成一个新的记录集,可能会有所不同。
这将为我提供一个具有来自" EVN"的独特价值的集合。记录集中的字段,但我需要能够将第二个字段存储在记录集中,但我仍然希望避免重复EVN字段!
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
在我看来,你可以使用2个系列来获得2个独特的列表...
value = rs.Fields("EVN").value
catalogue_Tags_EVN.Add Item:=value, Key:=value
value = rs.Fields("ABC").value
catalogue_Tags_ABC.Add Item:=value, Key:=value
我只是注意到你的要求与我第一次阅读时略有不同...... 添加" Microsoft Scripting Runtime"参考你的项目并使用字典词典。
Dim evnValues as new Scripting.Dictionary ' this will actually be a dictionary of dictionaries.
循环内部执行此操作...
ABCvalue = rs.Fields("ABC").value
if not evnValues.Exists(value) then
' sub dictionary does not exist yet. initialize the list for this evn value
evnValues(value)=New Scripting.Dictionary
end if
evnValues(value).item(ABCValue)=ABCValue ' accumulate a list of the ABCValues relative to the unique evnValue.
最后,您将获得一个字典,其中顶级名称是您唯一的EVN值,子值将是一个或多个ABC值的集合。