2013-08-02 4 views
0

Я написал базовый класс asp classic, который обрабатывает все подключения к нашей базе данных. Когда все работает нормально, первый раз, но во второй раз, когда он называется набором записей, не открывается никаких идей?Невозможно открыть набор записей

Class SQLConnection 
Private Sub Class_Initialize 
    set ConnectionObject = Server.CreateObject("ADODB.Connection") 
    Set RecordsetObject = Server.CreateObject("ADODB.Recordset") 
End Sub 
Private Sub Class_Terminate 
    Set ConnectionObject = Nothing 
    Set RecordsetObject = Nothing 
End Sub 

Public Default Property Get Item(sString) 
     On Error Resume Next 
      Item = RecordsetObject(sString) 
     On Error GoTo 0 
If Err.Number <> 0 then 
     Item = null 
    End if 
End Property 

Public Sub MoveNext 
    If Not RecordsetObject.EOF Then RecordsetObject.MoveNext 
End Sub 

Public Function EOF 
    EOF = RecordsetObject.EOF 
End Function 

Public Sub Open(SQLStr,ConnStr) 
    ConnectionObject.Open ConnStr 
    RecordsetObject.Open SQLStr, ConnectionObject, 3 
End Sub 

Public Sub Close 
    RecordsetObject.Close 
    ConnectionObject.Close 
End Sub 

End Class 


Set SQLConn = New SQLConnection 
SQLConn.Open "SELECT top 10 id FROM tblProfileVillages", ConnectionString 
Do While Not SQLConn.EOF 
    Response.write(SQLConn("id")) 
    SQLConn.MoveNext 
Loop 
SQLConn.Close 
Set SQLConn = nothing 

ответ

0

Оказывается, если ваш sql-оператор не может быть отображен в сетке, тогда объект мгновенно закрывается, как говорят инструкции insert.

Я решил это проверить, если объект открыт перед запуском кода с If RecordsetObject.State = 1 then

1

Я думаю, что ошибка в Item собственности, вы должны проверить err.Number перед вызовом on error goto 0.

Используйте это так:

Public Default Property Get Item(sString) 
    On Error Resume Next 
    Item = RecordsetObject(sString) 
    If Err.Number <> 0 then 
     Item = null 
    End if 
    On Error GoTo 0 
End Property 

Кроме того, я не видел "нуль" в VBScript еще. Это постоянная вы сделали, или может быть, что вы где-то пропускаете ошибку? on error goto next бизнес может быть раздражающим иногда. :)

+2

'Null' это ключевое слово распознается VBScript – AnonJr

+0

благодарственные Но это не исправить ошибку ' на ошибки Гото next' требуется, потому что 'recordset' выдает ошибку, если вы анализируете имя столбца, которое не существует, и' isObject', а другие встроенные функции не могут обрабатывать объект 'recordset' –

+0

@AnonJr: Funny Мне никогда не нужно 'null 'за все эти годы, работая с VbScript, я использовал vbNull. @Thomas: Это понятно, но иногда я маскировал ошибки «Variable not defined», где я этого не ожидал. – gpinkas

Смежные вопросы