所以我对MS Access可能有一个愚蠢的问题。如果我希望创建一个可用于填充关系数据库中多个表的表单,这些其他表是否必须由子表单表示?据我了解,您可以手动更改主窗体的RecordSource以包括罕见的一对一关系,但是这种方法对于一对多或多对多是否可行?关系?
从表面上看,这是不可能的-毕竟,Access将如何知道如何以页面上的一对多关系来排列多个元素?
我90%的答案是“不,除非设计一个代表关系模型的表单,除非它仅包含一对一的关系,否则您必须使用子表单”,但我仍然感到不满意如果我没有仔细检查这一点,因为我基本上没有任何经验就直接进入Access开发,并且我想确保自己没有犯明显的错误。
不,当然您不是需要子表单。您可以自己编写所有代码来管理与加载相关的记录,更新和删除它们,切换记录,过滤等。
只是子表单是一种非常方便的工具,可供您使用。
并且,如果您不得不问这个问题,您可能应该使用子窗体,而不要尝试重新发明轮子。
<<只要在查询中包括子表的FK列和父表的PK列,就可以使用。 因此,我们在关系中具有此设置。 注:非常关闭它是左联接。这允许(并意味着)父记录可以存在,而不是子记录。 现在建立这样的查询: 请注意前几列如何来自主表,后三列如何来自子表。 因此,当您打开查询时,假设没有子记录,那么您会得到以下信息: 请注意子reocrd不存在。如果我在子表列中输入数据或输入数据(例如发票编号),请移至保存位置,然后得到以下信息: 因此,在上述情况下,数据引擎确实知道要设置的FK值,因为您在一条主记录上。当然,您无法在此处执行的操作是添加多个子记录,因为您无法再次选择或重新输入主记录。但是,如果您单独添加(例如以子表单形式)多个子记录,那么您将获得以下信息: 再次,我可以编辑每一行,甚至可以编辑子列。 当然,由于这是左连接,因此每次为每个子记录重复主记录。 并且您可以绑定此查询并将其用于表单。 所以这样的设置用处不大,因为您不能将新的子记录添加到父记录中,但是您可以肯定地以这种方式编辑此类数据。它确实允许您添加“一个”记录或“编辑”一个子记录。因此,如果子记录不存在,则将其添加。如果子记录存在,则可以再次编辑该子记录中的值。但是,使用此用户界面只能添加一个子记录。 因此,虽然可以进行编辑,但它并不是可用的UI太多。