Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MSAccess:数据表属性(作为子表单)-表单未打开,错误:2489?_Ms Access_Vba - Fatal编程技术网

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

Ms access MSAccess:数据表属性(作为子表单)-表单未打开,错误:2489?,ms-access,vba,Ms Access,Vba,我的主窗体上有一个数据表作为子窗体。当主窗体打开并应用过滤器时,我试图收集有关已过滤数据表的详细信息…然后(最终)逐行(我想是通过.movenext)遍历数据表: 无论如何,这里有一个通过第二个表单(弹出/模式)的OnClick事件进行的快速测试: Access可以在FilterOn=True时看到,但在我尝试移动到第一条记录时,它抱怨表单未打开(错误:2489)。主窗体确实是开放的 我假设我的子表单引用是罪魁祸首,但到目前为止,我的调整没有起作用 有什么可以帮忙的吗?哇,我走错了路。下面的Re

我的主窗体上有一个数据表作为子窗体。当主窗体打开并应用过滤器时,我试图收集有关已过滤数据表的详细信息…然后(最终)逐行(我想是通过.movenext)遍历数据表:

无论如何,这里有一个通过第二个表单(弹出/模式)的OnClick事件进行的快速测试:

Access可以在FilterOn=True时看到,但在我尝试移动到第一条记录时,它抱怨表单未打开(错误:2489)。主窗体确实是开放的

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


有什么可以帮忙的吗?

哇,我走错了路。下面的RecordsetClone方法为我提供了对所有子表单的过滤数据表数据的访问权限(下面的简单示例可以单步遍历所有记录)

我已经在同一个应用程序中做了recordsetclone的事情,只是在一个稍微不同的上下文中。疯了,我太想念它了

不管怎样,我很乐意去


谢谢~

我相信问题在于您对对象名称的引用。i、 您有“Forms!Mainform![Data subform]”,但我认为这是一个在运行时无法解析为对象的文本。另外,由于您的代码位于子表单中,我会使用“DoCmd.GoToRecord acDataForm,Me.,acfirst在MainForm中创建一个公共子表单来完成这项工作,并从弹出表单中调用它!MainForm.PublicSubName[args]将否定主窗体与弹出窗体的相互依赖性-即将来如果更改了主窗体,则不必更改弹出窗体;如果PublicSubName本身调用子窗体中定义为SubFormName.SubFormPublicSubName[args]的公共子窗体,然后将逻辑移动到子窗体本身,在那里可以直接查询其属性,如果需要,可以使用即时窗口找出问题所在。感谢Wayne&John,正如您所注意的,我正要将一个公共Sub放入MainForm,但发现RecordsetClone方法可以满足我的需要。我没想到它会手动执行将筛选后的数据表与之类似。
    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
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