我创建了一个动态查询,它将返回带有动态列名的5列。它将始终以列名返回过去5年。
例如,今年它将重新使用这些列名称:
2014 2013 2012 2011 2010
但明年会是:
2015 2014 2013 2012 2011
目前我使用此代码来获取我的值:
get_2014 = rs("2014")
get_2013 = rs("2013")
get_2012 = rs("2012")
get_2011 = rs("2011")
get_2010 = rs("2010")
这将适用于今年,但不适用于明年。所以我认为我可以使用数组和类似的东西:
ShowLastXyears = 5
thisYear = Year(now)
dim get_years()
redim get_years(ShowLastXyears)
sql = ...
rs.open sql ...
do until rs.eof
For k = 0 to ShowLastXyears-1
get_years(k) = rs(thisYear-(k))
Next
rs.movenext
loop
rs.close
但后来我收到了这个错误:
Item cannot be found in the collection corresponding to the requested name or ordinal.
at line" get_years(k)= rs(thisYear-(k))"
也试过
...
get_years(k) = rs(""""thisYear-(k)"""")
...
结果:
Expected ')'
get_years(k) = rs(""""thisYear-(k)"""")
----------------------^
做我想做的事的正确方法是什么?
更新
发现我可以使用此代码:
get_years(0) = rs(0)
get_years(1) = rs(1)
get_years(2) = rs(2)
get_years(3) = rs(3)
get_years(4) = rs(4)
这是唯一的解决方案,还是动态rs(...)名称也可以?
答案 0 :(得分:1)
您的问题的答案是将get_years(k) = rs(""""thisYear-(k)"""")
替换为:
get_years(k) = rs(CStr(thisYear-k))
如果您获得旧的Item cannot be found...
,那么原因很可能是该字段不存在。尝试首先在页面上输出脚本生成的字段名称,然后将它们与动态查询进行比较。