|
|
|
|
|
| "Книгу не читал. Но осуждаю" (Это я к тому. что оракула видел издалека и давно)
Но кажется там че-то с курсором надо делать.
А close не катит? | |
|
| |
|
|
|
| с курсорами все нормально :) adUseClient
клоз не катит | |
|
| |
|
|
|
| close прокатил, но только для локального раздупляжа приложения :)
а сервер продолжал колбасить запрос :( не спортивно єто | |
|
| |
|
|
|
| ты мне глазки не строй - ищи решение! | |
|
| |
|
|
|
|
| ты тоже | |
|
| |
|
|
|
| Про рекордсет не знаю, пробовал лет 5 назад, получил такой же результат и забил.
Я тебе там личное сообщение кинул, не откажи | |
|
| |
|
|
|
|
| возможно ответ здесь
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О | |
|
| |
|
|
|
| короче вот что получилось
проверял, на сервере выполнение запроса прерывается, задача переходит в статус 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
|
может я и рано отчитался о проделанной работе, но пока вроде отрабатывает нормально
отдам пользователям на растерзание, если сервак не завалят, то я продолжу разработки :) | |
|
| |
|