Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 基于调用表单筛选MS Access子报表_Ms Access_Ms Access 2007_Vba - Fatal编程技术网

Ms access 基于调用表单筛选MS Access子报表

Ms access 基于调用表单筛选MS Access子报表,ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,我想在一份包含六个子报告的报告中总结数据: 按部门列出的潜在销售额 按部门分列的实际销售额 按地区划分的潜在销售额 按地区划分的实际销售额 销售助理的潜在销售额 按销售助理列出的实际销售额 每一项都在一列中显示“依据”(部门、地区、员工),在第二列中显示销售价值。报告本身是未绑定的,但由一个表单调用,我也使用该表单调用一个显示每个单独销售数据的详细报告。我希望能够在摘要表单上使用许多相同的过滤器(例如部门、办公室位置、销售日期范围等),我使用这些过滤器过滤详细信息 因为子报表使用GROUP

我想在一份包含六个子报告的报告中总结数据:

  • 按部门列出的潜在销售额
  • 按部门分列的实际销售额
  • 按地区划分的潜在销售额
  • 按地区划分的实际销售额
  • 销售助理的潜在销售额
  • 按销售助理列出的实际销售额
每一项都在一列中显示“依据”(部门、地区、员工),在第二列中显示销售价值。报告本身是未绑定的,但由一个表单调用,我也使用该表单调用一个显示每个单独销售数据的详细报告。我希望能够在摘要表单上使用许多相同的过滤器(例如部门、办公室位置、销售日期范围等),我使用这些过滤器过滤详细信息

因为子报表使用GROUP BY,所以不可能以我可以在filter属性中包含筛选器值的方式查询它们。我必须将它们包括在记录源属性中

我目前的尝试是将表单中的值传递给报表中的字段,以便在子报表的查询中引用,但这似乎不起作用。我还尝试将筛选器字符串传递给报表,并以编程方式将其传递给子报表下面的查询,但该报表不会采用筛选器字符串,并且我目前正在使用OpenArgs传递报表标题的自定义值


我不相信这是解决我的问题的最佳方法,所以我愿意接受其他解决方案,只要它能让我得到相同的最终产品。

您可以创建一个PassThruQuery(ptq\u 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  

试试看。

听起来好像记录源属性是在设计时设置的,您想在运行时设置它。我的Ken Getz sez的旧副本,“在为报表提供数据的查询之前运行报表的打开事件”。我相信我已经在以前的项目中修改了记录源,并且能够在运行时设置它。你的想法是什么?我不确定这是否是你所指的,但它确实让我意识到我应该将代码放在子报表的Report_Open事件中,而不是试图从父报表的Report_Open事件中操作(仍然卸载)子表单。正如您所指出的,Report_Load(报告加载)为时已晚,无法执行任何操作,并且您无法在加载子报告之前对其进行操作,因此唯一有效的事件是子报告的Report_Open(报告打开)。