在 Microsoft Access 2013 中的数据表子窗体上单击一行时运行 VB
Posted
技术标签:
【中文标题】在 Microsoft Access 2013 中的数据表子窗体上单击一行时运行 VB【英文标题】:Running VB when a row is clicked on a datasheet subform in Microsoft Access 2013 【发布时间】:2018-06-08 19:51:45 【问题描述】:所以我在 Microsoft Access 2013 中创建了一个基本数据库。我有一个称为 formLanding 的 ParentForm,以及该 ParentForm 中的多个子表单。基本上,我想要发生的是当用户点击其中一个子表单数据表(显示产品和用户等表格)中的一行时,我希望能够显示有关他们点击的任何内容的更多信息。
假设我有名为“产品”、“用户”和“位置”的子表单数据表。如果用户点击产品中的一行,旁边的框/表单将显示产品的所有用户和位置。如果用户点击 Locations 中的一行,同一个框将显示该 Location 中的所有产品。
我想通过 VB 执行此操作的原因是因为我认为它会更容易。我知道怎么写SQL和VB,但是我对Access不是很了解。与其尝试使用它们的界面将这些多个对象链接在一起,我认为使用 VB 会更容易。我还希望能够使用参数按顺序运行多个查询,我还没有弄清楚如何在 Access 中执行此操作。
我该怎么做?当用户单击一行时,如何调用 VB,让我的 VB 查询运行并根据他们单击的内容返回相关信息,然后将该信息发送到另一个对象并让它显示? Access 是为处理此类事情而构建的吗?
谢谢。
编辑:我想补充一点,我想在单击一行时显示的数据详细信息可能包括来自多个表的数据并返回多行。例如,一个产品可能有 5 个用户和 2 个位置。我想在同一表格/报告中显示该信息。
【问题讨论】:
【参考方案1】:您可以通过使用 SubForm 容器中的 Child / Master 属性将子表单链接到父表单来做到这一点。
假设您可以定义父表单中的控件(字段)和子表单中的数据之间的关系,Access 将自动执行此任务。
如果您想链接多个表单,您可能需要使用子表单的 OnCurrent 事件来更改父表单上未绑定的文本框值,以强制其他子表单进行级联更新。
【讨论】:
【参考方案2】:我无法回答您的所有主题,但此字符串通常适用于在选择/编辑某些单元格或行时运行更多代码。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("O2:O2")) Is Nothing Then
Exit Sub
Else
'Do the things
或引用特定工作表和单元格范围
Worksheets("Sheet1").Range("R17:R55")
【讨论】:
这是 Access 而不是 Excel,它们完全不同。以上是关于在 Microsoft Access 2013 中的数据表子窗体上单击一行时运行 VB的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SQL 在 Microsoft Access 2013 中创建查找字段?
Microsoft Access 2013 数据库中的用户管理
使用传递查询中的数据更新 Microsoft Access 2013 表
将 VB.NET 代码从 Visual Studio Express 复制到 Microsoft Access 2013