Ms access 如果子窗体没有数据,则父窗体为空

Ms access 如果子窗体没有数据,则父窗体为空,ms-access,vba,Ms Access,Vba,我有一个固定的形式,还有一个连续的形式。在子窗体没有数据之前,一切正常。 下面是包含数据的子窗体 图1 如果子窗体中没有数据,则窗体将变成这样。 图2 我在我的主窗体上的当前事件中使用以下代码: Function RefreshCOunt() If Me.frmVerifyEquipmentSub.Form.Recordset.RecordCount = 0 Then Me.frmVerifyEquipmentSub.Visible = False Me.txtTotal =

我有一个固定的形式,还有一个连续的形式。在子窗体没有数据之前,一切正常。 下面是包含数据的子窗体
图1

如果子窗体中没有数据,则窗体将变成这样。
图2

我在我的主窗体上的当前事件中使用以下代码:

Function RefreshCOunt()
If Me.frmVerifyEquipmentSub.Form.Recordset.RecordCount = 0 Then

    Me.frmVerifyEquipmentSub.Visible = False
    Me.txtTotal = 0
    Me.Refresh

Else
    Me.frmVerifyEquipmentSub.Visible = True
    Me.frmVerifyEquipmentSub.Form.Requery
    Forms![test3].txtTotal = Me.frmVerifyEquipmentSub.Form.txtSum
    Me.Refresh
    Forms![test3].Refresh

End If
End Function

Private Sub Form_Current()
Call RefreshCOunt
End Sub

Private Sub Form_GotFocus()
Call RefreshCOunt
End Sub
这是我的子窗体上的代码,当我的用户单击“保存”按钮时,此函数将运行

Function RefreshCOunt()
If Me.txtCount = 0 Then
    Forms![test3].SetFocus
Else
    Me.Requery
    Forms![test3].txtTotal = Me.txtSum
    Me.Refresh
    Forms![test3].Refresh

End If
End Function
我在子窗体后面有一个文本,上面写着“没有可用的数据显示”

这种情况下的两个问题是:

  • 空表单视图,如图2所示(已解析,因为我已将主表单的记录源链接到也在子表单中使用的表)

  • 用户验证所有设备后隐藏子窗体。 -目前,我的代码只在第一次加载表单时有效。 -一旦用户验证了所有设备,子窗体就不会隐藏


  • 我知道如何使用HAsData函数在报表中执行此操作,但我不确定如何在窗体中执行此操作。

    听起来您对主窗体的查询与子窗体的表(或此表的查询)有一个内部联接


    删除此联接或将其更改为外部联接。

    表单是否具有正确的子/父关系?如果是这样,父窗体应该独立于是否在子窗体上返回数据,因此无论发生什么情况,这些字段都应该填充。我刚刚意识到,我的主窗体链接到了一个记录源,该记录源与导致问题的子窗体相同,每次都会这样做。哦,是的!我没有意识到我的主窗体将它的记录源链接到与子窗体相同的表。现在我从主窗体中删除了记录源。如果没有数据,第二部分就是隐藏子表单。当前,当用户验证了所有记录后,它不会隐藏子窗体。我将编辑我的帖子,通过将焦点设置回主窗体并运行刷新计数功能来解决此问题