代码之家  ›  专栏  ›  技术社区  ›  ASH

Excel VBA将参数传递到OLEDBConnection

  •  2
  • ASH  · 技术社区  · 6 年前

    在Excel工作簿中,我有几个到SQL Server数据库的连接。我以为我可以运行一个像下面这样的小脚本,但它不是我想要的。我想刷新OLEDB连接,并传入StartDate和EndDate,但它实际上并没有与连接通信。

    Sub RefreshWithDates()
    
    Dim StartDate As Date
    Dim EndDate As Date
    
    StartDate = Sheets("Pivot_Summary").Range("B1").Value
    EndDate = Sheets("Pivot_Summary").Range("B2").Value
    
        With ActiveWorkbook.Connections("FMDDATA_HIST_SPLIT").OLEDBConnection
            .CommandText = "SELECT * FROM RECONCILIATION.dbo.TBL_FMDDATA_HIST_SPLIT Where AsOfDate between '" & StartDate & "' & " And " & '" & EndDate & "'"
            ActiveWorkbook.Connections("FMDDATA_HIST_SPLIT").Refresh
        End With
    
    End Sub
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   ascripter    6 年前

    你的 .CommandText 字符串的周围有一个错误 AND (注意它的颜色是蓝色的……它正在解析为VBA关键字。) And ).

    应该是:

    "EXEC SELECT * FROM RECONCILIATION.dbo.TBL_FMDDATA_HIST_SPLIT 
    WHERE AsOfDate between '" & StartDate & "'" & " AND " & "'" & EndDate & "'"