我在VBscript中使用DO WHILE NOT和EOF正确

时间:2012-06-20 20:38:27

标签: sql-server-2008 asp-classic vbscript

最后,管理员为我配置了IIS,下面列出了错误消息。     设置SQLStream = CreateObject(“ADODB.Stream”)         设置SQLConnection = CreateObject(“ADODB.Connection”)         设置SQLCommand = CreateObject(“ADODB.Command”)         设置SQLRecordSet = CreateObject(“ADODB.RecordSet”)         SQLConnection.Open“Provider = sqloledb; SERVER = SQLPROD; DATABASE = MyDataBase; UID = MyUsername; PWDMyPassword;”

    'Response.Write("Connection Status: " & SQLConnection.State) & vbnewline
    'Response.Write("Connection Provider: " & SQLConnection.Provider) & vbnewline
    'Response.Write("Version: " & SQLConnection.Version) & vbnewline

    SQLCommand.ActiveConnection = SQLConnection
    SQLCommand.CommandText = "SELECT Seminars.Year, Seminars.SeminarID, Seminars.Theme, Seminar_Week.First, Seminar_Week.Last, Seminar_Week.WeekID, Seminar_Week.Date, Seminar_Week.Affiliation FROM Seminars CROSS JOIN Seminar_Week"
    'Response.Write("SQL Command Passed in: " & SQLCommand.CommandText)

    Set adoRec = SQLCommand.Execute()
        file1 = "./seminars/" & seminar_type & "/" & seminar_year & "/" & adoRec("Date") & "-" & adoRec("Year") & "_" & adoRec("Last") & ".pdf"
        file2 = "./seminars/" & seminar_type & "/" & seminar_year & "/" & adoRec("Date") & "-" & seminar_year & "_" & adoRec("Last") & "(handouts).pdf"
        file3 = "./seminars/" & seminar_type & "/" & seminar_year & "/" & adoRec("Date") & "-" & seminar_year & "_" & adoRec("Last") & "_Flyer.pdf"
    Set fso = CreateObject("scripting.filesystemobject")
        Response.Write("<p style=" & "margin-left:10px;" & "><img src=" & "./img/right_arrowblue.png" & " alt=" & "Expand/Collapse" & " id=" & "arrow_" & adoRec("Week") & " /><strong>[" & adoRec("Date") & "]</strong> " & "<a href=" & "javascript:toggle('seminar_" & adoRec("Week") &"')"">"&aroRec("First") & adoRec("Last") & ", " & adoRec("Affiliation") & "</a></p>")

最后一行代码导致此错误

ADODB.Recordset错误'800a0cc1'

在与所请求的名称或序号对应的集合中找不到项目。

FilePath ,第244行

第244行是最后一行代码,应该在网页上写下关于每个研讨会的一些信息。

我很确定此时我指的是一个不正确的文件路径,因为我在所有不同的字符串中都有一个额外的空间。

我现在的问题是那些是最开始的,意味着

中使用的那些
"<p style=" & "margin-left:10px;" & "><img src=" & "./img/right_arrowblue.png"

造成麻烦。

我也不熟悉使用“展开/折叠”,所以如果有人能告诉我更多相关信息。我正在尝试修复别人的代码,所以我有点落后于8球。

3 个答案:

答案 0 :(得分:1)

RS.MoveNext

将上面的代码放在Loop关键字之前的行上,以避免无限循环。

答案 1 :(得分:1)

解决方案的一小步:

你的SQL

"SELECT * FROM Seminars WHERE [SeminarID] = 5 ORDER BY DESC"

肯定是错误的:ORDER BY需要(至少)一个列名:ORDER BY [SeminarID] DESC。

如果这不能解决您的所有问题,我们将不得不考虑一步一步的方法。

如果您收到错误,请告诉我们(数量,描述,行)。这就是我的意思,当我要求你发布它们时。如果您无法获得比“IIS中处理URL时出错”更好的信息,那么您编写一些命令行脚本以使数据库相关代码绝对正确。

从experiments.vbs开始:

  Dim sCS : sCS     = !your connection string!
  Dim oCN : Set oCN = CreateObject("ADODB.Connection")
  oCN.Open sCS
  WScript.Echo "CN open:", oCN.State

  Dim sSQL : sSQL    = !your SQL statement!
  Dim oRS  : Set oRS = oCN.Execute(sSQL)
  WScript.Echo "RS EOF:", CStr(oRS.EOF)
  WScript.Echo "Frs Col:", oRS.Fields(0).Name, oRS.Fields(0).Type

  Dim i : i = 0
  Do Until oRS.EOF
     WScript.Echo i, oRS.Fields(0).Value
     i = i + 1
     oRS.MoveNext
  Loop
  oCN.Close

并在命令窗口(DOS框)中运行它:cscript experiments.vbs。这应该会让你得到以下几行:

CN open: 1
RS EOF: False
Frs Col: Id 3
0 ...
1 ...
2 ...

或焦点/可发布的错误消息,如:

... .vbs(2465, 14) Microsoft OLE DB Provider for SQL Server: Falsche Syntax in der Nä
he des 'DESC'-Schlüsselworts.

(DESC附近的语法错误),当我尝试语句时得到了

"SELECT * FROM Alpha ORDER BY DESC"

答案 2 :(得分:0)

您是否在循环块结束时遗漏了loop关键字?

检查语法:http://msdn.microsoft.com/en-us/library/eked04a7.aspx