Ms access 对子窗体的窗体属性的引用无效(ms Access 2007)

Ms access 对子窗体的窗体属性的引用无效(ms Access 2007),ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,我正在使用一种类似于Remou回答中的技术来操纵子窗体上控件的属性。只要父窗体的记录集至少有一条记录,就可以正常工作。如果父窗体没有记录,我会得到: 错误2455,“您输入的表达式对属性窗体/报表的引用无效。” 当我尝试递归调用时抛出错误。下面是代码的简化版本(我去掉了错误处理&还有几个例子,包括一个Else)。此代码位于模块中,并从我的应用程序中大多数表单的加载事件调用: Public Sub LockUnlockForm(frmLoad As Form) Dim ctl As Contro

我正在使用一种类似于Remou回答中的技术来操纵子窗体上控件的属性。只要父窗体的记录集至少有一条记录,就可以正常工作。如果父窗体没有记录,我会得到:

错误2455,“您输入的表达式对属性窗体/报表的引用无效。”

当我尝试递归调用时抛出错误。下面是代码的简化版本(我去掉了错误处理&还有几个例子,包括一个Else)。此代码位于模块中,并从我的应用程序中大多数表单的加载事件调用:

Public Sub LockUnlockForm(frmLoad As Form)

Dim ctl As Control

    For Each ctl In frmLoad.Controls
        With ctl
            Select Case .ControlType
                Case acTextBox, acComboBox, acCheckBox
                    .Locked = Not gblnAuthorized
                Case acSubform
                    LockUnlockForm .Form  '<--- this line errors
            End Select
        End With
    Next

End Sub
公共子锁解锁表单(frmLoad As表单)
Dim-ctl作为对照
对于frmLoad.控件中的每个ctl
带ctl
选择Case.ControlType
案例acTextBox、acComboBox、acCheckBox
.Locked=未授权
案例子表单
LockUnlockForm.Form'

确定记录的记录计数 窗体的记录集,并仅运行 记录计数>0时的每个循环


我回答这个问题是为了让其他有同样问题的用户能够轻松确定所提供的答案。而且已经过期一个月了。如果可以的话,把信用卡交给汉森普

确定窗体记录集的记录计数,并仅在记录计数>0时运行for Each循环。我刚刚用一个没有记录的父窗体进行了测试,它对我来说运行良好。我怀疑正在发生干扰上述代码的其他事情。如果没有记录,代码中会运行什么?@Remou:On button click in other form,它使用DoCmd.OpenForm的WhereCondition参数加载此表单。此代码(在模块中)作为来自Form_Load的第一个调用运行。若这个表单有记录,那个么我是金色的,但若它并没有记录,那个么我会得到指示错误&并没有控件显示在细节部分。测试RecordCount=0&跳过调用正在工作。当没有记录时,绑定到父窗体的recordsource的控件(包括具有LinkChild/LinkMaster属性的子窗体)不会加载。@David-W-Fenton就是这样!谢谢我知道有什么,但我记不起来了,我脑子里只剩下设置可见性的问题:(我会推迟接受你的答案,直到我看到HansUp是否输入了一个答案,正如我在评论中所问的那样…,因为@HansUp没有[I don’我还没来得及回答这个问题,我会接受这个答案。如果他愿意,我会把我的答案转给他的。到目前为止我从未见过这个问题。+1来自我。:-)