MS Access:数据表属性(作为子表单) - 表单未打开,错误:2489?

时间:2014-10-14 19:06:43

标签: ms-access access-vba

我在MainForm上有一个数据表作为子表单。当MainForm打开,并且应用了过滤器时,我试图收集有关过滤数据表的详细信息...然后(最终)逐行逐步通过数据表(通过.movenext,我推测):

无论如何,这是一个来自第二种形式(弹出/模态)的OnClick事件的快速测试:

    If Forms!Mainform![Data subform].Form.FilterOn = True Then
        msgbox "Filter is ON"
        Forms!Mainform![Data subform].SetFocus
        msgbox Forms!Mainform![Data subform].RecordCount
        DoCmd.GoToRecord acDataForm, "Forms!Mainform![Data subform]", acFirst
        msgbox Forms!Mainform![Data subform].Form.ItemID.value
    Else
        msgbox "Filter is OFF"
    End If

当我尝试移动到第一条记录时,Access可以看到FilterOn = True,但是抱怨表单未打开(错误:2489)。 MainForm真的是开放的。

我假设我的子表单引用是罪魁祸首,但到目前为止,我的调整还没有奏效。

有任何想法可以提供帮助吗?

1 个答案:

答案 0 :(得分:2)

哇,我走错了路。以下RecordsetClone方法为我提供了所有子表格的FILTERED数据表数据所需的访问权限(下面的简单示例只是简单地逐步执行所有记录)。

Public Function mySelect()

    Dim rstData As dao.Recordset
    Set rstData = Forms!Mainform![Data subform].Form.RecordsetClone

    msgbox rstData.RecordCount
    rstData.MoveFirst
    Do Until rstData.EOF
        msgbox rstData.Fields(0)    'Field(0) = ItemID
        rstData.MoveNext
    Loop

End Function

我已经在同一个应用程序中执行recordsetclone操作,只是在略有不同的上下文中。疯了我错过了它。

无论如何,我很高兴。

感谢〜