1

Тема: VBS: Передача объекта из функции.

Доброго времени суток!
Пишу функцию для удобства выборки данных из базы MSSQL. Только желательно, чтобы результатом работы функции был объект с набором выбранных данных. Так вот не могу найти ни документации, ни похожих примеров.
Буду признателен за помощь. Вот то, что есть сейчас:


        Function FetchDatabaseRecords(hostName, databaseName, userName, userPassword, tableName)
           Dim objConnection, sqlStatement, FetchData
           Set FetchDatabaseRecords = Nothing
           sqlStatement         = "SELECT * from " & tableName
           On Error Resume Next
              Set objConnection = CreateObject("ADODB.Connection")
              If Err.Number <> 0 Then
                 msgbox "Creating ADO connection Object"
                 Exit Function
              End If
              objConnection.CommandTimeout = 3600
              objConnection.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
                                 "Persist Security Info=False;Initial Catalog=" & databaseName & ";" & _
                                 "Data Source=" & hostName & _
                                 "," & userName & "," & userPassword
              If Err.Number <> 0 Then
                 msgbox "Opening the " & DQ(databaseName) & " on " & DQ(hostName)
                 Exit Function
              End If
              Set FetchDatabaseRecords = CreateObject("ADODB.Recordset")
              If Err.Number <> 0 Then
                 msgbox "Creating ADO recordset Object"
                 Exit Function
              End If
              FetchDatabaseRecords.Open sqlStatement, objConnection
              If Err.Number <> 0 Then
                 msgbox "Executing SQL Statement " & DQ(sqlStatement)
                 Exit Function
              End If
           'On Error Goto 0
           Set objConnection = Nothing
        End Function

Вызов функции и обработка результатов (было несколько вариантов, это - последний):


        Set TableData = FetchDatabaseRecords(sServerIP, sDataBaseName, sUserName, sPassWord, "dbo.computers")
        If TableData Is Nothing Then
            msgbox("No object passed!")
        Else
            While Not TableData.EOF 'Перебираем результаты
                if isNull(TableData.Fields(0).Value)  then' Что нибудь с ними вытворяем
                msgbox("NULL")
                Else
                msgbox(CStr(TableData.Fields(0).Value))
                end if
            TableData.MoveNext' Идем к следующей записи
            Wend 
        End If

2

Re: VBS: Передача объекта из функции.

mad_boy, так в чём вопрос?

3

Re: VBS: Передача объекта из функции.

Вопрос в том, как сделать этот код рабочим?
В любом раскладе получаю msgbox("No object passed!"), хотя данные есть и другой выборкой я их получаю.

4

Re: VBS: Передача объекта из функции.

Сам нашел косяк: неправильная строка подключения была.
До сих пор непонятно, почему не отрабатывают условия при возникновении ошибки в теле функции?
Нарочно менял имя таблицы или пароль на заведомо неправильные и не получил ни одного сообщения, а только ошибки уже во время обработки результата, которого естественно нет.

5

Re: VBS: Передача объекта из функции.

В общем, разобрался и с этим. Спасибо за помощь.