powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Изменить ограничение времени выполнения макроса
5 сообщений из 5, страница 1 из 1
Изменить ограничение времени выполнения макроса
    #38605451
googlogmob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
Столкнулся с проблемой
При запуске макроса, который выполняет подключение к БД SQL и выгрузку на лист результата запроса, возникла сложность:
если запрос сервером обрабатывается сек 10-15 - макрос завершается без ошибок, заполняя нужный лист результатом запроса
если же запустить трудоемкий запрос к БД, то сек через 15-20 появляется сообщение что время ожидания запроса истекло

Вот сам код


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
Option Explicit 

Sub RunQuery(SQLString As String, CnnStr As String, Er As Boolean, _
       Optional ResultRange As Range = Nothing, Optional IncludeHdr As Boolean = False)
Dim CN As ADODB.Connection, Cmd As ADODB.Command, Rs As ADODB.Recordset
Dim I As Byte, F As Field
On Error Resume Next
  Er = False
  Set CN = New ADODB.Connection
  CN.ConnectionString = CnnStr
  CN.Open
  If Err.Number <> 0 Then
    MsgBox "Ошибка подключения к базе данных: " & Chr(13) & Chr(13) & Err.Description, vbCritical
    Er = True
    Exit Sub
  End If       

  Set Cmd = New ADODB.Command
  Set Cmd.ActiveConnection = CN
  Cmd.CommandText = SQLString
  Cmd.CommandType = adCmdText
  CN.Errors.Clear
  If ResultRange Is Nothing Then
    Cmd.Execute
    If Err.Number <> 0 Then
   MsgBox "Ошибка при выполнении запроса: " & Chr(13) & Err.Description, vbCritical
      Er = True
    End If
  Else
    Set Rs = New ADODB.Recordset
    Set Rs.Source = Cmd
    Rs.Open
    If Err.Number = 0 Then
   If IncludeHdr Then
     I = 0
     For Each F In Rs.Fields
       ResultRange.Offset(0, I).Value = F.Name
       I = I + 1
    Next F
     With Range(ResultRange, ResultRange.Offset(0, I))
       .HorizontalAlignment = xlCenter
       .Font.Bold = True
     End With
     ResultRange.Offset(1, 0).CopyFromRecordset Rs
   Else
     ResultRange.CopyFromRecordset Rs
   End If
    Else
   MsgBox "Ошибка при выполнении запроса: " & Chr(13) & Err.Description, vbCritical
   Er = True    End If
    Rs.Close
  End If
  CN.Close
  Set F = Nothing
  Set Rs = Nothing
  Set Cmd = Nothing
  Set CN = Nothing
End Sub


...
Рейтинг: 0 / 0
Изменить ограничение времени выполнения макроса
    #38605459
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо задать Timeout для Command или Connection
...
Рейтинг: 0 / 0
Изменить ограничение времени выполнения макроса
    #38605462
guest12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
googlogmob,
CommandTimeout
...
Рейтинг: 0 / 0
Изменить ограничение времени выполнения макроса
    #38605464
guest12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНадо задать Timeout для Command или Connection
В данном случае надо для Cmd
...
Рейтинг: 0 / 0
Изменить ограничение времени выполнения макроса
    #38605547
googlogmob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое Спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Изменить ограничение времени выполнения макроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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