Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как предотвратить зависание? / 11 сообщений из 11, страница 1 из 1
21.01.2005, 10:25:00
    #32876365
Как предотвратить зависание?
На открытие формы в adp-проекте запускается хранимая процедура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim myCommand As ADODB.Command
Set myCommand = New ADODB.Command
Set myCommand.ActiveConnection = CurrentProject.Connection
    myCommand.CommandTimeout =  0 
    myCommand.CommandType = adCmdStoredProc
    myCommand.CommandText = "Temp_Creater"
    myCommand.Parameters.Append myCommand.CreateParameter("@date_from", adChar, adParamInput,  10 , "")
    myCommand.Parameters.Append myCommand.CreateParameter("@date_to", adChar, adParamInput,  10 , "")
    myCommand.Parameters.Append myCommand.CreateParameter("@res", adInteger, adParamOutput,  9 )
    myCommand.Execute
Однако процедура выполняется очень долго и приложение визуально как бы подвисает (не перетаскиваются окошки, в диспетчере задач статус приложения "не отвечает"...). Подскажите пожалуйста, есть ли возможность предварительно указать приложению, что не нужно ожидать окончания работы хранимой на сервере?
...
Рейтинг: 0 / 0
21.01.2005, 10:42:16
    #32876419
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предотвратить зависание?
mdb можно было оживлять посредством DoEvents,
а хранимую процедуру вероятно можно запустить в асинхронном режиме(сам не пробовал)
...
Рейтинг: 0 / 0
21.01.2005, 10:43:14
    #32876421
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предотвратить зависание?
есть такая возможность. см опцию adAsyncExecute в command.execute
...
Рейтинг: 0 / 0
21.01.2005, 11:04:36
    #32876496
Как предотвратить зависание?
пробовал и так:
Код: plaintext
myCommand.Execute adAsyncExecute
только следующая команда (например, MsgBox ("ок"), все равно выполняется только после окончания работы хранимой.
...
Рейтинг: 0 / 0
21.01.2005, 11:22:56
    #32876565
V
V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предотвратить зависание?
похоже, Ваш код гарантированно обращается к серверу для получения списка параметров
переставьте
Set myCommand.ActiveConnection = CurrentProject.Connection
непосредственно перед
myCommand.Execute.

кроме того,
входные параметры у Вас заданы в виде пустых строк - это так и должно быть?
...
Рейтинг: 0 / 0
21.01.2005, 12:00:10
    #32876738
Как предотвратить зависание?
Попробовал - не помогает, а пустые строки - это нормально, это тестовый вариант и реально в хранимой ничего полезного пока не происходит...
...
Рейтинг: 0 / 0
21.01.2005, 12:07:10
    #32876771
V
V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предотвратить зависание?
какой версии адп
и в каком контексте происходит вызов
...
Рейтинг: 0 / 0
21.01.2005, 12:17:28
    #32876810
Как предотвратить зависание?
2000, вызов я поставил на таймер: первый раз запускается хранимая, последующие разы меняется цвет надписи "ждите..." до тех пор пока переменная @res = 0. По крайней мере, задумка такая была...
...
Рейтинг: 0 / 0
21.01.2005, 12:44:00
    #32876930
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предотвратить зависание?
adAsyncExecute - третий параметр Command , а не первый
...
Рейтинг: 0 / 0
21.01.2005, 13:04:45
    #32877010
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предотвратить зависание?
а вот так нельзя! автордо тех пор пока переменная @res = 0
проверать нужно cmd.state <> adStateExecuting
...
Рейтинг: 0 / 0
21.01.2005, 13:29:41
    #32877098
Как предотвратить зависание?
Спасибо, заработало.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как предотвратить зависание? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]