根据调用表单筛选MS Access子报表

时间:2014-03-17 18:07:24

标签: vba ms-access ms-access-2007 access-vba

我想要在包含六个子报告的单个报告中汇总数据:

  • 按部门划分的潜在销售额
  • 按部门划分的实际销售额
  • 按地区划分的潜在销售额
  • 按地区划分的实际销售额
  • 销售助理的潜在销售
  • 销售助理的实际销售额

其中每个都显示一列中的“by”(部门,区域,关联)和第二列中的销售值。报告本身是未绑定的,但是我还使用一种表格来调用详细报告,显示每个单独销售的数据。我希望能够在用于过滤详细信息的摘要表单中使用许多相同的过滤器(例如部门,办公地点,销售日期范围等)。

因为子报表使用GROUP BY,所以不可能以这样的方式查询它们,即我可以在Filter属性中包含过滤器值。我必须将它们包含在Record Source属性中。

我目前的尝试是将表单中的值传递给报表中的字段,我可以在子报表的查询中引用这些值,但这似乎不起作用。我还尝试将过滤字符串传递给报表,我以编程方式将其传递给子报表底层的查询,但报表不会采用过滤字符串,而且我当前正在使用OpenArgs为报表的标题传递自定义值。

我不相信这是解决我问题的最佳方法,所以只要它能让我获得相同的最终产品,我就会接受替代解决方案。

1 个答案:

答案 0 :(得分:0)

您可以创建PassThruQuery(ptq_mySummary)作为模板,并在运行时替换。

我使用ptq,因为保存后显示不会被包装成不可读性。我也可以放入可替换的参数,例如@geoLevel后来通过

检索它
sSQL = QueryDefs(ptq_mySummary).SQL
sSQL = Replace(sSQL,"@geoLevel", me.arg...)
Me.RecordSource = sSQL

可重复参数可以是任何参数,例如

Where (  nz(Wait.WaitResultAction, '') ='@Res'   
  And       Wait.WaitPriority  IN  ('@Prty') 

我也用它来改变产品/测试服务器,以及DST12 / DST13 / DST14年度数据库

 From [ODBC;Driver=SQL Server;Server=@aServer;Database=@aDatabase;].dbo.STU  

试一试。