我有一个包含各种下拉菜单的访问表单。表单包含子表单中的报表。该报告基于以下SQL语句,该语句引用主窗体上的下拉列表:
SELECT imp_rule_CURRENT.target
,imp_rule_CURRENT.Phase
,imp_phase.SortOrder
,imp_rule_CURRENT.Solicitation
,imp_rule_CURRENT.Qualification
,imp_rule_CURRENT.Activity
,imp_rule_CURRENT.ClientLocation
,imp_rule_CURRENT.ProviderLocation
,imp_rule_CURRENT.Answer
,imp_rule_CURRENT.Comment
,imp_ActivityList_Test_PB_MetaversionC2.HeadingText
,imp_answer.full_name
,imp_answer.icon2
,imp_phase.Chapter
,tbl_Country.short_name
,IIf([Forms]![frm_ClientModel]![ckbYesOnly], InStr([Answer], "is_yes") > 0, - 1) AS Is_Yes
FROM imp_phase
INNER JOIN (
imp_answer INNER JOIN (
tbl_Country INNER JOIN (
imp_ActivityList_Test_PB_MetaversionC2 INNER JOIN imp_rule_CURRENT
ON imp_ActivityList_Test_PB_MetaversionC2.SignatureTagSet = imp_rule_CURRENT.Activity
) ON tbl_Country.ISO_Country = imp_rule_CURRENT.target
) ON imp_answer.code_name = imp_rule_CURRENT.Answer
) ON imp_phase.code_name = imp_rule_CURRENT.Phase
WHERE (
((imp_rule_CURRENT.target) = [Forms]![frm_ClientModel]![cmbCountry])
AND ((imp_rule_CURRENT.Phase)
LIKE IIf([Forms]![frm_ClientModel]![cmbPhase] = "ALL", "*", [Forms]![frm_ClientModel]![cmbPhase]))
AND ((imp_rule_CURRENT.Solicitation) = [Forms]![frm_ClientModel]![txt_Initiative])
AND ((imp_rule_CURRENT.Qualification) = [Forms]![frm_ClientModel]![txt_Qualification])
AND ((imp_rule_CURRENT.ClientLocation) = [Forms]![frm_ClientModel]![txt_MeetingLocation_Client])
AND ((imp_rule_CURRENT.ProviderLocation) = [Forms]![frm_ClientModel]![txt_MeetingLocation_Bank])
AND ((imp_rule_CURRENT.Answer) <> "is_not_applicable")
AND ((IIf([Forms]![frm_ClientModel]![ckbYesOnly], InStr([Answer], "is_yes") > 0, - 1)) = True)
)
ORDER BY imp_phase.SortOrder;
当我打开表单并且SQL语句的以下部分评估为True Like IIf([Forms]![frm_ClientModel]![cmbPhase]="ALL","*",[Forms]![frm_ClientModel]![cmbPhase]))
时,查询在手动打开时会显示所有结果,如我所料。然而,基于此查询的子表单没有显示结果。
问题:为什么子窗体不会显示任何结果?如何让子窗体显示它们?
更新2: 我已经测试并发现如果我查看子表单所基于的报告,那么正确的结果显示。如下面的评论中所述,当我选择&#34; ALL&#34;以外的任何内容时,子表单报告按预期工作。显示子表单中选中的每个其他项目的结果,而不是在我选择选项&#34; ALL&#34;时。这些结果没有显示在子查询中,但奇怪的是,如果我手动打开报告,它们会显示出来。那么问题可能与子表单有某种联系?
答案 0 :(得分:1)
我仍然不明白为什么会出现这种情况,但我的问题的答案是必须调整mainform的查询以包含新语句。尽管子表单不是与主要表格相关联。
如我的更新中所述,当我手动打开查询时,它工作正常。当我打开基于查询的报表时,它运行正常。只有当我试图通过子表单打开报表时才会显示预期的结果。
这最终让我了解到,在某些情况下,可能会以某种方式限制所显示的记录集。
我设置的主要表单本身就是基于查询。我没有更新该查询以包含新的Like IIf([Forms]![frm_ClientModel]![cmbPhase]="ALL","*",[Forms]![frm_ClientModel]![cmbPhase]))
命令。尽管我的子表单没有链接到主表单,但它限制了可用于显示的记录集。
答案 1 :(得分:0)
您是否在更新后重新查询子报表?
您的代码应包含以下内容,其中rvSubReportView
是子报表对象:
rvSubReportView.Report.Requery
这将位于主窗体AfterUpdate()
控件的ComboBox
函数中。