为什么子表单不显示所有结果
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]))
命令。尽管我的子表单没有链接到主表单,但它限制了可显示的记录集。
我有一个带有各种下拉菜单的访问表单。该表单包含子表单中的报告。该报告基于以下 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]))
命令。尽管我的子表单没有链接到主表单,但它限制了可显示的记录集。