Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подвисание Office на время выполнения метода ADODB Execute  [new]
pol_ar
Member

Откуда:
Сообщений: 46
В приложении MS Excel на VBA выполняется следующий запрос. На время обращения к БД происходит подвисание приложения так, что ничего больше делать нельзя ни в Word, ни в Excel, ни в Outlook до тех пор, пока не будет завершен метод Execute. Можно ли сделать этот процесс фоновым?

Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
conn.Provider = "SQLOLEDB.1"
conn.ConnectionTimeout = SQL_ConnectionTimeout
conn.CommandTimeout = SQL_CommandTimeout
conn.ConnectionString = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB1;Data Source="Server1"
conn.Open
Set rs = conn.Execute("select * from table1" )
...
rs.close
conn.Close
19 дек 12, 14:55    [13654550]     Ответить | Цитировать Сообщить модератору
 Re: Подвисание Office на время выполнения метода ADODB Execute  [new]
_djХомяГ
Guest
Можно - это к клиенту но не к MS SQL
19 дек 12, 15:00    [13654595]     Ответить | Цитировать Сообщить модератору
 Re: Подвисание Office на время выполнения метода ADODB Execute  [new]
_djХомяГ
Guest
В простейшем случае подойдет BackgroundWorker
19 дек 12, 15:34    [13654879]     Ответить | Цитировать Сообщить модератору
 Re: Подвисание Office на время выполнения метода ADODB Execute  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2994
_djХомяГ
В простейшем случае подойдет BackgroundWorker


может просто указать
Set rs = conn.Execute("select * from table1", adAsyncExecute )

правда придется код дорабатывать для проверки окончаня запроса.... но это уже мелочи
19 дек 12, 15:48    [13654985]     Ответить | Цитировать Сообщить модератору
 Re: Подвисание Office на время выполнения метода ADODB Execute  [new]
pol_ar
Member

Откуда:
Сообщений: 46
Так правильно будет?

Public Const adAsyncExecute = 16 ' Режим асинхронного выполнения запросов к БД
Public Const adStateConnecting = 2 ' Indicates that the object is connecting
Public Const adStateExecuting = 4 ' Indicates that the object is executing a command
Public Const adStateFetching = 8 ' Indicates that the rows of the object are being retrieved

Set rs = conn.Execute("select * from table1", adAsyncExecute)
While conn.State = adStateExecuting
DoEvents
Wend
19 дек 12, 16:53    [13655466]     Ответить | Цитировать Сообщить модератору
 Re: Подвисание Office на время выполнения метода ADODB Execute  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
pol_ar,

а чего гадать? Попробуйте выполнить свой код и узнаете.
19 дек 12, 18:38    [13656100]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить