0

スクリプトの 1 つにコードのセクションがあり、その構文でエラーが発生しています。

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

私が得るエラーメッセージは次のとおりです。

Microsoft OLE DB Provider for SQL Server error '80040e14'

Incorrect syntax near the keyword 'close'.

/path/file.asp, line 75
4

3 に答える 3

0

問題はないはずです。私が思うのは、データが長すぎるかどうかだけです。行の制限を超えたときに発生することがあります。SQL Server 6.5では最大行サイズが1962バイトになり、SQLServer7.0では最大行サイズが8060バイトになります。その単なる仮定

于 2012-09-19T05:31:35.367 に答える
0

エラーをスローしているのが最後の行であると仮定すると、次のように置き換えます。

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おそらく、スクリプトのその部分に到達するまでにすでに閉じられているため、エラーがスローされます。閉じる前にステータスを確認するには、ロジックでラップする必要がありOn Error Resume Nextます。そうしないと、別のエラーがスローされます。

于 2012-09-19T06:17:44.343 に答える
0

閉じる代わりに、完全に切り離すことができます。

set cnt = Nothing
于 2012-09-18T18:32:43.847 に答える