访问:您实际上是否需要使用子表单?

所以我对MS access有一个潜在的愚蠢问题。如果我希望创建一个可用于填充关系数据库中多个表的表单,这些其他表是否必须由子表单表示?据我了解,您可以手动更改主窗体的RecordSource以包含罕见的一对一关系,但是这种方法对于一对多或多对多是否可行?关系吗?

从表面上看,这似乎是不可能的-毕竟,access将如何知道如何以页面上的一对多关系排列多个元素?

我90%的答案是“不,除非设计中仅包含一对一的关系,否则在设计代表关系模型的表单时必须使用子表单”,但我仍然会如果我没有仔细检查这一点,那就不做,因为我基本上是在没有任何经验的情况下直接进入access开发的,所以我想确保自己没有犯明显的错误。

shuishuiwoai 回答:访问:您实际上是否需要使用子表单?

不,您当然不需要 子表单。您可以自己编写所有代码来管理与加载相关的记录,更新和删除它们,切换记录,过滤等。

只是子表单是一种非常方便的工具,随时可供您使用。

如果您不得不问这个问题,您可能应该使用子窗体,而不要尝试重新发明轮子。

我实际上已经编写了代码,以一种形式保存大约100条相关记录,而无需使用子表单,同时支持读取和更新,因为它满足了特定的目标,但是我不推荐给任何人 >

,

实际上,您可以编辑由于联接到主表和子表而产生的记录。

要使其正常工作,需要做一些事情。 您必须对子表使用左连接(否则查询将不会返回任何记录。)

只要子表的FK列和父表的PK列都包含在查询中,就可以正常工作。

所以说我们在关系中有这种设置。

enter image description here

请注意,非常关闭其左联接。这允许(并意味着)父记录可以存在,而不是子记录可以存在。

现在建立这样的查询:

enter image description here

请注意前几列是如何从主表中获取的,接下来的三列是如何从子表中获取的。

因此,当您打开查询时,假设没有子记录,那么您将获得以下信息:

enter image description here

请注意,子reocrd不存在。如果我在子表列中输入数据或输入数据(例如发票编号),请移至保存位置,然后得到以下信息:

enter image description here

因此,在上述情况下,数据引擎确实知道要设置的FK值,因为您在一条主记录上。当然,您无法在此处执行的操作是添加多个子记录,因为您无法再次选择或重新输入主记录。但是,如果您单独添加(例如以子表单形式)多个子记录,那么您将得到:

enter image description here

再次,我可以编辑每一行,甚至可以编辑子列。

当然,由于这是左连接,因此每次为每个子记录重复主记录。

您可以绑定此查询并将其用于表单。

因此,这种设置用处不大,因为您不能将新的子记录添加到父记录中,但是您可以肯定地以这种方式编辑此类数据。它确实允许您添加“一个”记录或“编辑”一个子记录。因此,如果子记录不存在,则将其添加。如果子记录存在,则可以再次编辑该子记录中的值。但是,使用此用户界面只能添加一个子记录。

因此,尽管可以进行编辑,但它并不是可用的UI太多。

本文链接:https://www.f2er.com/2870454.html

大家都在问