Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用dynamic rs()从查询中获取列_Sql_Dynamic_Asp Classic - Fatal编程技术网

Sql 使用dynamic rs()从查询中获取列

Sql 使用dynamic rs()从查询中获取列,sql,dynamic,asp-classic,Sql,Dynamic,Asp Classic,我创建了一个动态查询,该查询将返回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

我创建了一个动态查询,该查询将返回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.
在第行“获得年数(k)=rs(今年-(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(…)名称?

您的问题的答案是将
get_years(k)=rs(““thiswear-(k)””)
替换为:

get_years(k)=rs(CStr(thiswear-k))

如果找不到旧的
项…
,则原因很可能是该字段不存在。尝试先在页面上输出脚本生成的字段名称,然后将它们与动态查询进行比较。

而不是更新您的问题,请考虑以这样的方式发布一个答案,您可以接受它获得声誉,并将问题搁置。否则,它会像臭味一样在无人应答的情况下四处飘荡。如果你担心回答自己的问题并接受它,不要因此而受到鼓励。瞧。@Lankymart我不想把它作为答案,因为我认为会有更好的解决办法。Tnx的提示!这很好,但仍然不能阻止你把你的解决方案作为答案。这会起作用,但也会起作用,
get_years(k)=rs(“”“”&今年-(k)和“”)
只是缺少字符串串联(
&
),这就是错误所指向的。事实上,我认为这不会,因为该过程将在开头和结尾添加引号
“2014”
而不是
2014
。进程不太可能用引号定义字段名。是的,您的右边的意思是
get_years(k)=rs(thisYear-(k)和“”)
CStr()
更干净+1@Lankymart-我必须承认我确实附加了空的语音标记作为作弊。。。是的!我是个坏人;o)