访问:将组合框绑定到记录集,但不允许在更改/更新时更改记录集

时间:2019-02-22 19:19:02

标签: combobox binding access

我遇到了Access Combobox的问题,这可能是一个糟糕的主意,或者是对该工具的不当使用。

比方说,我有一个表单,其中显示了“报告”的元数据(报告中日常常见的内容,例如报告人,项目,目标到期日,预期总成本等),并带有一个“连续”正在报告的订单项子形式(例如人工成本,材料,间接费用等)

在后端,我有2个表来表示。 “元数据”表和“订单项”表。当尝试捕获要报告的单个项目时,报告者可以自由地按其认为合适的方式命名该项目,但是,在系统中,我们希望将该报告者项目命名映射到我们的内部项目命名中。

为此,我有一些帮助程序表和一个映射表来创建此链接。一个“内部订单项”表,一个“数据类型”表和一个“订单项映射器”表。

结构如下:
-具有ID,名称,Metadata_ID和数据(典型的Excel格式)的“订单项”表
-带有ID的“元数据”表和所有报告共有的元数据
-具有ID和名称的“内部订单项”表
-具有Internal_ID,LineItem_ID和DataType的“订单项映射器”表
-具有ID和名称的“ DataType”表

继续我遇到的困难。

我想在子窗体的每一行中显示一个组合框,并且下拉列表将列出可以选择的内部名称。我以为可以通过使用未绑定的框来做到这一点,但是发现每行将获得同一框的副本(因此可以同时更改所有行的选择)。

然后我尝试使用ControlSource将框绑定到记录集,但是这样做时更改了ID号(显然不行)。

然后我考虑将框绑定到Mapping表本身,但也不知道如何将其与记录集耦合。

我想做的就是将此框绑定到记录集,而不允许它更改“列表项”表中的任何数据,因为此框用于更改映射表。然后,我可以使用OnChange事件使用适当的数据填充或更新映射表。

是否可以创建这样的绑定(控件绑定到记录集,使我可以获取LineItem ID,但无法更改记录集,同时仍允许用户与其交互)?还是有更好的方法来解决此问题?

1 个答案:

答案 0 :(得分:0)

事实证明,我对数据模型所做的愚蠢操作会导致麻烦。

完整答案可在此处找到:https://answers.microsoft.com/en-us/msoffice/forum/msoffice_access-msoffice_custom-mso_2013_release/bind-a-control-without-data-alteration-access-2013/51a98460-6e1a-425d-8f7b-eba5f2825ba9?tm=1552503037022&auth=1&page=2

但是缺点是我不正确地将所有FK放在单个表中,试图形成一种“映射”表形式。从那以后,我已经纠正了结构,并使组合框按预期工作。