【问题标题】:Type Mismatch VBScript Error when getting RecordSet获取 RecordSet 时类型不匹配 VBScript 错误
【发布时间】:2018-09-20 21:23:03
【问题描述】:

我正在处理一些用 Classic ASP / VBSCript 编写的遗留代码。

代码处理通过 HTML 表单提交的数据,并在下一行中断。

' Get all input questions
Set inputQuestions = getListOfInputQuestionsForPage("additional")

函数getListOfInputQuestionsForPage(pageName)定义如下:

Function getListOfInputQuestionsForPage(pageName)
    ' Instantiate Command
    Set objCommand = Server.CreateObject("ADODB.Command")

    ' Inform Command what Connection to use.
    Set objCommand.ActiveConnection = myConn

    ' SQL Query to run
    objCommand.CommandText = "SELECT QUESTION_TABLE.PK_QUESTION AS ""QUESTION_ID"", QUESTION_TABLE.QUESTION AS ""QUESTION"", QUESTION_TABLE.INPUT_TYPE AS ""TYPE"", QUESTION_TABLE.IS_FOR_ALL_CUSTOMERS AS ""FOR_ALL_CUSTOMERS"" FROM QUESTION_TABLE WHERE QUESTION_TABLE.DISPLAY_PAGE = '" & pageName & "' ORDER BY PK_QUESTION ASC"

    ' Execute SQL and return result
    Set getListOfInputQuestionsForPage = objCommand.Execute()
End Function

奇怪的是我收到以下错误:

Microsoft VBScript runtime  error '800a000d'

Type mismatch: 'getListOfInputQuestionsForPage' 

/site/path_to_file/edit_additional.asp, line 110

我所做的只是试图从数据库中获取一些数据。而且我知道数据存在并返回了一个 RecordSet。

【问题讨论】:

  • 检查你的函数返回什么:Set rs = objCommand.Execute : MsgBox TypeName(rs) : Set getListOfInputQestionsForPage = rs.
  • 谢谢安斯加尔。那个代码会去哪里?你能详细说明一下吗:)谢谢
  • 显然,它应该替换函数的最后一行。不过,我不确定MsgBox 是否可以在 ASP 中工作,因此您可能需要用一些日志记录指令替换它。
  • 我试过你的代码,不幸的是它没有工作。另外,我已经知道我的函数返回了什么,因为在另一个页面上我正在使用相同的函数并且它正在返回记录集。

标签: forms vbscript recordset


【解决方案1】:

这个错误让我失望了。它不起作用的原因是因为函数getListOfInputQuestionsForPage(pageName) 不存在于同一页面上,我必须包含包含函数定义的文件,这现在很明显,但是因为错误对于我正在尝试做的事情(类型不匹配)......我根本没有想到这个原因。

因此,简而言之,请确保您的经典 asp 文件知道该函数,即具有指向包含该函数的文件的链接,或者该函数在同一文件中定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多