【问题标题】:Why does subform not display all results为什么子窗体不显示所有结果
【发布时间】:2018-03-28 15:41:09
【问题描述】:

我有一个带有各种下拉菜单的访问表单。该表单包含一个子表单中的报表。该报告基于以下 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: 我已经测试并发现,如果我查看子表单所基于的报告,则会显示正确的结果。正如下面的评论中所指出的,当我选择“ALL”以外的任何内容时,子表单报告会按预期工作。结果显示在子表单中选择的每个其他项目,只是当我选择选项“全部”时不显示。这些结果未显示在子查询中,但奇怪的是,如果我手动打开报告,它们确实会显示。那么问题可能与子表单有关?

【问题讨论】:

  • 格式良好的 SQL 让一切变得更容易,无论是阅读还是写作。
  • 你的意思是在 SO 上还是我的 SQL 本身格式不正确?如果在这里,我怎样才能更好地格式化它?我自己也觉得很烦。
  • @rohrl77:您可以使用第三方插件在 notepad++ 中进行 SQL 格式化。这是链接:- github.com/sqlparser/isf_notepad
  • @GauravS 谢谢!我无法在工作中安装任何东西,但我会在我的家用电脑上试一试。看起来很有用!
  • 只需做换行和单步。

标签: sql ms-access ms-access-2010


【解决方案1】:

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

正如我在更新中提到的,当我手动打开查询时,它运行良好。当我打开基于查询的报告时,它运行良好。只有当我尝试通过子表单打开报表时,它才没有显示预期的结果。

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

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

【讨论】:

  • 我想对所有阅读我的问题并试图提供解决方案的人说“谢谢”!
【解决方案2】:

您是否在更新后重新查询子报表? 您的代码应包含以下内容,其中rvSubReportView 是子报告对象:

rvSubReportView.Report.Requery

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

【讨论】:

  • 我重新查询了完整的表格。更改任何控制元素后都会触发重新查询。我应该注意,当我选择“ALL”以外的任何内容时,查询在子表单中起作用。显示任何其他选择的结果。
猜你喜欢
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2021-12-17
  • 2012-04-08
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多