这可能听起来有点奇怪,但它是这样的:
我的表单遍历每个客户 (+-10 000) 并打开一个记录集以获取最后一次访问。由于它的优化很差,我决定做一个查询,我需要存储它以便于访问。
我决定使用字典,因为与数组不同,我将能够使用键字符串(客户编号)进行搜索并获取我的项目(字符串:客户的最后一次访问)。
Dim dict As Dictionary
Set dict = CreateObject("Scripting.Dictionary")
dict.RemoveAll
dict.CompareMode = TextCompare ' BinaryCompare does not change anything
rsLastVisits.Open "SELECT CUST_NO, MAX(DATE) AS LAST FROM [...] GROUP BY CUST_NO", DBHandle, adOpenDynamic, adLockOptimistic
Do While Not rsLastVisits.EOF
dict.Add rsLastVisits!CUST_NO, rsLastVisits!LAST
rsLastVisits.MoveNext
Loop
rsLastVisits.Close
我收到运行时错误“此键已与此集合的元素相关联”。
这是有趣的部分开始的地方,因为我的查询不返回重复项(我仔细检查了)。
调试时,这些是添加的值:
第一次迭代:“0000000.”、“2012/05/27”
第二次迭代:“00000001”、“2011/06/14” 错误试图插入这一行。
在即时窗口中,如果我写
dict.add "00000001", "2011/06/14"
它被添加没有任何问题。
如果我清除字典(dict.removeall),它会输入一项(不管是什么cust.no),下一项总是失败。如果我在即时窗口中手动输入(无变量),它就可以工作。
你们有什么想法吗?谢谢 !