Charts MS图表控件在rowsource包含WHERE子句时显示空白

Charts MS图表控件在rowsource包含WHERE子句时显示空白,charts,controls,Charts,Controls,第一次海报和MS ACCESS的新功能。我使用的是MS ACCESS 2002-2003数据库格式。 我有一个主窗体,其中有一个选项卡控件。在其中一个选项卡中,我有一个子窗体,在其中我放置了另一个选项卡控件。在其中一个选项卡中,我有一个包含类别列表的组合框,我正试图使用VBA将该值传递给MS图表控件。只要没有WHERE子句,图表就会更新(它将显示所有类别)。如果我从WHERE子句中删除变量并在中键入值,它仍然不起作用。当我运行Debug.Print strSQLPIE时。strSQLPIE值正确

第一次海报和MS ACCESS的新功能。我使用的是MS ACCESS 2002-2003数据库格式。 我有一个主窗体,其中有一个选项卡控件。在其中一个选项卡中,我有一个子窗体,在其中我放置了另一个选项卡控件。在其中一个选项卡中,我有一个包含类别列表的组合框,我正试图使用VBA将该值传递给MS图表控件。只要没有WHERE子句,图表就会更新(它将显示所有类别)。如果我从WHERE子句中删除变量并在中键入值,它仍然不起作用。当我运行Debug.Print strSQLPIE时。strSQLPIE值正确显示SQL语句和WHERE子句。然而,图表一直显示为空白。如果复制该SQL语句并将其放入新查询中,则查询运行良好

我已经将问题归结为图表控件的ROWSOURCE属性中SQL语句的WHERE子句。我错过了什么

代码如下:

Dim DB As Database
Dim rst As Recordset
Dim strSQLSB As String ' subform datasheet sql
Dim strSQLPIE As String ' chart control sql
Dim SelCatStr As String ' combobox for categories
Dim SelYrStr As String ' not being used for now
Dim SelYrMtStr As String ' not being used for now
SelCatStr = Me.PIEChart.Value ' combobox selected value
'SelYrStr = Me.SelectYear.Value ' not being used for now
'SelYrMtStr = Me.SelectYearMonth.Value ' not being used for now

strSQLSB = "SELECT UNIONMASTER.ByMonth, UNIONMASTER.Category, UNIONMASTER.Category1, UNIONMASTER.AdjustedAmount " & _
"FROM UNIONMASTER " & _
"WHERE UNIONMASTER.Category1= '" & SelCatStr & "';" THIS UPDATES THE DATASHEET IN ANOTHER SUBFORM IN THE SAME TAB CORRECTLY ON CHANGE OF COMBOBOX.

strSQLPIE = "SELECT UNIONMASTER.Category1, Sum(UNIONMASTER.AdjustedAmount) AS TotalSpent " & _
"FROM UNIONMASTER " & _
"WHERE UNIONMASTER.Category1= '" & Me.PIEChart.Value & "';"
我尝试在WHERE子句中使用SelCatStr和Me.PIEChart.Value,但仍然无法正常工作。我甚至试着输入一个值,但仍然不起作用。调试窗口正确显示SQL和where子句,但只要where子句存在,图表就会显示为空白

Me.PIESubform.Form.RecordSource = strSQLSB
Me.[PIESubform].Form.Requery

Debug.Print strSQLPIE
Me.[CatChart].RowSource = strSQLPIE
Me.[CatChart].Requery
我认为问题与图表的rowsource设置中的WHERE子句有关。正如我所说的,当我删除where子句时,图表正确地显示了所有类别,当我粘贴where子句(带有值或变量)时,它显示为空白

如果我使用以下方法,图表会起作用:

strSQLPIE = "SELECT UNIONMASTER.Category1, Sum(UNIONMASTER.AdjustedAmount) AS TotalSpent " & _
"FROM UNIONMASTER " & _
"GROUP BY UNIONMASTER.Category1 ;"

Me.CatChart.RowSource = strSQLPIE
Me.CatChart.Requery

有什么想法吗?

您的查询中可能缺少“groupby”子句。您的查询应该是这样的

strSQLPIE = "SELECT UNIONMASTER.Category1, " &_ 
    "Sum(UNIONMASTER.AdjustedAmount) AS TotalSpent " & _
    "FROM UNIONMASTER " & _
    "WHERE UNIONMASTER.Category1= '" & Me.PIEChart.Value & "';" &_
    "GROUP BY UNIONMASTER.Category1 ;"