|
|
1
1
我自己也遇到过这种问题,所以为了子孙后代: 一般来说,建议“不要在这种情况下使用连续的表单/数据表”是最好的建议…可以解决这个问题。 但是,access不允许您更新数据表上单个控件的值。在这种情况下,可以使用临时表,当用作记录源时,临时表可以成为这些控件的值。但是,每次需要更改计算时,您将需要重新填充表,并重新查询控件(重新查询整个表单也应该有效)。此外,如果在控件上启用编辑,则必须在每个控件上编写一些VBA来处理更新事件(更新之前),并运行自己的查询来更新源表,而不仅仅是临时表。也许很烦人,但很有效。 还有另一种可能性,也可能有用,但我自己并没有尝试过这样的事情。组合框的行源可能非常复杂,因此很可能根本不需要用VBA更新组合框。rowsource可以使用语法Me.Form依赖于其他控件(例如另一个组合框)!控件名或窗体!福尔曼!ControlName,它将允许您形成组合键。当然,您也可以使用rowsource从查询中进行选择。更有趣的是,只要窗体是打开的,查询就可以引用窗体上的控件,如果必须这样做,您应该能够安全地使用VBA修改该控件。 在这两者之间,您应该能够强制访问、踢和尖叫,显示任何您希望的数据,甚至在数据表上,并允许用户更改该数据(但仅当您希望更改时),并使用BeforeUpdate事件,将修改后的数据拖回它来自的任何表。 |
|
|
2
0
在需要有条件地更改组合框的情况下,连续表单和数据表不适合编辑。问题是,如果使用OnCurrent事件设置组合框的Rowsource,则该行可以,但随后将隐藏其他行的存储值。 解决方案是在这种情况下,永远不要使用连续的表单/数据表来编辑数据(事实上,我几乎从不使用它们进行编辑)。您可以创建两个子窗体,一个连续/数据表子窗体(用作列表)和一个详细子窗体(显示一条记录)。使列表子窗体不可编辑,使详细信息子窗体可编辑。您可以通过使用detail子窗体控件的link Child/link Master属性来链接它们,并将其设置为list子窗体的主键。 如果你的列表子窗体是我!名单和你的细节是我!表单的PK字段是MyID,则detail子表单的链接属性为:
当您移动到列表表单中的其他记录时,它将自动加载到子表单中。对先前显示的详细信息所做的任何编辑都将在记录离开前保存。 |