Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access:如何根据当前记录通过命令按钮打开表单?_Ms Access - Fatal编程技术网

Ms access MS Access:如何根据当前记录通过命令按钮打开表单?

Ms access MS Access:如何根据当前记录通过命令按钮打开表单?,ms-access,Ms Access,假设我有两个表,tblA和tblB,它们具有1:n的关系,即对于tblA中的给定记录,tblB中可能有许多记录 现在我有了一个表单,frmA,它基于tblA。此表单上有一个命令按钮,用于打开第二个表单,frmB,该表单基于tblB。现在我希望第二个表单frmB只显示tblB中与tblA中的当前记录匹配的记录。 我发现有一种内置方式(我使用Access 2010)可以过滤tblB中的数据。但是由于在frmB中,我需要根据当前记录做更多的工作,这是不够的。 那我该怎么做呢 我想创建一个查询,qryA

假设我有两个表,
tblA
tblB
,它们具有1:n的关系,即对于tblA中的给定记录,tblB中可能有许多记录

现在我有了一个表单,
frmA
,它基于tblA。此表单上有一个命令按钮,用于打开第二个表单,
frmB
,该表单基于
tblB
。现在我希望第二个表单
frmB
只显示
tblB
中与
tblA
中的当前记录匹配的记录。 我发现有一种内置方式(我使用Access 2010)可以过滤
tblB
中的数据。但是由于在frmB中,我需要根据当前记录做更多的工作,这是不够的。 那我该怎么做呢


我想创建一个查询,
qryAB
,它进行内部连接,并有一个参数从
tblA
中选择某个记录。但是,如何将某个内容传递给此查询,以用作“我的命令”按钮的单击宏(或vba)的参数?

您可以使用的Where参数,您可以将OpenArgs添加到OpenForm,并且可以在代码中引用已打开的表单。这完全取决于您下一步要做什么。

您是否考虑过将frmb作为frma的子表单并使用父子关系

我将尝试更详细的描述:表a包含关于业务合作伙伴的数据。表单A显示这些(以及联系人的子表单)。现在,对于表A中的每条记录,我需要一个命令按钮,该按钮打开一个新表单(弹出窗口),其中仅列出表B中与A中的当前记录相对应的条目(协议)。在该表单上,我还需要一个组合框,该组合框基于当前选择,用于在表B中显示的记录中导航(例如,一个包含与业务合作伙伴存在协议的所有年份的组合框)…如果formB总是从formA打开,您可以将组合的行源设置为,例如,
从表中选择,其中AField=Forms!formA!SomeControl
。但是,您可能根本不需要引用表单,毕竟表单现在只显示id与formA匹配的记录,因此您的行源可以引用formB id。最后,您可以生成一个引用作为OpenArg,并通过代码构建组合。作为一般规则,我尽量避免使用不能独立工作的表单,并尝试基于当前表单上可用的信息构建组合。使用OpenForm方法和适当的select语句似乎可以完成这项工作。然后我可以创建组合表格B上的x将基于该表格上的可用信息。我对访问不太熟悉,有时会有点不知所措,不知道哪种方式最有效……感谢您的帮助!我已经考虑过了,但我不认为在我的场景中(请参阅我对Remou答案的评论),这正是我想要的。。