Asp classic 关键字';关闭';

Asp classic 关键字';关闭';,asp-classic,Asp Classic,我的一个脚本中有一段代码的语法出现了错误 if(status <> true and Request.QueryString("selectId") = "undefined") then strConn ="PROVIDER=foobar;Server=foo;Database=foo;Uid=bar;Pwd=bar;" Set cnt = Server.CreateObject("ADODB.Connection") set rs1 = CreateObject("ADODB.R

我的一个脚本中有一段代码的语法出现了错误

if(status <> true and Request.QueryString("selectId") = "undefined") then
strConn ="PROVIDER=foobar;Server=foo;Database=foo;Uid=bar;Pwd=bar;"
Set cnt = Server.CreateObject("ADODB.Connection")
set rs1 = CreateObject("ADODB.Recordset") 
rs1.CursorLocation = adUseClient
cnt.ConnectionString= strConn
cnt.Open strConn

sql="Select * from rule1 where skucode='" & Request.Form("txthidden") & "' and letter1id  ='" & Request.Form("lrt1") & "' and letter2id ='" & Request.Form("Select1") & "' and letter3id ='" & Request.Form("Select2") & "'"
rs1.Open  sql,cnt,2,2
if not rs1.EOF then
Response.write("<script language=""javascript"">alert('Rules already exists!');</script>")
else

  sql="INSERT INTO rule1 (letter1id,letter2id,letter3id,HTML,skucode) VALUES "
  sql=sql & "('" & Request.Form("lrt1") & "',"
  sql=sql & "'" & Request.Form("Select1") & "',"
  sql=sql & "'" & Request.Form("Select2") & "',"
  sql=sql & "'" & Request.Form("txthtml") & "',"
  sql=sql & "'" & Request.Form("txthidden") & "')"  
cnt.Execute sql
 Response.write("<script language=""javascript"">alert('Rules Added successfully!');window.location='" & "viewrule1.asp?skucodes=" & Request.Form("txthidden") &   "';</script>")
end if
rs1.Close
cnt.close

您可以将其完全分离,而不是将其关闭:

set cnt = Nothing

应该没有问题。我想的只是你的数据是否太长。有时,当您的行限制超过时,会发生这种情况。SQL Server 6.5允许最大行大小为1962字节,SQL Server 7.0允许最大行大小为8060字节。这只是一个假设,假设这是抛出错误的最后一行,我将替换为:

If IsObject(cnt) Then
    On Error Resume Next
    If cnt.State = 1 Then ' 1 = adStateOpen '
        cnt.Close
    End If
    Set cnt = Nothing
    Err.Clear
    On Error Goto 0
End If

cnt
到达脚本的该部分时可能已经关闭,这就是它抛出错误的原因。关闭前检查其状态需要在出错时包装它,然后继续下一步逻辑,否则它将抛出另一个错误。

如果在
cnt.close()之后
丢失,则会有一个
结束。
@j.w.r这将导致编译错误(语法错误),但实际的错误消息是运行时错误。第75行是什么?另外,尝试将
rs1.opensql,cnt,2,2
更改为
Set rs1=cnt.Execute(sql)
,这可能会有所帮助。
If IsObject(cnt) Then
    On Error Resume Next
    If cnt.State = 1 Then ' 1 = adStateOpen '
        cnt.Close
    End If
    Set cnt = Nothing
    Err.Clear
    On Error Goto 0
End If