Здравствуйте!
Подскажите пожалуйста, столкнулся со сложностью отработать в цикле ошибочный запрос, который делается в поверквери.
Смысл логики:
1 - Запускаем средствами VBA запрос PowerQuery
2 - В случае выполнения кода нормально идем дальше.
3 - В случае если запрос не выполнился через кнопку Да/Нет запрашиваем повторную возможность выполнить запрос PowerQuery
4 - Если кнопку нажали Да - делаем повторный запрос PowerQuery ловим ошибку - Если кнопку нашали НЕТ очищаемся и выходим из бесконечного цикла.
Суть проблемы:
Первый раз ошибка обрабатывается нормально, мы переходим в обработчик ошибки, если нажимаем повторно ДА, то ошибочный запрос PQ не проходит повторно через обработчик ошибок и вываливается в Дебагер.
К чему все это мне нужно.
Мне надо запустить запрос PQ и выгрузить данные на сервер, в PQ запускается обработка которая выгружает данные подготовленные макросом через форму ввода на сервер.
Я точно знаю что сервер 100% времени доступен и надежен, однако могут быть иногда срывы коннекта по вине сети, и это единовременные короткие глюки. Сеть перезагружается автоматически если это происходит, но в течении минуты коннекта с сервером не будет и мне нужно не прерывая цикл и код сделать просто еще одну, может быть 2 или три попытки загрузки данных на сервер, даже если сеть недоступна сейчас через минуту все наладится.
Код приведен ниже, не получается решить проблему, пожалуйста подмогните.
Пробовал бесконечный For, теже яйца, только в профиль.
Первый ErrorHandl работает нормально, далее при повторной попытке дебагер также ругается на ошибку возникающую в запросе PQ
На всякий случай код, по которому происходит обновление запросов powerQuery
Подскажите пожалуйста, столкнулся со сложностью отработать в цикле ошибочный запрос, который делается в поверквери.
Смысл логики:
1 - Запускаем средствами VBA запрос PowerQuery
2 - В случае выполнения кода нормально идем дальше.
3 - В случае если запрос не выполнился через кнопку Да/Нет запрашиваем повторную возможность выполнить запрос PowerQuery
4 - Если кнопку нажали Да - делаем повторный запрос PowerQuery ловим ошибку - Если кнопку нашали НЕТ очищаемся и выходим из бесконечного цикла.
Суть проблемы:
Первый раз ошибка обрабатывается нормально, мы переходим в обработчик ошибки, если нажимаем повторно ДА, то ошибочный запрос PQ не проходит повторно через обработчик ошибок и вываливается в Дебагер.
К чему все это мне нужно.
Мне надо запустить запрос PQ и выгрузить данные на сервер, в PQ запускается обработка которая выгружает данные подготовленные макросом через форму ввода на сервер.
Я точно знаю что сервер 100% времени доступен и надежен, однако могут быть иногда срывы коннекта по вине сети, и это единовременные короткие глюки. Сеть перезагружается автоматически если это происходит, но в течении минуты коннекта с сервером не будет и мне нужно не прерывая цикл и код сделать просто еще одну, может быть 2 или три попытки загрузки данных на сервер, даже если сеть недоступна сейчас через минуту все наладится.
Код приведен ниже, не получается решить проблему, пожалуйста подмогните.
Пробовал бесконечный For, теже яйца, только в профиль.
Первый ErrorHandl работает нормально, далее при повторной попытке дебагер также ругается на ошибку возникающую в запросе PQ
Код |
---|
' обработка запроса PQ StartRefresh: On Error GoTo ErrorHandler3 ' Insert code that might generate an error here 'В модуле запускаем обновление запросов PQ Module1: Refresh ' Exit Sub ErrorHandler3: ' Insert code to handle the error here If Err.Number Then 'Повторный запрос Dim answer1 As Integer answer1 = MsgBox("Повторная попытка?", vbQuestion + vbYesNo + vbDefaultButton2, "Повторная попытка?") If answer1 = vbYes Then GoTo StartRefresh Else GoTo Finish End If End If Resume Next Finish: |
Код |
---|
Public Sub Refresh() SnyatZaschituOdinParol For Each objConnection In ThisWorkbook.Connections 'Get current background-refresh value bBackground = objConnection.OLEDBConnection.BackgroundQuery 'Temporarily disable background-refresh objConnection.OLEDBConnection.BackgroundQuery = False 'Refresh this connection objConnection.Refresh 'Set background-refresh value back to original value objConnection.OLEDBConnection.BackgroundQuery = bBackground Next 'MsgBox "Finished refreshing all data connections" PostavitZaschituOdinParol 'UserForm1.Show vbModel End Sub |