我有一些不太级联的值提示,但它们是相关的。举个例子:
因此,如果您在提示1中选择了Jim,则只有Jim负责的轮班主管才会填充提示2,依此类推值。对于实际报告而言,真正重要的唯一提示是对员工的最终提示,其余的只是过滤相关员工的列表。
我遇到的问题是所有提示都是可选的,具体取决于你想要范围的范围,而它所查看的查询实际上只是查看最终的提示值。如果最后一个没有填写,但让我们说班次经理是,我怎样才能让报告只显示我选择的轮班主管下的员工?
换句话说,如果层次结构树看起来像这样:
其中每个级别代表不同的值提示,如果我选择Jim作为经理,Teri作为轮班主管,我的报告目前显示Dave,Bill,Amanda和Joel的结果,但我只想见戴夫和比尔。
我有值提示适当过滤,那么如果没有明确选择,我怎样才能让我的报告看到最终提示中的可用选项,而不是根本不过滤员工?
答案 0 :(得分:1)
通常,这是通过在所有提示中添加静态值来实现的,这些提示名为" All"。如果你选择"全部"在最后的提示中,然后在where子句中添加一些逻辑以识别它。例如:
([ManagerID] = ?pManagerID? OR ?pManagerID?='All')
AND
([SupervisorID] = ?SupervisorID? OR ?SupervisorID?='All')
AND
([EmployeeID] = ?EmployeeID? OR ?EmployeeID?='All')
然后剩下的就是使用提示宏等所有小提琴,以便根据需要使提示可选。
例如,如果你选择一个特定的经理和一个特定的主管,那么选择"全部"在员工提示中,结果如下:
([ManagerID] = '050' OR ?pManagerID?='All')
AND
([SupervisorID] = '012' OR ?SupervisorID?='All')
AND
([EmployeeID] = 'All' OR ?EmployeeID?='All')
简化这意味着:
([ManagerID] = '050')
AND
([SupervisorID] = '012')
所以它不会挑选所有员工 - 它只会选择带有您选择的ManagerID和SupervisorID的记录
答案 1 :(得分:0)
您可以利用OR的工作方式构建解决方案。由于OR逻辑构造只需要一个子句来返回true,因此您可以使用此行为从特定到一般进行测试,并在适当级别停止。
([EmployeeID] is not missing AND [EmployeeID] = ?EmployeeID?)
OR
([SupervisorID] is not missing AND [SupervisorID] = ?SupervisorID?)
OR
([ManagerID] is not missing AND [ManagerID] = ?ManagerID?)
如果选择了员工,则使用OR中的第一个子句,并过滤特定员工。
如果没有选择员工但是主管是,那么第一个子句将返回false并且将使用第二个子句。
如果没有选择员工和主管,但是经理是,则第一和第二条款将返回false并使用最后一个条款。