为什么子表单不显示所有结果

Why does subform not display all results

我有一个带有各种下拉菜单的访问表单。该表单包含子表单中的报告。该报告基于以下 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])) 时,查询在手动打开时显示所有结果,如我所料。然而基于此查询的子表单没有显示任何结果。

问题:为什么子表单不显示任何结果,我怎样才能让子表单显示它们?

更新二: 我已经测试并发现,如果我查看子表单所基于的报告,则会显示正确的结果。如下面的评论所述,当我 select 编辑 "ALL" 以外的任何内容时,子表单报告按预期工作。在子表单中选择的所有其他项目都会显示结果,只是当我 select 选项 "ALL" 时不显示。这些结果没有显示在子查询中,但奇怪的是,如果我手动打开报告,它们确实会显示。所以也许问题与子表单有某种联系?

你是re-querying更新后的子报表吗? 您的代码应包含以下内容,其中 rvSubReportView 是 sub-report 对象:

rvSubReportView.Report.Requery

这将在主窗体的 ComboBox 控件的 AfterUpdate() 函数中。

我仍然不明白为什么会这样,但我的问题的答案是 必须调整主窗体的查询以包含新语句。尽管子表单未链接到主表单。

如我的更新所述,当我手动打开查询时,它工作正常。当我打开基于查询的报告时,它工作正常。只有当我试图通过子表单打开报表时,它才没有显示预期的结果。

这最终让我意识到,在某些情况下,可能会以某种方式限制正在显示的记录集。

我设置的主表单本身就是基于查询的。我没有更新该查询以包含新的 Like IIf([Forms]![frm_ClientModel]![cmbPhase]="ALL","*",[Forms]![frm_ClientModel]![cmbPhase])) 命令。尽管我的子表单没有链接到主表单,但它限制了可显示的记录集。