gpt4 book ai didi

sql - 无效的 For 循环控制变量,嵌套的 ResultSet SQL

转载 作者:行者123 更新时间:2023-12-02 04:47:51 25 4
gpt4 key购买 nike

我试图将来自初始 SQL 查询的结果集中的记录用作循环控制,并将值填充到后续 SQL 语句中。后面的 SQL 语句 resultSet 将用于填充各种 HTML 表格。

在尝试实现这一点时我遇到了这个问题

Microsoft VBScript compilation error '800a0410'

Invalid 'for' loop control variable

/ps/testcli.asp, line 83

For Each objFieldValue in RS.Fields

-----------------------^

我最初的想法是它无法区分 clientRS 和 RS,但事实并非如此。下面几行从 39 - 97 开始

SQLDel = "DELETE * FROM ClientModuleList"
SQLDel2 = "DELETE FROM PSS.dbo.TestCli"

'------
SQLGetClientsV1MVSOld = "SELECT ClientID FROM PSS.dbo.CLIENTS WHERE CardpacVersion='Cardlink 1.0' AND OS='MVS'AND Base='Old'AND Active='1'"
SQLGetClientsV1MVSNew = "SELECT ClientID FROM CLIENTS WHERE CardpacVersion='Cardlink 1.0' , OS='MVS', Base='New', Active='1'"
SQLGetClientsV1AS4Old = "SELECT ClientID FROM CLIENTS WHERE CardpacVersion='Cardlink 1.0' , OS='AS4', Base='Old', Active='1'"
SQLGetClientsV2MVSOld = "SELECT ClientID FROM CLIENTS WHERE CardpacVersion='Cardlink 2.0' , OS='MVS', Base='Old', Active='1'"
'------
SQLGetModules01 = "SELECT Patchlib FROM "
SQLGetModules02 = " WHERE Type='B' AND Required='1'"

'-- Connection --
Set connDBO = Server.CreateObject("ADODB.Connection")

'-- ResultSets --
Set clientRS = Server.CreateObject("ADODB.RecordSet")
Set RS = Server.CreateObject("ADODB.RecordSet")

If Request.Form("submit") <> "" Then

'--Delete All Existing Rows --S001--
connDBO.open cString
connDBO.execute(SQLDel2)
connDBO.close
'--Delete All Existing Rows --E001--

'--Get all Clients which satisfy (Cardlink 1.0, MVS, Old, Active) into clientsRS --S002--
clientRS.Open SQLGetClientsV1MVSOld, cString

While NOT clientRS.EOF
For Each objFieldValue in clientRS.Fields
SQLGetModuleFull = "" & SQLGetModule01 & objFieldValue.Value & SQLGetModule02 & ""
RS.Open SQLGetModuleFull, cString

Response.Write("<table border='1'>" )
Response.Write("<tr>" )
For Each objFieldName in RS.Fields
Response.Write("<th>" & objFieldName.Name & "</th>" )
Next
Response.Write("</tr>" )
If NOT RS.EOF Then
While NOT RS.EOF
Response.Write("<tr>" )
For Each objFieldValue in RS.Fields
Response.Write("<td>" & objFieldValue.Value & "</td>" )
Next
Response.Write("</tr>" )
RS.MoveNext
WEnd
Response.Write("</table>" )
End If
Next
WEnd

RS.Close
clientRS.Close

End If

关于为什么会发生这种情况的任何提示?我对 ASP Classic 中使用的 VBScript 非常陌生

最佳答案

“嵌套循环时,每个循环都必须有一个唯一的元素变量。” http://msdn.microsoft.com/en-us/library/vstudio/5ebk1751.aspx

您不能在嵌套的 For Each 循环中重复使用相同的元素名称:

For Each objFieldValue in clientRS.Fields
[...]
For Each objFieldValue in RS.Fields

将第二个更改为 objFieldValue2(或更好的名称)并查看它是否编译。

关于sql - 无效的 For 循环控制变量,嵌套的 ResultSet SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19447057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com