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_Combobox_Subform_Datasheet - Fatal编程技术网

Ms access 数据表中的MS Access未绑定组合框?

Ms access 数据表中的MS Access未绑定组合框?,ms-access,combobox,subform,datasheet,Ms Access,Combobox,Subform,Datasheet,在MSAccess2007中,我试图为表格创建一个表单。此表具有来自2个父表的外键。所以我想我会把这些字段做一个查找。但我无法为每个父表创建单个查找,因为它们是复合键 我决定创建一个查询,其中每个父表和子表的每个复合键都有一个额外的字段。这对于使用未绑定组合框的正常表单很好。。。但未绑定的组合框在数据表子窗体中不起作用。当我在子窗体代码中更改组合框时,它们也会应用于同一列中的所有其他组合框 我的问题是: 有没有办法更改单个未绑定组合框的值 除了组合框或数据表子窗体之外,我是否应该使用其他控件

在MSAccess2007中,我试图为表格创建一个表单。此表具有来自2个父表的外键。所以我想我会把这些字段做一个查找。但我无法为每个父表创建单个查找,因为它们是复合键

我决定创建一个查询,其中每个父表和子表的每个复合键都有一个额外的字段。这对于使用未绑定组合框的正常表单很好。。。但未绑定的组合框在数据表子窗体中不起作用。当我在子窗体代码中更改组合框时,它们也会应用于同一列中的所有其他组合框

我的问题是:

  • 有没有办法更改单个未绑定组合框的值

  • 除了组合框或数据表子窗体之外,我是否应该使用其他控件

  • 这种情况下的正常工作环境是什么


我无法绑定组合框,因为查询中的字段是经过计算的/如我所说的表达式。

连续表单和数据表在需要有条件地更改组合框的情况下无法很好地进行编辑。问题是,如果使用OnCurrent事件设置组合框的Rowsource,则该行可以,但随后会隐藏其他行的存储值

解决方案是在这种情况下,永远不要使用连续的表单/数据表来编辑数据(事实上,我很少使用它们进行编辑)。可以创建两个子窗体,一个作为列表的连续/数据表子窗体,以及一个显示一条记录的详细信息子窗体。使列表子窗体不可编辑,使明细子窗体可编辑。您可以使用detail子窗体控件的link Child/link Master属性链接这两个控件,并将其设置为列表子窗体的主键

如果您的列表子窗体是我!名单和你的细节是我!表单,并且PK字段为MyID,则详细信息子表单的链接属性为:

  Master: Me!List.Form!MyID
  Child:  MyID

当您移动到列表表单中的其他记录时,它将自动加载到子表单中。对以前显示的详细信息所做的任何编辑都将在记录离开之前保存。

在需要有条件地更改组合框的情况下,连续表单和数据表不能很好地进行编辑。问题是,如果使用OnCurrent事件设置组合框的Rowsource,则该行可以,但随后会隐藏其他行的存储值

解决方案是在这种情况下,永远不要使用连续的表单/数据表来编辑数据(事实上,我很少使用它们进行编辑)。可以创建两个子窗体,一个作为列表的连续/数据表子窗体,以及一个显示一条记录的详细信息子窗体。使列表子窗体不可编辑,使明细子窗体可编辑。您可以使用detail子窗体控件的link Child/link Master属性链接这两个控件,并将其设置为列表子窗体的主键

如果您的列表子窗体是我!名单和你的细节是我!表单,并且PK字段为MyID,则详细信息子表单的链接属性为:

  Master: Me!List.Form!MyID
  Child:  MyID

当您移动到列表表单中的其他记录时,它将自动加载到子表单中。对以前显示的详细信息所做的任何编辑都将在记录离开之前保存。

我自己也遇到过这种问题,因此为了子孙后代:

一般来说,建议“在这种情况下不要使用连续的表单/数据表”是最好的建议……有可能解决这个问题

但是,access不允许您更新数据表上单个控件的值。在这种情况下可以使用的是临时表,当用作记录源时,它可以成为这些控件的值。但是,每次计算需要更改时,您都需要重新填充表,并重新查询控件(重新查询整个表单也应该可以)。此外,如果启用对控件的编辑,则必须在每个控件上编写一些VBA来处理更新事件(在更新之前),并运行自己的查询来更新源表,而不仅仅是临时表。也许做起来很烦人,但很有效

还有另一种可能,也可能有效,但我自己还没有尝试过这样做。组合框的行源可能非常复杂,因此可能根本不需要使用VBA更新组合框。rowsource可以依赖于使用语法Me.Form的其他控件(例如另一个组合框)!控件名或窗体!FormName!ControlName,它将允许您形成复合键。当然,您也可以使用rowsource从查询中进行选择。更有趣的是,只要表单是打开的,查询可以引用表单上的控件,并且如果必须,您应该能够安全地使用VBA修改这些控件


在这两者之间,您应该能够强制访问、踢和尖叫,以显示您想要的任何数据,甚至在数据表上,并允许用户更改该数据(但只有在您希望的情况下),并使用BeforeUpdate事件,将修改后的数据拖回它来自的任何表。

我自己也遇到过一种形式的问题,因此,为了子孙后代:

一般来说,建议“在这种情况下不要使用连续的表单/数据表”是最好的建议……有可能解决这个问题

但是,access不允许您更新数据表上单个控件的值。在这种情况下可以使用的是临时表,当用作记录源时,它可以成为这些控件的值。但是,每次计算需要更改时,您都需要重新填充表,并重新查询控件(重新查询整个表单也应该可以)。此外,如果启用对控件的编辑,则必须在每个控件上编写一些VBA