Asp classic 所需的功能错误对象800a01a8

Asp classic 所需的功能错误对象800a01a8,asp-classic,vbscript,Asp Classic,Vbscript,我对函数和类比较陌生,所以不太确定这是否是初学者的错误。我得到: Microsoft VBScript runtime error '800a01a8' Object required: 'EngineerNote(...)' /backup-check/backup_frontendlist_import_NEW.asp, line 76 第76行是: Set NoteArray=EngineerNote(company, servername, backupsolution)

我对函数和类比较陌生,所以不太确定这是否是初学者的错误。我得到:

Microsoft VBScript runtime error '800a01a8' 

Object required: 'EngineerNote(...)' 

/backup-check/backup_frontendlist_import_NEW.asp, line 76 
第76行是:

Set NoteArray=EngineerNote(company, servername, backupsolution)
我传递的三个变量都是字符串。所有函数和类都设置在:

Class EngineerNoteClass
public note
public notesubmitdate
End Class

Function EngineerNote(Company, ServerName, Solution)
Set RecordSet = Server.CreateObject("ADODB.Recordset")
RecordSetSQLString = "SELECT note, submitdate FROM tbl_BackupChecks_AuditInformation WHERE Company='" & company & "' AND ServerName='" & servername & "' AND Solution='" & solution & "' ORDER BY submitdate desc;"
RecordSet.Open RecordSetSQLString, DatabaseConnection
If Recordset.EOF Then
'Do Nothing
Else
Dim NoteResults
Set NoteResults = new EngineerNoteClass
noteresults.note = RecordSet("note")
noteresults.notesubmitdate = RecordSet("submitdate")
Set Engineernote = NoteResults
End If
Recordset.Close
End Function

很可能您的数据库查询没有返回任何结果。只有当记录集不在
EOF
时,才能设置函数的返回值:

If Recordset.EOF Then
  'Do Nothing
Else
  ...
  Set Engineernote = NoteResults
End If
然后
分支中将返回值设置为
Nothing
(或设置为空的
EngineerNoteClass
对象),应该可以消除错误:

If Recordset.EOF Then
  Set EngineerNote = Nothing
Else
  ...
  Set Engineernote = NoteResults
End If

确保在脚本的其余部分正确处理返回的值/对象。

这正是我的错误做法。谢谢!我正在编辑一些奇怪的代码(不是我的!)&我从你的回答中得到了提示。。你救了我一天。。谢谢