Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ADODB запуск процедуры в adAsyncExecute
 
 автор: Силblч   (12.10.2011 в 10:21)   личное сообщение
 
 


cmd.ActiveConnection = conn
        cmd.CommandType = adCmdStoredProc
        cmd.CommandText = oexec
        cmd.Execute , , adAsyncExecute
        '-----------
        ret = adoTrayRS(cmd, "Процедура")
        If ret.State = 0 Then
            If Len(ret.msg) > 0 Then '-- узнать причину
                MsgBoxC ret.msg, , "ExecFinRep::adoTrayRS"
            End If
            cmd.Cancel
            GoTo err123
        End If

в adoTrayRS гдето там на таймере формы отслеживаю состояния

Public Sub Timer()
On Error Resume Next
Dim TT
Static i&
TT = Format(Abs(Time() - StartTime), "Long Time")
Me.txtTimeOf = TT
i = i + 1: updateBar i
If i > 20 Then clearBar phWnd: phWnd = initBar(20): i = 1
If conn.State = 0 Then
    frmState.msg = "Сервер прервал сессию"
    Call btnCancel_Click
    Exit Sub
End If
Select Case tRS.State
Case adStateClosed '0 Indicates that the object is closed.
    Me.capInfo.caption = "Закрыт:"
    Me.capInfo.ForeColor = RGB(255, 0, 0)
    frmState.msg = "Запрос закрыт со стороны сервера " & iDevelop
    frmState.State = 0
    Call timer_Stop: isCancel = 0: Me.Hide
    Exit Sub
Case adStateOpen '1 Indicates that the object is open.
    Me.capInfo.caption = "Выполнен:"
    frmState.State = 0
    Call timer_Stop: isCancel = 0: Me.Hide
    Exit Sub
Case adStateConnecting '2 Indicates that the object is connecting.
    Me.capInfo.caption = "Подключен:"
Case adStateExecuting '4 Indicates that the object is executing a command.
    Me.capInfo.caption = "Выполняется:"
Case adStateFetching '8 Indicates that the rows of the object are being retrieved.
    Me.capInfo.caption = "Выгружается:"
End Select
If Err = 0 Then Exit Sub
err123:
    frmState.msg = Error & vbCrLf & iDevelop
    Call btnCancel_Click
Exit Sub
End Sub


для рекордсета работает хорошо :)
для процедуры - не нашел пока кыде вычитать состояние , что процедура окончила свою работу :)
когда в примере выше делаю прервать - оказывается, что процедура уже выполнилась и нужные данные есть :)

да, для рекордсета запускаю так

    Set zs = CreateObject("ADODB.Recordset")
    zs.CursorLocation = adUseClient
    zs.Open fsql, conn, adOpenStatic, , adAsyncExecute Or adAsyncFetch
    ret = adoTrayRS(zs)
    If ret.State = 0 Then
        If Len(ret.msg) > 0 Then '-- узнать причину
            MsgBoxC ret.msg, , "ExecFinRep::adoTrayRS"
        End If
        zs.Cancel
    Else
        ttime = Time() - ttime
        Call set_oqstat((repid), (ttime), zs)
    End If


вопрос понятен? :))
спасибо

  Ответить  
 
 автор: Силblч   (12.10.2011 в 10:28)   личное сообщение
 
 

а, кажись я протупил (забыл)

Private Sub cnn_ExecuteComplete(ByVal RecordsAffected As Long _
    , ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum _
    , ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset _
    , ByVal pConnection As ADODB.Connection)

IsRunningStatus = False
DoCmd.Hourglass False
End Sub


чтоли

  Ответить  
 
 автор: Силblч   (12.10.2011 в 16:27)   личное сообщение
 
 

а при асинхронном запуске эта хрень не индикатирует
а при неасинхронном она мне и даром не нать.... фукака


з.ы..ы..ы.ы..ы..... корочи дочитал - она индикатирует после завершения
а нхрина оно мне такое надо?

  Ответить  
 
 автор: Силblч   (12.10.2011 в 17:33)   личное сообщение
 
 

был не прав :)) переутомился
все работает

  Ответить  
 
 автор: Explorer   (12.10.2011 в 17:55)   личное сообщение
 
 

ну так я и знал, ващета

  Ответить  
 
 автор: Силblч   (12.10.2011 в 17:56)   личное сообщение
 
 

дык... зато перепроверилсо

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList