Ms access 如何在Access 2010中编辑基于联接表的子窗体

Ms access 如何在Access 2010中编辑基于联接表的子窗体,ms-access,join,ms-access-2010,Ms Access,Join,Ms Access 2010,我正在设计一个Access 2010 web数据库,并尝试创建一个子表单,它将显示基于联接表的数据。它显示正常,但我无法修改数据。这两个表格被称为联合体和主要调查者。它们之间有多对多的链接,所以我有一个ConsortiumSprincipleJoin表 我有一个“联合体”表单,它显示与特定联合体相关的数据,并且在该表单中有一个子表单,它显示该联合体的主要部分。我成功地完成了所有的PI,但当我尝试在该子窗体中添加principle investigator时,它给了我一个错误:“无法添加记录;表'

我正在设计一个Access 2010 web数据库,并尝试创建一个子表单,它将显示基于联接表的数据。它显示正常,但我无法修改数据。这两个表格被称为联合体和主要调查者。它们之间有多对多的链接,所以我有一个ConsortiumSprincipleJoin表

我有一个“联合体”表单,它显示与特定联合体相关的数据,并且在该表单中有一个子表单,它显示该联合体的主要部分。我成功地完成了所有的PI,但当我尝试在该子窗体中添加principle investigator时,它给了我一个错误:“无法添加记录;表'PrincipleInvestigatorsConsortiums'的联接键不在记录集中。会给什么?我想这是因为我需要同时更新PrincipleInvestigators表和联接表。”。(还有,MS,为什么我不能用标准的关系数据库来代替这个愚蠢的查找字段业务呢?)


Bleh.虽然我做了大量的数据库项目,但查找字段和查询生成器让我感到不舒服。有人知道关于如何设计查询的好教程吗?

对于这种情况,您应该选择一个表作为主窗体,选择一个连接表作为子窗体

例如:

Main Table
Consortiums 

Subform
ConsortiumsPrincipleInvestigators 

Link Child and Master Fields ConsortiumID

ComboBox on subform
Principal investors
Row source: SELECT InvestorID, InvestorDetails FROM PrincipalInvestors
Control Source: InvestorID
Bound Column: 1
Column Count: 2
Column Widths: 0,2
关于不在列表中的一些注意事项

        DoCmd.OpenForm "AddSomething", , , , , acDialog, AddData

        If Forms!AddSomething.Tag <> "" Then
            frm(cbo).Undo
            frm(cbo).Requery
            frm(cbo) = Forms!AddSomething.Tag

            AddCombo = acDataErrAdded
        Else
            AddCombo = acDataErrContinue
        End If

        DoCmd.Close acForm, "AddSomething"
DoCmd.OpenForm“AddSomething”、、acDialog、AddData
如果表单!AddSomething.Tag“”则
frm(cbo).撤消
frm(cbo).再查询
frm(cbo)=表单!AddSomething.Tag
AddCombo=acDataErrAdded
其他的
AddCombo=acDataErrContinue
如果结束
DoCmd.关闭acForm,“添加内容”

在建立两个表之间的关系方面,实际上没有任何变化。使用GUI、SQL DLL命令或现在的关系向导都不会改变任何变化

我的意思是,谁在乎在两个表之间建立关系的过程是什么

我的意思是,在基于客户端的应用程序中,您可以键入以下内容:

ALTER TABLE Cars
   ADD CONSTRAINT MyColorIDRelationship
   FOREIGN KEY (ColorID) REFERENCES Colors (ColorID)
所以,现在你使用一些只需点击几下鼠标的向导,这是一件大事?真的,谁在乎呢!这里没有什么大问题,我们关心的只是你执行一些命令,或者一些向导,或者在这里做些什么,而你在一天结束时,结果是你喜欢的两个表之间的关系

查看我的以下视频,其中我将一些现有的相关数据“连接”到web数据库中。我还分享了如何使用web数据库的“访问关系”窗口打印出相关表:

因此,在一天结束时,不必为不得不使用DDL sql命令、GUI关系窗口或向导的某些细节而纠结。正如上面的视频所示,您所做的一切就是连接一些表并建立一个关系——没有什么比这更让人担心的了

至于如何添加与父记录相关的子记录?在过去的18年中,几乎所有使用Access的鸟类、狗和甲虫都会这样做:

a) 基于一个主父记录表创建一个主窗体。这里不需要构建查询,事实上也不需要构建两个表的联接查询–这从来都不是必需的,也不是必需的。您所做的只是基于一个简单的表构建一个窗体。我们完成了“a”部分

b) 基于一个子表创建表单。这里不需要构建查询,事实上也不需要构建两个表的联接查询——这从来都不是必需的,也不是必需的。您所要做的就是基于一个简单的表构建表单

c) 打开第一个表单(基于父记录表的表单),然后在布局模式下,现在从导航窗格拖放子表单

上面的a、b、c步骤就是我所看到的Access中几乎每个父到子设置是如何完成的,而这个长时间的设置在基于web的应用程序中仍然100%工作

在这两种情况下(网络或非网络),设置保持不变,设置不涉及构建需求,并且设置不需要您进行任何编码

只要子窗体控件中的链接/主控子窗体设置正确,您就可以自由地向子窗体添加子记录,Access将通过在该子窗体中为您设置FK列来为您完成设置和维护关系的其余脏活

因此,在使用Access的18年中,这里的基本设置工作方式没有改变,因此,在这里构建web表单时也不会改变

您不需要基于多个表的查询,事实上,就像过去一样,这两个表单的数据源通常只基于一个表

因此,在大多数情况下,甚至不需要对表单将基于的表使用查询。web表单的这种长期基本方法和设置也没有改变


在您的情况下,我假设主窗体是Consortium。您的子窗体可以是基于PrincipleInvegiators的连续窗体。您不必手动输入PrincipleInvegiaorID,而是使用基于PrincipleInvegiators表的组合框。然而,在所有情况下,我们只是基于单个基构建窗体表。

我不知道你的意思。我目前正在尝试使用子窗体向导,只是从PrincipleInvestigators窗体添加字段。如果我听起来不懂,那是因为我懂!实际上,我创建了一个子窗体,显示了一个联合体上的principle investigators,并允许你添加新的,如果它们已经在数据库中的话.添加新的原则调查员的有效方法是什么?我可以使用什么样的表格?我希望有什么