MS Access 子表单不显示记录且不导航

MS Access subform not displaying records and not navigating

我在 SLD table 和 ORDER table 之间有一对一的关系。 SLD table 是主窗体,ORDER table 是子窗体。主窗体 table 的记录多于子窗体 table。设置了主链接和子链接。我已经反编译并做了压缩和修复。我怀疑我的应用程序出现故障。在那种情况下,这不是第一次(我之前已经修复过)。这次似乎没有任何效果。我也导入了一个新的数据库。

在表单加载时,表单和字段都工作正常。我使用 ['NEXT'] 按钮继续下一条记录,并到达子表单记录的末尾,因此有空白字段。我尝试导航到以前的记录(也使用按钮),但子表单没有 move/navigate。子表单没有任何反应。

它似乎变得更糟了,因为首先它在导航,但它不遵守代码说明当文本框被填充时禁用复选框,反之亦然。

从它的声音来看,问题出在您的“下一步”按钮中,而不是子表单问题。正如您在评论中所述,默认导航允许表单按预期工作。

这个逻辑在你的上一个按钮的 OnClick 事件中出现了吗?同样为了安全起见,我会在下面的代码中添加 OR 语句,以额外确保它捕获空值或空白

If (IsNull(Forms!Order!OrderSubform.Form!txtDate_Of_Order.Value‌​)) OR Forms!Order!OrderSubform.Form!txtDate_Of_Order.Value‌​ <> "" Then 
    Forms!Order!OrderSubform.Form!txtDate_Of_Order.Enabled = False 
    Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Enabled = True 
    Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Value = True 
Else 
    Forms!Order!OrderSubform.Form!txtDate_Of_Order.Enabled = True 
    Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Enabled = False 
    Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Value = False 
End If

我发现 If 语句属于 Form_Current 事件。使用此代码后我不再遇到问题:

Private Sub Form_Current()

If (IsNull(Forms!Order!OrderSubform.Form!txtOrder_Number.Value) Or _
    Forms!Order!OrderSubform.Form!txtOrder_Number.Value = "") Then
        Forms!Order!OrderSubform.Form!txtDate_Of_Order.Enabled = True
        Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Enabled = True
ElseIf (IsNull(Forms!Order!OrderSubform.Form!txtDate_Of_Order.Value) Or _
    Forms!Order!OrderSubform.Form!txtDate_Of_Order.Value = "") Then
        Forms!Order!OrderSubform.Form!txtDate_Of_Order.Enabled = False
        Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Enabled = True
        Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Value = True
Else
    Forms!Order!OrderSubform.Form!txtDate_Of_Order.Enabled = True
    Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Enabled = False
    Forms!Order!OrderSubform.Form!chkbxOrder_Cancelled.Value = False
End If

End Sub