Ms access ASP嵌套循环返回错误
我试图为菜单创建嵌套循环,但它返回错误。请有人帮我解决这个问题。甚至可以确定循环哪里出了问题Ms access ASP嵌套循环返回错误,ms-access,asp-classic,Ms Access,Asp Classic,我试图为菜单创建嵌套循环,但它返回错误。请有人帮我解决这个问题。甚至可以确定循环哪里出了问题 Error Type: Microsoft VBScript compilation (0x800A040E) 'loop' without 'do' /asp/default.asp, line 64 loop until RS.EOF 代码 msql = "SELECT * FROM tblMenu ORDER BY [link_position] ASC" Set RS = Server.Cre
Error Type:
Microsoft VBScript compilation (0x800A040E)
'loop' without 'do'
/asp/default.asp, line 64
loop until RS.EOF
代码
msql = "SELECT * FROM tblMenu ORDER BY [link_position] ASC"
Set RS = Server.CreateObject("ADODB.Recordset")
Set RSsub = Server.CreateObject("ADODB.Recordset")
RS.Open msql, Conn, 1,3
RSsub.Open msql
If Not RS.EOF Then
Do
Response.Write "<li><a href="""& RS("link")&""" title ="""& RS("link_title")&""">"& RS("link_name") &"</a>"
If NOT RSsub.EOF Then
Response.Write("<ul>" & vbcrlf)
Do While NOT RSsub.EOF
Response.Write(RSsub("sub_menu") & vbcrlf)
RSsub.MoveNext
Loop
Response.Write("</ul>" & vbcrlf)
RSsub.Close
Response.Write("</li>" & vbcrlf)
RS.MoveNext
loop until RS.EOF
End if
msql=“通过[link\u position]ASC从tblMenu订单中选择*
Set RS=Server.CreateObject(“ADODB.Recordset”)
Set RSsub=Server.CreateObject(“ADODB.Recordset”)
康涅狄格州1,3号开放式msql
RSsub.openmsql
如果不是卢比,那么
做
回答。写“”
如果不是RSsub.EOF,则
响应。写入(“”&vbcrlf)
不使用RSsub.EOF时请勿使用
响应写入(RSsub(“子菜单”)和vbcrlf)
RSsub.MoveNext
环
响应。写入(“
”&vbcrlf)
RSsub.关闭
响应。写入(“ ”&vbcrlf)
下一个
循环至RS.EOF
如果结束
预期产出
<li><a href="some-link" title="">Record from DB</a>
<ul>
<li><a href="some-link">Records from DB</a></li>
</ul>
</li>
对于如果不是RSsub.EOF,则缺少如果结束,则缺少如果不是RSsub.EOF,则缺少如果结束,则缺少几个语法错误。这是清理后的代码
msql = "SELECT * FROM tblMenu ORDER BY [link_position] ASC"
RS = Server.CreateObject("ADODB.Recordset")
RSsub = Server.CreateObject("ADODB.Recordset")
RS.Open(msql, Conn, 1, 3)
RSsub.Open(msql)
If Not RS.EOF Then
Do
Response.Write("<li><a href=""" & RS("link") & """ title =""" & RS("link_title") & """>" & RS("link_name") & "</a>")
If Not RSsub.EOF Then
Response.Write("<ul>" & vbcrlf)
Do While Not RSsub.EOF
Response.Write(RSsub("sub_menu") & vbcrlf)
RSsub.MoveNext()
Loop
Response.Write("</ul>" & vbcrlf)
RSsub.Close()
End If
Response.Write("</li>" & vbcrlf)
RS.MoveNext()
Loop Until RS.EOF
End If
msql=“通过[link\u position]ASC从tblMenu订单中选择*
RS=Server.CreateObject(“ADODB.Recordset”)
RSsub=Server.CreateObject(“ADODB.Recordset”)
RS.Open(msql,康涅狄格州,1,3)
RSsub.Open(msql)
如果不是卢比,那么
做
回答。写(“”)
如果不是RSsub.EOF,则
响应。写入(“”&vbcrlf)
不使用RSsub.EOF时请勿使用
响应写入(RSsub(“子菜单”)和vbcrlf)
RSsub.MoveNext()
环
响应。写入(“
”&vbcrlf)
RSsub.Close()
如果结束
响应。写入(“ ”&vbcrlf)
R.MoveNext()
循环至RS.EOF
如果结束
更新:
根据您发布的图像,表中的sub_菜单只是一组html li元素,您可以直接附加到响应中。读取子菜单不需要单独的记录集。请尝试以下代码:
msql = "SELECT * FROM tblMenu ORDER BY [link_position] ASC"
RS = Server.CreateObject("ADODB.Recordset")
RS.Open(msql, Conn, 1, 3)
Do
Response.Write("<li><a href=""" & RS("link") & """ title =""" & RS("link_title") & """>" & RS("link_name") & "</a>" & vbcrlf)
If Not String.IsNullOrEmpy(RS("sub_menu")) Then
Response.Write("<ul class=""sub-menu"">" & vbcrlf)
Response.Write(RS("sub_menu") & vbcrlf)
Response.Write("</ul>" & vbcrlf)
End If
Response.Write("</li>" & vbcrlf)
RS.MoveNext()
Loop Until RS.EOF
msql=“通过[link\u position]ASC从tblMenu订单中选择*
RS=Server.CreateObject(“ADODB.Recordset”)
RS.Open(msql,康涅狄格州,1,3)
做
响应。写入(“”&vbcrlf)
如果不是String.IsNullOrEmpy(RS(“子菜单”)),则
响应。写入(“”&vbcrlf)
响应写入(RS(“子菜单”)和vbcrlf)
响应。写入(“
”&vbcrlf)
如果结束
响应。写入(“ ”&vbcrlf)
R.MoveNext()
循环至RS.EOF
几个语法错误。这是清理后的代码
msql = "SELECT * FROM tblMenu ORDER BY [link_position] ASC"
RS = Server.CreateObject("ADODB.Recordset")
RSsub = Server.CreateObject("ADODB.Recordset")
RS.Open(msql, Conn, 1, 3)
RSsub.Open(msql)
If Not RS.EOF Then
Do
Response.Write("<li><a href=""" & RS("link") & """ title =""" & RS("link_title") & """>" & RS("link_name") & "</a>")
If Not RSsub.EOF Then
Response.Write("<ul>" & vbcrlf)
Do While Not RSsub.EOF
Response.Write(RSsub("sub_menu") & vbcrlf)
RSsub.MoveNext()
Loop
Response.Write("</ul>" & vbcrlf)
RSsub.Close()
End If
Response.Write("</li>" & vbcrlf)
RS.MoveNext()
Loop Until RS.EOF
End If
msql=“通过[link\u position]ASC从tblMenu订单中选择*
RS=Server.CreateObject(“ADODB.Recordset”)
RSsub=Server.CreateObject(“ADODB.Recordset”)
RS.Open(msql,康涅狄格州,1,3)
RSsub.Open(msql)
如果不是卢比,那么
做
回答。写(“”)
如果不是RSsub.EOF,则
响应。写入(“”&vbcrlf)
不使用RSsub.EOF时请勿使用
响应写入(RSsub(“子菜单”)和vbcrlf)
RSsub.MoveNext()
环
响应。写入(“
”&vbcrlf)
RSsub.Close()
如果结束
响应。写入(“ ”&vbcrlf)
R.MoveNext()
循环至RS.EOF
如果结束
更新:
根据您发布的图像,表中的sub_菜单只是一组html li元素,您可以直接附加到响应中。读取子菜单不需要单独的记录集。请尝试以下代码:
msql = "SELECT * FROM tblMenu ORDER BY [link_position] ASC"
RS = Server.CreateObject("ADODB.Recordset")
RS.Open(msql, Conn, 1, 3)
Do
Response.Write("<li><a href=""" & RS("link") & """ title =""" & RS("link_title") & """>" & RS("link_name") & "</a>" & vbcrlf)
If Not String.IsNullOrEmpy(RS("sub_menu")) Then
Response.Write("<ul class=""sub-menu"">" & vbcrlf)
Response.Write(RS("sub_menu") & vbcrlf)
Response.Write("</ul>" & vbcrlf)
End If
Response.Write("</li>" & vbcrlf)
RS.MoveNext()
Loop Until RS.EOF
msql=“通过[link\u position]ASC从tblMenu订单中选择*
RS=Server.CreateObject(“ADODB.Recordset”)
RS.Open(msql,康涅狄格州,1,3)
做
响应。写入(“”&vbcrlf)
如果不是String.IsNullOrEmpy(RS(“子菜单”)),则
响应。写入(“”&vbcrlf)
响应写入(RS(“子菜单”)和vbcrlf)
响应。写入(“
”&vbcrlf)
如果结束
响应。写入(“ ”&vbcrlf)
R.MoveNext()
循环至RS.EOF
感谢您清理代码,但它返回一个错误Microsoft VBScript编译(0x800A0414)在调用Sub/asp/default.asp,第46行第25列RS.Open(msql,Conn,1,3)时不能使用括号@YAQOOB ReplaceResponse.Write(“&vbcrlf)
与Response.Write“”&vbcrlf
@Dai我已经按照您的要求进行了更改,但是现在出现了此错误ADODB.Recordset(0x800A0E78)操作在对象关闭时是不允许的。
@Dai如果我对RSsub.Close()
进行了注释,页面将继续加载。。没有显示我修改了代码。我认为结束if的位置应该在RS.MoveNext()之前。您真的应该逐行检查代码,看看它是否在做它应该做的事情,以及错误会出现在哪里。感谢清理代码,但它返回一个错误Microsoft VBScript编译(0x800A0414)在调用Sub/asp/default.asp,第46行,第25列RS.Open(msql,Conn,1,3)时不能使用括号@YAQOOB ReplaceResponse.Write(“&vbcrlf)
带有Response.Write“”&vbcrlf
@Dai我已经按照您的要求进行了更改,但现在出现了此错误ADODB.Recordset(0x800A0E78)操作,当对象关闭时不允许操作。
@Dai如果我对RSsub.Close()进行了注释
页面将继续加载。。没有显示我修改了代码。我认为结束if的位置应该在RS.MoveNext()之前。你真的应该逐行检查你的代码,看看它是否在做它应该做的事情,以及哪里会出现错误。谢谢,循环现在已经修复,但是输出破坏了整个菜单:(谢谢,循环现在已经修复,但是输出破坏了整个菜单:(