Ошибка во время выполнения при получении данных с SQL Server через Excel VBA - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь получить некоторые данные с сервера SQL, чтобы преуспеть с помощью VBA. После исследования в Интернете я собрал код, и когда я его выполняю, он выдает

Ошибка времени выполнения -'2147217900 (80040e14) ':
Неверный синтаксис рядом с ключевым словом «ON».

Из ошибки кажется, что ошибка обнаружена из-за некоторого отклонения в запросе. Запрос был предоставлен командой DBA и включает данные из 2 разных таблиц. Я использовал тот же запрос, чтобы вручную экспортировать данные из базы данных, и это работает. Я не знаю, почему VBA выдает ошибку. Любая помощь будет оценена. Спасибо.

Sub sync_data_vba_sqlserver()

Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sqlQry As String, strCon As String
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
ActiveSheet.Cells.ClearContents

sqlQry = "SELECT A.PUMA_TSD_PollID AS ID, PUMA_TSD_FieldName AS Field_Name,PUMA_TSD_FieldValue AS Field_Value,PUMA_TSD_IPAddress AS IP_Address,PUMA_TSD_PollDate AS Poll_Date,PUMA_TSD_Channel AS Channel,PUMA_TSD_MachineName AS Machine_Name,PUMA_TSD_TestBedType AS TestBedType FROM [WWW_AUXMOD].[dbo].[tblPUMA_TSD_AVLLynx] A INNER JOIN [WWW_AUXMOD].[dbo].tblPUMA_TSD_AVLLynxData L ON A.PUMA_TSD_PollID = L.PUMA_CH_TSD_PollID ON A.PUMA_TSD_PollID = L.PUMA_CH_TSD_PollID WHERE PUMA_TSD_MachineName != 'ELMS_SYSTEM' AND PUMA_TSD_PollDate >= '6/2/19';"


'---- Replace below highlighted names with the corresponding values

strCon = "Provider=sqloledb;Data Source=ECCDB1503.MD3Q.FORD.COM;Initial Catalog=WWW_AUXMOD;Integrated Security=SSPI"

'---  Open   the above connection string.

con.Open (strCon)

    rs.Open sqlQry, con
    ActiveSheet.Cells(2, 1).CopyFromRecordset rs
    rs.Close

con.Close
Set rs = Nothing


End Sub

Ожидается экспорт данных в Excel из SQL Server.

1 Ответ

0 голосов
/ 05 июня 2019

Вытащил ваш запрос и вставил сюда. Комментарий ниже, но удален ON и изменен на AND. У вас было 2 ON подряд.

SELECT A.PUMA_TSD_PollID AS ID, PUMA_TSD_FieldName AS Field_Name,PUMA_TSD_FieldValue AS Field_Value,PUMA_TSD_IPAddress AS IP_Address,PUMA_TSD_PollDate AS Poll_Date,PUMA_TSD_Channel AS Channel,
PUMA_TSD_MachineName AS Machine_Name,PUMA_TSD_TestBedType AS TestBedType 
FROM [WWW_AUXMOD].[dbo].[tblPUMA_TSD_AVLLynx] A 
INNER JOIN [WWW_AUXMOD].[dbo].tblPUMA_TSD_AVLLynxData L ON A.PUMA_TSD_PollID = L.PUMA_CH_TSD_PollID 
    -- change ON to AND HERE  (ON IS REMOVED)
    --AND A.PUMA_TSD_PollID = L.PUMA_CH_TSD_PollID (Redundant statement) 
WHERE PUMA_TSD_MachineName != 'ELMS_SYSTEM' 
AND PUMA_TSD_PollDate >= '6/2/19'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...