我需要第二眼看看嵌入在VBA代码中的SQL查询。我正在创建一个MS Access应用程序,该应用程序返回基于to&amp ;;的数据集。来自用户在特定日期选择器框中设置的日期标准。您看到的SQL查询实际上已在MS Access查询设计视图中静态测试。我用实际日期测试了它,你看到了Me.from_filter和Me.to_filter。它工作得很好!如果您选择了2015年1月1日至2015年5月1日之类的内容,则会返回您需要的所有月份的列。完善。现在当我将它嵌入VBA代码并将其分配给控制变量时,我得到了运行时错误' 2342':RunSQL操作需要一个由SQL语句组成的参数。 #34;有人可以请注意这个并告诉我可能出现的问题吗?
Option Compare Database
Option Explicit
Dim strSQL As String
Private Sub Command0_Click()
If IsNull(Me.from_filter) Or IsNull(Me.to_filter) Then
MsgBox "You have not entered a start date or end date"
Else
strSQL = "TRANSFORM Sum(dbo_ASSET_HISTORY.MARKET_VALUE) AS SumOfMARKET_VALUE " _
& "SELECT [dbo_FIRM]![NAME] AS [FIRM NAME], dbo_FUND.CUSIP, dbo_FUND.FUND_NAME, dbo_FUND.PRODUCT_NAME " _
& "FROM (dbo_ASSET_HISTORY INNER JOIN dbo_FIRM ON dbo_ASSET_HISTORY.FIRM_ID = dbo_FIRM.FIRM_ID) INNER JOIN dbo_FUND ON dbo_ASSET_HISTORY.FUND = dbo_FUND.FUND " _
& "WHERE (((dbo_FIRM.Name) Like 'Voya F*') And ((dbo_ASSET_HISTORY.PROCESS_DATE) >= #" & Me.from_filter & "# And (dbo_ASSET_HISTORY.PROCESS_DATE) <= #" & Me.to_filter & "#)) " _
& "GROUP BY [dbo_FIRM]![NAME], dbo_FUND.CUSIP, dbo_FUND.FUND_NAME, dbo_FUND.PRODUCT_NAME " _
& "PIVOT [dbo_ASSET_HISTORY]![ASSET_YEAR] & '-' & [dbo_ASSET_HISTORY]![ASSET_MONTH];"
DoCmd.RunSQL (strSQL)
End If
End Sub
答案 0 :(得分:3)
RunSQL用于按照Microsoft定义https://msdn.microsoft.com/en-us/library/office/ff194626.aspx运行更新,插入,选择,删除等操作查询,您应该使用OpenQuery或类似命令来运行查询。