tofik » 13.05.2004 (Чт) 13:17
У меня есть:
Public WithEvents Conn As ADODB.Connection
Я пытаюсь установить соединение по:
Set Conn = New ADODB.Connection
Conn.ConnectionString = Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=DataBase;Data Source=server
Conn.ConnectionTimeout = 10
Conn.CommandTimeout = 10
Conn.Open Conn_String, , , adAsyncConnect
Допустим сервера с именем "server" нет! Чтобы не дожидаться
Conn.ConnectionTimeout = 10
я жму на кнопочку с кодом
If Conn.State = adStateOpen Then
Conn.Close
Else
Conn.Cancel
Set Conn = Nothing
End If
на
Conn.Cancel
программа останавливается, дожидается
Conn.ConnectionTimeout = 10
и переходит на процедуру
Private Sub Conn_ConnectComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
If pConnection.State = adStateOpen Then
.......
End If
End Sub
и при сравнении pConnection.State = adStateOpen вываливает ошибку:
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied
т.к. в pConnection.State , как собственно и в Conn.State(см. выше) передается эта строка с ошибкой вместо состояния соединения!
Если в отладчике перед тем как произойдет conn.cencel посмотреть чему равен conn.state, изначально он будет как раз той строчкой, после чего примет нормальное числовое значение!
Почему так, и как сделать Нормально!!!!!
Помогите!