繁体   English   中英

从SQL Server通过Excel VBA获取数据时出现运行时错误

[英]Run-time error while fetching data from SQL Server through Excel VBA

我试图从SQL服务器获取一些数据使用VBA excel。 在研究了网络之后,我编写了一个代码,当我执行它时,它会抛出一个代码

运行时错误-'2147217900(80040e14)':
关键字“ON”附近的语法不正确。

从错误看,似乎由于查询中的某些异常而检测到错误。 该查询由DBA团队提供,并包含来自2个不同表的数据。 我使用相同的查询手动将数据从数据库导出到excel,它的工作原理。 我不知道为什么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

期望从SQL Server导出到Excel的数据。

将您的查询拉出并粘贴在此处。 评论如下,但删除了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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM