【问题标题】:Losing ability to change properties when changing SourceObject of subform in Access 2007在 Access 2007 中更改子窗体的 SourceObject 时失去更改属性的能力
【发布时间】:2014-07-25 12:25:54
【问题描述】:

我有一个子表单,它根据用户输入使用Me.SubForm.SourceObject = Query.SomeQuery 更改获取数据的位置。似乎这样做,我失去了设置 BeforeUpdate 属性的能力。

我使用的代码如下:

Forms![PartsDatabase]![RepsSubform].Form![Pack Rank].BeforeUpdate = "=ToTracking()"

我已经确认这在 SubForm.SourceObject 更改之前有效,但之后它会引发以下错误:RTE 2455“您输入的表达式对属性 BeforeUpdate 的引用无效。”

我想知道这是否是一个已知问题,或者我是否只需要修改我的代码来调整。

【问题讨论】:

    标签: vba ms-access ms-access-2007 subform beforeupdate


    【解决方案1】:

    你把事情搞混了。您永远不应该更改源对象,而应该更改记录源。 Form中涉及的代码是Form级别的。如果您希望使用更新前事件,它属于表单而不是记录源。所以你总是去改变 RecordSource。

    你会使用,

    Forms!Parentform!SubForm.Form.RecordSource = "SELECT someFields FROM someTable;"
    

    或者,

    Forms!ParentForm!SubForm.Form.RecordSource = "yourCompiledQueryName"
    

    【讨论】:

    • 使用 Forms![PartsDatabaseX]![RepsSubform].Form.RecordSource = "Query.SubFormFillerQry" 给我 RTE 2455。
    • 您的查询实际上是否命名为 Query.SubFormFilterQuery?什么是错误描述。您拼写/使用了正确的(子)表单名称吗?
    • 啊,我想我必须保留“查询”。在名字的前面。不幸的是,这导致了我以前工作的代码的其他问题 - 当我尝试在子表单上设置属性时,记录源未设置为最初的状态。它们的形式为 `Forms!ParentForm!SubForm!FieldName.Locked = True。
    • 看起来子表单没有改变它的结构来匹配它的查询 rowsource 被改变,所以字段没有改变
    • 您始终可以使用别名。例如,如果这是一个查询 SELECT yummy FROM foodTable;另一个查询是 SELECT disgusting FROM垃圾表;您可以制作一个常见的别名。 SELECT yummy As newColumn FROM foodTable;并从垃圾表中选择令人作呕的新列;然后将表单控件的源基于此 newColumn,因此即使您更改记录源,它们也将能够查找正确的列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2014-01-24
    相关资源
    最近更新 更多