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