我正在构建一个表单,该表单应该显示一些聚合某些查询的直方图。由于访问对直方图没有本机支持,因此将SQL查询设置为每个图表的数据源相对冗长且重复。我们的想法是在xy-plot中手动绘制直方图中每列的所有角。目前,我通过以下查询实现此目的:
select
bin(field,50,-1000,1000) - 25 AS bin,
1 as cnt,
3 as ord
FROM tab
GROUP BY bin(field,50,-1000,1000) - 25
union all
select
bin(field,50,-1000,1000) - 25 AS bin,
Count(*) AS cnt,
4 as ord
FROM tab
GROUP BY bin(field,50,-1000,1000) - 25
union all
select
bin(field,50,-1000,1000) + 25 AS bin,
Count(*) AS cnt,
1 as ord
FROM tab
GROUP BY bin(field,50,-1000,1000) + 25
union all
select
bin(field,100,-2000,2000) + 500 AS bin,
1 as cnt,
2 as ord
FROM tab
GROUP BY bin(field,50,-1000,1000) + 25
order by bin, ord
其中bin是一个VBA函数,它根据bin宽度和边界选择bin。您可能会注意到此查询中的分箱配置发生了八次。
我想将自定义属性添加到可在查询中引用的图表控件中。有谁知道如何实现这个目标?
备注:您可能会建议我可以使用其他控件来配置分箱。但是,我有很多这些图表,我想轻松添加具有单独binning的新图表。如果我有其他的binning控件,我也必须复制它并在SQL中调整它们的引用,我认为这不会减少工作量。
答案 0 :(得分:1)
没有当前图表这样的东西,因为表单可以包含许多图表。但是,您可以识别表单上的所有图表,并使用它们执行特定操作:
Dim ctl As Control
For Each ctl In Me.Controls 'Or Forms!SomeForm.Controls
If TypeOf ctl Is Access.ObjectFrame 'OLE object, can be chart
If ctl.OLEClass = "Microsoft Graph Chart"
'Do stuff with the ctl.Tag property
End If
End If
Next