Возврат набора записей из функции в классическом ASP

Я не понимаю, как мне вернуть читаемый набор записей из функции в классическом ASP.

Это то, что я придумал, но он не работает:

Response.Clear
Response.CharSet = "utf-8"
Response.ContentType = "text/plain"

Dim Count

Set Count = Test

Response.Write Count.Fields(0).Value


Function Test

    Dim Query, Connection, Command, Recordset

    Query = " blah blah blah "

    Set Connection = Server.CreateObject("ADODB.Connection")
    Set Command = Server.CreateObject("ADODB.Command")
    Set Recordset = Server.CreateObject("ADODB.Recordset")

    Connection.ConnectionString = "blah blah blah"
    Connection.Open

    Set Command.ActiveConnection = Connection
    Command.CommandText = Query

    Set Recordset = Command.Execute

    Set Test = Recordset

    Recordset.Close
    Connection.Close

    Set Recordset = Nothing
    Set Command = Nothing
    Set Connection = Nothing

End Function

Response.Write Count.Fields (0) .Value возвращает Item не может быть найден в коллекции, соответствующей запрошенному имени или порядковому номеру. ошибка.

Заменив его на Response.Write Count.Status Я получаю Операция не разрешена, когда объект закрыт. ошибка.

Добавление Count.Open дает Соединение не может использоваться для выполнения этой операции. В данном контексте он либо закрыт, либо недействителен. ошибка.

Редактировать после ответа Марка B:

Я уже просмотрел отключенные наборы записей, но не знаю, как их использовать в моем примере: каждый учебник передает запрос непосредственно в набор записей с помощью Recordset.Open , но я использую параметризованные запросы и даже пробую много способов, которыми я не мог получить тот же результат, когда есть ADODB.Command в пути.

Что мне делать?

Заранее спасибо.


Вот решение, основанное на ответе Эдуардо Молтени:

Функция, которая взаимодействует с базой данных:

Function Test

    Dim Connection, Command, Recordset

    Set Connection = Server.CreateObject("ADODB.Connection")
    Set Command = Server.CreateObject("ADODB.Command")
    Set Recordset = Server.CreateObject("ADODB.Recordset")

    Connection.ConnectionString = "blah blah blah"
    Connection.Open

    Command.ActiveConnection = Connection
    Command.CommandText = "blah blah blah"

    Recordset.CursorLocation = adUseClient
    Recordset.Open Command, , adOpenForwardOnly, adLockReadOnly

    Set Recordset.ActiveConnection = Nothing

    Set Test = Recordset

    Connection.Close

    Set Recordset = Nothing
    Set Command = Nothing
    Set Connection = Nothing

End Function

Код который вызывает функцию:

Response.Clear
Response.CharSet = "utf-8"
Response.ContentType = "text/plain"

Dim Recordset

Set Recordset = Test

Response.Write Recordset.Fields(0).Value

Recordset.Close

Set Recordset = Nothing
5
задан casperOne 19 November 2011 в 05:27
поделиться