MS-Access 2007 - 如何在点击事件中以编程方式访问子表单列数据

Posted

技术标签:

【中文标题】MS-Access 2007 - 如何在点击事件中以编程方式访问子表单列数据【英文标题】:MS-Access 2007 - How to programatically access sub form columns data on click event 【发布时间】:2016-07-02 22:49:40 【问题描述】:

我有一个包含子表单的未绑定表单。 当用户单击主窗体上的按钮时,子窗体未绑定并被填充。

我希望能够以语法方式处理子表单上的点击并获取特定列中的数据。我怎样才能做到这一点?如果你明白我的意思,你可以用 VB.NET/C#.NET 做同样的事情。

当我使用子表单的属性选项卡时,我得到了一个表达式生成器。这不会让我进入子/函数/表单或模块 VBA 代码编辑器。

感谢任何帮助。

编辑 - 有用的东西! 感谢我从以下答案中获得的帮助。 在子表单中引用选定行中的列的一种方法是使用以下表达式:

Me!ChildFormName.Form!ColumnNameInSubForm

前:

ME!Sales.Form!SalesmanID

Additional Reference here...

这种方法的一个问题是可用事件 On Enter 和 On Exit 的行为不像“click”事件。需要关注子表单(通过单击另一个控件)才能触发!

【问题讨论】:

【参考方案1】:

再看一遍。属性表有一个选项卡,事件。选择任何事件并从下拉列表中选择“事件过程”​​,然后单击省略号 - 打开代码编辑器。

【讨论】:

感谢您的帮助。是的,有文本[事件过程]。当我在那里键入任何名称并转到代码时,我没有在代码中创建事件处理程序。你建议我怎么做才能获得在代码中创建的事件处理程序? (如 C#/VB)?谢谢。 您没有输入任何文本。单击省略号并在输入时到达事件处理程序。子函数的名称跟在控件的名称后面。 是的,你是对的。我创建了处理程序:) - 如何访问选定的行数据?很抱歉问你这么多问题! 那是Me!SomeControl.Value。但听起来你真的需要查找教程才能获得一些坚实的基础。有很多可供浏览。【参考方案2】:

参考子窗体控件窗体主窗体事件处理程序(VBA Sub):

Me!Subform1.Form!ControlName

Me 是对主窗体的自引用,Subform1 是包含子窗体的控件,Form 是对子窗体的引用,ControlName 是对上字段的引用子窗体。 ! 是一种在表单的 contrls 集合中引用控件的简短方法。 编写上述内容的更长方法是:Me.contrls("Subform1").Form.Contrls("ControlName")

参考一个主窗体控件窗体一个子窗体事件处理程序(VBA Sub):

Me.Parent!ControlName

Me 是对子窗体的自引用,Parent 是对主窗体的引用,ControlName 是对主窗体上的字段的引用。 写上面的更长的方法是:Me.Parent.Contrls("ControlName")

请在this link 中查看有关该主题的更多信息。

【讨论】:

感谢您的帮助。我需要能够从子表单访问选定的行列。当我尝试 ME!SubformName.RecordSource 时,我得到“对象不支持属性”!此外,使用 ME!SubformName.Value 不起作用,因为 Value 不是属性。 试试ME!SubformName.Form.RecordSourceME!SubformName 是主窗体上的控件,ME!SubformName.Form 是对实际子窗体的引用。 太棒了!这不是其他方式,正是这种方式:Me!Subform1.Form!ControlNameSubform1 是你所说的 ChildFormNameControlName 是你所说的 ColumnNameInSubForm ;)

以上是关于MS-Access 2007 - 如何在点击事件中以编程方式访问子表单列数据的主要内容,如果未能解决你的问题,请参考以下文章

ms-access 2007 年报告

如何使用 ms-access-2016 开发应用程序并使其与以前的版本兼容 (2007)

MS-ACCESS-2007 在表格的表格中可视化研究结果

ms-access 2007 运行时和 lockWindowUpdate

经典 ASP 和 ms-access:插入数据的问题

MS-Access 2007:查询与至少有一条记录符合指定条件的个人相关的所有记录