Forms 访问表单:将自定义属性传递到图表
我正在构建一个表单,它应该显示一些直方图来聚合一些查询。由于access对柱状图没有本机支持,因此设置为每个图表的数据源的SQL查询相对冗长且重复。其思想是在xy图中手动绘制直方图中每列的所有角点。目前,我通过以下查询实现了这一点:Forms 访问表单:将自定义属性传递到图表,forms,ms-access,vba,Forms,Ms Access,Vba,我正在构建一个表单,它应该显示一些直方图来聚合一些查询。由于access对柱状图没有本机支持,因此设置为每个图表的数据源的SQL查询相对冗长且重复。其思想是在xy图中手动绘制直方图中每列的所有角点。目前,我通过以下查询实现了这一点: 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 al
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配置发生了八次
我想向可以在查询中引用的图表控件添加自定义属性。有人知道如何做到这一点吗
备注:您可能会建议我使用其他控件来配置装箱。然而,我有很多这样的图表,我想很容易地添加新的单独装箱。如果我有其他用于装箱的控件,我也必须复制它,并在SQL中调整对它们的引用,我认为这不会减少工作量。没有当前图表这样的东西,因为表单可以包含许多图表。但是,您可以识别表单上的所有图表,并对它们执行特定操作:
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
自定义属性是什么意思?这里有一个标记属性,你可以用它来做任何你想做的事情。@ErikvonAsmuth啊,这听起来像是解决方案的前半部分。如何在不明确知道其名称的情况下引用当前图表控件的属性?类似于
Me.Properties(“标记”)
?谁“拥有”一个查询?我想问的是:给定一个具有SQL查询作为其数据源的控件:是否可以在不知道该控件名称的情况下从其关联的SQL中访问该控件的属性?我刚才为您提供了一种迭代表单上所有控件的方法。您可以对报告执行相同的操作。在我的示例中,您可以使用ctl
对象引用控件。我了解您的方法。但是,我希望在不基于Tag属性在VBA中重建整个查询的情况下实现这一点。。。你问了很多不同的问题,其中大部分是不可能的。您不能从queryA查询中引用未知控件。查询不知道它与哪个控件关联。查询与Access的GUI/VBA部分是分开的。