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

Форум: MS ACCESS

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

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

 
 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: будете смеяться, но я никогда этого не делал
 
 автор: час   (18.03.2011 в 12:10)   личное сообщение
 
   to: Силblч   (18.03.2011 в 10:50)
 

  Ответить  
 
 автор: Силblч   (18.03.2011 в 10:50)   личное сообщение
 
   to: Силblч   (14.03.2011 в 11:14)
 

короче вот что получилось
проверял, на сервере выполнение запроса прерывается, задача переходит в статус inactive и подчищается серверным джобом, каким то

запускаю так

        Set zs = CreateObject("ADODB.Recordset")
        zs.CursorLocation = adUseClient
        zs.Open fsql, conn, adOpenStatic, , adAsyncExecute Or adAsyncFetch
        If adoTray(zs, Me.Name) = 1 Then zs.Cancel' если был кэнсел, то кэнселим и этот запрос. почему то так все сработало :)


кусок функции adoTray

    DoCmd.OpenForm ftnam, , , , , acDialog, fMain
    If IsFormLoaded(ftnam) Then
        Set ff = Forms(ftnam)
        If ff.isCancel = 1 Then
            adoTray = 1
            SetStatus "Выполняется прерывание запроса на сервере..."
            If Not o Is Nothing Then
                If o.State = adStateOpen Then o.Close 'в принципе такой ситуации может и не быть, но на всякий случай :)
            End If
            Set o = Nothing 'обрубаем запрос на корю
'дальше, самое главное, обрубаем сессию. причем сперва - кэнсел, потом клозе.
            If Not conn Is Nothing Then
                If conn.State = adStateOpen Then conn.Cancel: conn.Close
            End If
            Set conn = Nothing
            If conn2dbasync(Nz(Forms("frm1")("txt1"), Environ("USERNAME")), _
                           Nz(Forms("frm1")("txt2"), "")) = 0 Then
                    MsgBox "Не удалось подключиться к серверу(реплике) " & vbCrLf & _
                    conn.Errors.Item(0).Description & vbCrLf & iDevelop
                    Exit Function
            End If
            SetStatus "Выполнение прервано пользователем..."
        End If '--cancel pending
        Set ff = Nothing
        DoCmd.Close acForm, ftnam
    End If


может я и рано отчитался о проделанной работе, но пока вроде отрабатывает нормально
отдам пользователям на растерзание, если сервак не завалят, то я продолжу разработки :)

  Ответить  
 
 автор: Силblч   (17.03.2011 в 15:17)   личное сообщение
 
   to: Силblч   (14.03.2011 в 11:14)
 

возможно ответ здесь
http://download.oracle.com/docs/cd/B10501_01/win.920/a95895/o4o00024.htm
потому что
http://download.oracle.com/docs/cd/B10501_01/win.920/a95895/o4o00020.htm
In non-blocking mode, control is returned to the application immediately even if the execution is not complete. This allows the application to execute other tasks which are not dependent on the results of the last execution.

теперь осталось выяснить что это за зверь ОО4О

  Ответить  
 
 автор: Силblч   (14.03.2011 в 15:12)   личное сообщение
 
   to: Дядя Федор   (14.03.2011 в 13:21)
 

ты тоже

  Ответить  
 
 автор: Силblч   (14.03.2011 в 15:12)   личное сообщение
 
   to: osmor   (14.03.2011 в 14:59)
 

атветинг

  Ответить  
 
 автор: osmor   (14.03.2011 в 14:59)   личное сообщение
 
   to: Силblч   (14.03.2011 в 11:14)
 

Про рекордсет не знаю, пробовал лет 5 назад, получил такой же результат и забил.
Я тебе там личное сообщение кинул, не откажи

  Ответить  
 
 автор: Дядя Федор   (14.03.2011 в 13:21)   личное сообщение
 
   to: Силblч   (14.03.2011 в 12:49)
 

  Ответить  
 
 автор: Силblч   (14.03.2011 в 13:07)   личное сообщение
 
   to: Дядя Федор   (14.03.2011 в 12:40)
 

close прокатил, но только для локального раздупляжа приложения :)
а сервер продолжал колбасить запрос :( не спортивно єто

  Ответить  
 
 автор: Силblч   (14.03.2011 в 12:49)   личное сообщение
 
   to: час   (14.03.2011 в 12:12)
 

ты мне глазки не строй - ищи решение!

  Ответить  
 
 автор: Силblч   (14.03.2011 в 12:49)   личное сообщение
 
   to: Дядя Федор   (14.03.2011 в 12:40)
 

с курсорами все нормально :) adUseClient
клоз не катит

  Ответить  
 
 автор: Дядя Федор   (14.03.2011 в 12:40)   личное сообщение
 
   to: час   (14.03.2011 в 12:12)
 

"Книгу не читал. Но осуждаю" (Это я к тому. что оракула видел издалека и давно)
Но кажется там че-то с курсором надо делать.
А close не катит?

  Ответить  
 
 автор: час   (14.03.2011 в 12:12)   личное сообщение
 
   to: Силblч   (14.03.2011 в 11:14)
 

  Ответить  
 
 автор: Силblч   (14.03.2011 в 11:14)   личное сообщение
 
 


как корректно обрубить Oracle.ADODB open recordset?

открыл в асинхронном режиме. ок.
запустил формочку, которая отсчитывает время исмотрит за состоянием рекордсета с кнопочкой Прервать. ок.

Если пользователь нажал Прервать, а вот здесь заруба :)
делаю Cancel рекордсета - приложение "уходит в себя" примерно на время выполнения запроса
стал делать еще и кенсел коннекшина - та же хрень :)

я так понимаю - это проблема стандартная, да? :)
подскажите, а то опять найду решение сам.... ну пожалуйста-препожалуйста

не хочется писать процедуру, которая будет выдергивать сетевой шнур

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