MS Access:数据表属性(作为子表单)- 表单未打开,错误:2489?
Posted
技术标签:
【中文标题】MS Access:数据表属性(作为子表单)- 表单未打开,错误:2489?【英文标题】:MSAccess: Datasheet Properties (as subform) - Form Not Open, Err: 2489? 【发布时间】:2014-10-14 19:06:42 【问题描述】:我的 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
当 FilterOn = True 时,Access 可以看到,但是当我尝试移动到第一条记录时,它抱怨表单未打开 (Err:2489)。 MainForm 确实是 Open。
我假设我的子表单引用是罪魁祸首,但到目前为止我的调整没有奏效。
有什么可以帮忙的吗?
【问题讨论】:
我认为问题在于您对对象名称的引用。即您有“Forms!Mainform![Data subform]”,但这是一个我认为不会在运行时解析为对象的文字。另外,由于您的代码在您的子表单中,因此我将使用“DoCmd.GoToRecord acDataForm, Me.哇,我走错了路。以下 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
我已经在同一个应用程序中做了记录克隆的事情,只是在稍微不同的上下文中。太疯狂了,我太想念它了。
不管怎样,我很高兴。
谢谢~
【讨论】:
以上是关于MS Access:数据表属性(作为子表单)- 表单未打开,错误:2489?的主要内容,如果未能解决你的问题,请参考以下文章