Мне требуется возможность передать список строк в соединение данных SQL, чтобы убедиться, что набор данных полностью существует в базе данных. Первоначально пытался передать набор как один параметр в предложении IN в коде SQL, однако параметры не работают для предложений IN в соединениях Excel SQL. Это заставило меня пройти через каждую строку в наборе в параметр в предложении LIKE в SQL, который возвращает нужные мне данные. Проблема, с которой я сталкиваюсь, заключается в том, что когда я возвращаю свою таблицу в Excel с результатами запроса SQL (с одним пропущенным параметром), когда я перехожу к copy_paste из другой таблицы, чтобы получить полный список, в отладке В этом режиме код выполняется должным образом, однако в режиме выполнения код, похоже, копирует и вставляет результаты самого первого обновления подключения к данным.
Я пробовал несколько разных методов copy_paste, несколько разных назначений значений, и я пытался добавить команды ожидания, но безрезультатно. Даже когда я пытаюсь использовать другой подход (подсчитать количество строк в подключении к данным - если строк нет или функция count возвращает ошибку, скажите, что это пропущенная запись). Даже при таком подходе он работает в режиме отладки, но просто пропускает его во время выполнения.
Public Sub GetTechLog()
Dim Comp As Worksheet
Dim TempDC As Worksheet
Set Comp = Sheets("Comparison")
Set TempDC = Sheets("Temp")
Dim FlyDocData As ListObject
Dim TRAXData As ListObject
Dim TempData As ListObject
Set FlyDocData = Comp.ListObjects("FlyDocs") 'Data to validate exists in TRAX
Set TRAXData = Comp.ListObjects("TRAX") 'Table to hold CopyPaste data from TRAX
Set TempData = TempDC.ListObjects("Table_TempFlyDocs") 'Data Connection to the database (TRAX)
Dim i As Integer
For i = 1 To FlyDocData.DataBodyRange.Rows.Count
TempDC.Range("A10").Value = FlyDocData.DataBodyRange(i, 1).Value 'This is the parameter passed into the SQL data connection
ActiveWorkbook.RefreshAll 'Refresh the SQL Data Connection and Table_TempFlyDocs
Application.Wait (Now + TimeValue("00:00:05")) 'My attempt at adding Wait function to ensure the right data is copy pasted
TempData.DataBodyRange.Copy 'Copy the newest refresh of the SQL data connection
Application.Wait (Now + TimeValue("00:00:05"))
Comp.Range("C" & i + 1).PasteSpecial xlPasteValuesAndNumberFormats 'Paste this information just into a cell in a different sheet
Application.Wait (Now + TimeValue("00:00:01"))
Next i
End Sub
Я надеюсь скопировать_paste значение каждого обновления подключения к данным в отдельную таблицу или лист, чтобы получить запись всей информации по списку данных в таблице FlyDocData.
Это мой первый пост, поэтому прошу прощения, если есть какие-либо вопиющие упущения информации / недоразумений. Очень надеюсь, что кто-то может мне помочь или предложить какой-то обходной путь, о котором я еще не думал. Расстраивает, что ваш код работает в отладчике, а не когда вы пытаетесь его запустить!