MS Access 表单不显示结果

MS Access Form Not Showing Results

真是莫名其妙。

我有一个设置为连续表单并从查询接收数据的子表单。这是 SQL

SELECT Top 12 Tbl_Parent_ITN.ID, Tbl_Parent_ITN.ITN_Number, Tbl_Child_ITN.ITN, 
Tbl_Child_ITN.Parent_ITN_fk, Tbl_Scope_Rqmts.Completed, Tbl_Scope_Rqmts.Child_ITN_fk, 
Tbl_Lkup_Requirements.Requirement, Tbl_Lkup_Basis.Basis
   FROM Tbl_Parent_ITN INNER JOIN (Tbl_Lkup_Requirements 
     INNER JOIN (Tbl_Lkup_Basis INNER JOIN (Tbl_Child_ITN INNER JOIN Tbl_Scope_Rqmts 
       ON Tbl_Child_ITN.Id = Tbl_Scope_Rqmts.Child_ITN_fk) ON Tbl_Lkup_Basis.ID = Tbl_Scope_Rqmts.Basis_fk) 
        ON Tbl_Lkup_Requirements.ID = Tbl_Scope_Rqmts.Requirements_fk) 
         ON Tbl_Parent_ITN.ID = Tbl_Child_ITN.Parent_ITN_fk
           WHERE (((Tbl_Parent_ITN.ID)=[Forms]![Frm_Parent_ITN_Main]![parent_id]));

SQL 的 where 子句中的条件是根据此表单之前的表单中的控件传递的。该值是 parent table 的主键,它与多个 child table 连接以获得子表单的所有数据。

当我用一条包含 children 的记录打开时,它工作得很好,表格中填充了 12 条记录。但是,当我对下一个 parent 记录执行 运行 相同操作时,即使 parent 有 4 个 child 记录,我也看不到任何结果。

真正令人困惑的是,当我 运行 独立于打开表单进行查询时,它根据第二条 parent 记录为我提供了我想要的确切结果。此外,如果我将子表单更改为数据表,我仍然得不到任何记录;但是,如果我 select 那些列 headers (但表格本身没有显示任何记录),我可以在数据表表格的过滤器中看到结果。子表单的属性在这两种情况下完全相同,所以我不明白是什么导致记录显示在第一种情况下而不是第二种情况下?

几点建议: 1. 尝试做一个 Me.Refresh 看看会发生什么。 2. 在窗体的OnError 事件中打一个断点,看看有没有错误。 3. 检查是否有任何其他数据源可能正在锁定任何应刷新的数据。 4. 验证定义数据的 parent-child 关系的 no 属性是否在运行时被更改。 5. 检查父记录 ID 是否在表单的 OnCurrent 事件中刷新。

希望这对您有所帮助, 放克灵魂兄弟